| |
|
|
| Mauscursor Änderung je nach Control, mit diesem Code kann jedem Control ein eigener Cursor zugeordnet werden.
KompilierenMarkierenSeparierenDEF ASetClassLong(3) ! User32,SetClassLongA
Def ALoadCursor(2) !USER32,LoadCursorA
proc oid_cur2hdl
parameters hdl&,cur&
add cur&,32648
ASetClassLong(hdl&,-12,ALoadCursor(0,cur&))
endproc
oid_cur2hdl %hwnd,1
oid_cur2hdl toolbar&,1
oid_cur2hdl button&,2
oid_cur2hdl input&,4 ..5...6...7...... usw.
|
|
|
| |
|
|
|
Manfred Barei | Hallo if,
wie muß ich vorgehen wenn ich verschiedene Cursor aus der Prfrun32 laden und den Controls zuweisen möchte.
Grus Manfred |
|
|
| Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 | | 13.07.2004 ▲ |
|
|
|
|
| |
|
| |
|
|
|
Manfred Barei | Hallo if,
ja das ist mir klar, so mach ich es ja im moment. Jetzt möchte ich aber jedem Control einen eigenen Cursor zu weisen. sprich dem %HWnd Cursor 1, den Buttons Cursor 2 und so weiter. In deinem ersten besispiel war es ja woll auch so wen ich es richtig verstanden habe, da wurden aber die Cursor aus einer externen DLL geladen. Diese möchte ich aber nicht, ich möchte keine seperate dll mit liefern, sonder die Cuirsor aus der Prfrun32 laden und den einzelnen Controlls zuzweisen (wenn dieses möglich ist?).
Ich hofe Du kannst helfen.
grus manfred |
|
|
| Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 | | 16.07.2004 ▲ |
|
|
|
|
| |
|
| |
|
|
|
Manfred Barei | Hallo if,
ja so meinte ich es, jetzt klappt es.
Jedoch habe ich noch eine Frage dazu :?: , wie belege ich die Menüleiste mit einem eigenen Cursor?
Das Hauptwindow und die Buttons ist klar aber die Menüleiste?
Für deine nochmalige hilfe jetzt schon ein Danke!
Grus Manfred |
|
|
| Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 | | 18.07.2004 ▲ |
|
|
|
|
| Nun, das ist nicht all-zu einfach, mit Subclassing oder einem Nebenthread ginge es jedoch schon. Hast Du wirklich noch Interesse? Dann würde ich mich da mal ransetzen. Braucht XProfan.
Bis denne, iF |
|
|
| |
|
|
|
Manfred Barei | Hallo if,
ja , währe sehr interesant. XProfan ist im einsatz.
grus manfred |
|
|
| Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 | | 18.07.2004 ▲ |
|
|
|
|
| Ok, ich schau ob ich morgen dazu komm. Bis denne. |
|
|
| |
|
|
|
| Nagut, du hast es ja so gewollt. KompilierenMarkierenSeparieren {$crq}
DECLARE A%,B%,C%,A$,B$,C$,A&,B&,C&,A!,B!,C!,A#,B#,C#,FUNCT1&,FUNCT2&,FUNCT3&,MINID%,MAXID%,ASM&,DUMMY&,INFO%
Declare mxi#,threadstack%
threadstack%=0
WINDOWTITLE ""
WINDOWSTYLE 16+8+2
WINDOW 50,50-500,150
USERMESSAGES 16
SETACTIVEWINDOW(%HWND)
INFO%=CREATE("text",%HWND,"",200,50,200,20)
DEF GETMODULEHANDLE(1) !"KERNEL32","GetModuleHandleA"
DEF GETPROCADDRESS(2) !"KERNEL32","GetProcAddress"
DEF CREATETHREAD(6) !"KERNEL32","CreateThread"
DEF TERMINATETHREAD(2) !"KERNEL32","TerminateThread"
A$="Kernel32"
A&=GETMODULEHANDLE(ADDR(A$))
A$="Sleep"
FUNCT1&=GETPROCADDRESS(A&,ADDR(A$))
A$="User32"
A&=GETMODULEHANDLE(ADDR(A$))
A$="GetMenuState"
FUNCT2&=GETPROCADDRESS(A&,ADDR(A$))
A$="SendMessageA"
FUNCT3&=GETPROCADDRESS(A&,ADDR(A$))
POPUP "Datei"
APPENDMENU 2001,"Neu"
APPENDMENU 2002,"Öffnen"
APPENDMENU 2003,"Speichern"
MINID%=2001
MAXID%=2003
DiM B#,200
CLEAR B#
LONG B#,0 =FUNCT1&
LONG B#,4 =FUNCT2&
LONG B#,8 =FUNCT3&
LONG B#,12 =&HMENU
LONG B#,16 =MINID%
LONG B#,20 =MAXID%
LONG B#,24 =INFO%
LONG B#,28 =20
LONG B#,32 =0
LONG B#,36 =0
STRING B#,40="Neue Datei anlegen"
STRING B#,60="Datei öffnen"
STRING B#,80="Datei speichern"
STRING B#,100="Kein Menü"
DiM A#,100
LONG A#,0=-1947432107
LONG A#,4=1200294013
LONG A#,8=1200177172
LONG A#,12=276269856
LONG A#,16=174727403
LONG A#,20=-788592757
LONG A#,24=-11141014
LONG A#,28=1200295031
LONG A#,32=1037106948
LONG A#,36=128
LONG A#,40=2005468021
LONG A#,44=1200309792
LONG A#,48=-264552428
LONG A#,52=1603001461
LONG A#,56=608668448
LONG A#,60=527745851
LONG A#,64=723804041
LONG A#,68=-1014296481
LONG A#,72=-149135477
LONG A#,76=-2084109341
LONG A#,80=1783638208
LONG A#,84=-15963648
LONG A#,88=1200298103
LONG A#,92=-2083455224
LONG A#,96=-1569521153
ASM&=CREATETHREAD(0,0,A#,B#,0,ADDR(DUMMY&))
Class mxiiNt = #iNtTime&,#iNtPrc&,#iNtID&,OniNt@,iNtOn@,iNtOff@
Dim mxi#,mxiiNt
mxi#.OniNt(100,ProcAddr("Thread",0))
mxi#.iNtOn()
WHILEnot equ(%key,2)
WAITINPUT
IF %UMESSAGE=16
BREAK
ENDIF
ENDWHILE
mxi#.iNtOff()
TERMINATETHREAD(ASM&,259)
DISPOSE A#
DISPOSE B#
end
proc thread
case threadstack%:return
add threadstack%,1
if "Kein Menü"=gettext$(info%)
usecursor 0
else
usecursor 4
endif
add threadstack%,-1
endproc
Proc mxiiNt.OniNt
Parameters time&, proc&
.iNtTime& = time&
.iNtPrc& = proc&
Endproc
Proc mxiiNt.iNtOn
.iNtID& = External("user32.dll","SetTimer",0,0,.iNtTime&,.iNtPrc&)
Endproc
Proc mxiiNt.iNtOff
If .iNtID& <> 0
External("user32.dll","KillTimer",0,.iNtID&)
EndIf
Endproc
Bis denne, iF |
|
|
| |
|
|
|
| |
|
| |
|
|