| |
|
|
Frank Abbing | Dafür zu sorgen, dass der Inhalt von Dialogfenstern wieder restauriert wird, ist gar nicht so schwer. Hier eine Möglichkeit mit XPIA. Assemblersubclassing hat dabei den Vorteil, nicht auf den Profan-Fastmode angewiesen zu sein. Die eigentliche Fensterrestaurierung passiert mit reinem Profan! KompilierenMarkierenSeparieren {$iq}
Declare x&, y&, text$, dialog&, xpiadll&, adresse&
xpiadll&=UseDll(xpia$)
If 0
ASMINCLUDE
.data
oldproc dd 0
adresse dd 0
.code
; ________________________________________________________________________________________________________________
subclass proc hWnd:DWORD, uMsg:DWORD, wParam:DWORD, lParam:DWORD
invoke CallWindowProc,oldproc,hWnd,uMsg,wParam,lParam
.if uMsg==WM_PAINT
Call adresse
.endif
ret
subclass endp
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ASMEND
EndIf
Hiermit wird das Dialogfester restauriert.
Proc Paint
StartPaint dialog&
DrawText 10,10,Probetext
DrawIcon Profan, 10, 30
EndPaint
EndProc
WindowTitle Hauptfenster
WindowStyle 31
Window 0,0-100,100
UseFont MS Sans Serif,13,0,0,0,0
SetDialogFont 1
dialog& = Create(WINDOW, %hwnd, Dialogfenster, (%maxx-400), (%maxy-330), 400, 300)
adresse&=ProcAddr(Paint, 0)
Subclassing starten
ASMSTART StartSubclassing(dialog&,adresse&)
m2m adresse,para2
invoke SetWindowLong,para1,GWL_WNDPROC,addr subclass
mov oldproc,eax
ASMEND
Paint
While 1
waitInput
Case %key=2:BREAK
EndWhile
DestroyWindow(%hwnd)
FreeDll xpiadll&
End
|
|
|
| |
|
|
|
Jac de Lad | Mit XProfan 11 dürfte das sogar noch viel einfacher sein. |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 27.07.2008 ▲ |
|
|
|
|
Detlef Jagolski | Hallo Jac, war schon mit XProfan 8 kein Problem.
Gruß Detlef |
|
|
| XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 27.07.2008 ▲ |
|
|
|
|
Jac de Lad | Ich meinte, dass es jetzt ohne Assembler geht. Wie hättest du das denn gemacht? |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 27.07.2008 ▲ |
|
|
|