Declare Edit1&,Edit2&,Edit3&,Button1&,Button2&,Brush&
Declare Ende&,OldWindowProc&
$H windows.ph
$H messages.ph
set("FastMode",1)
PROC SetColor
Behandlungroutine für
WM_CTLCOLORSTATIC,WM_CTLCOLOREDIT und WM_CTLCOLORLISTBOX
es wird ein farbiger Brush angelegt und die Textfarbe bestimmt
Parameters col&,bk&,wParam&
IF Brush&
~DeleteObject(Brush&)
Endif
Brush& = ~CreateSolidBrush(bk&)
~SetBkMode(wParam&, ~TRANSPARENT)
~SetTextColor(wParam&,col&)
Return Brush&
Endproc
Proc Windowproc
parameters Wnd&, Msg&, wParam&, lParam&
If Msg& = ~WM_CLOSE
Aufräumen
IF Brush&
~DeleteObject(Brush&)
Endif
~PostQuitMessage(Wnd&,0,0)
Endif
If Msg& = ~WM_CTLCOLOREDIT
If lParam& = Edit1&
Return SetColor(rgb(255,0,0),rgb(255,255,0),wParam&)
Elseif lParam& = Edit2&
Return SetColor(rgb(0,0,128),rgb(255,0,255),wParam&)
Elseif lParam& = Edit3&
Return SetColor(rgb(255,255,255),rgb(0,0,128),wParam&)
Endif
Endif
If Msg& = ~WM_COMMAND
IF lParam& = Button1& Button1 abfragen
IF (wParam& >> 16) = ~BN_CLICKED HiWord
~Messagebox(0,"Button1 Klick","Meldung",0)
Endif
Endif
IF lParam& = Button2& Button2 abfragen
IF (wParam& >> 16) = ~BN_CLICKED HiWord
~Messagebox(0,"Button2 Klick","Meldung",0)
Endif
Endif
Endif
alle nicht behandelten Meldungen an die Originalprozedur weiterleiten
Return ~CallWindowProc(OldWindowproc&,Wnd&, Msg&, WParam&, LParam&)
Endproc
WindowStyle 543
cls ~GetSysColor(~COLOR_BTNFACE)
ein paar Controls anlegen
Edit1& = Create("Edit",%Hwnd,"Edit1",10,10,80,20)
Sendmessage(Edit1&,~WM_SETFONT,~GetStockObject(~DEFAULT_GUI_FONT),1)
Edit2& = Create("Edit",%Hwnd,"Edit2",10,40,80,20)
Sendmessage(Edit2&,~WM_SETFONT,~GetStockObject(~DEFAULT_GUI_FONT),1)
Edit3& = Create("Edit",%Hwnd,"Edit3",10,70,80,20)
Sendmessage(Edit3&,~WM_SETFONT,~GetStockObject(~DEFAULT_GUI_FONT),1)
Button1& = Create("Button",%Hwnd,"Button1",10,110,80,20)
Sendmessage(Button1&,~WM_SETFONT,~GetStockObject(~DEFAULT_GUI_FONT),1)
Button2& = Create("Button",%Hwnd,"Button2",10,150,80,20)
Sendmessage(Button2&,~WM_SETFONT,~GetStockObject(~DEFAULT_GUI_FONT),1)
Window-Prozedur austauschen
OldWindowproc& = ~SetWindowLong(%hwnd,~GWL_WNDPROC, ProcAddr(WindowProc,4))
Whilenot Ende&
waitinput
EndWhile
end
Salve, iF.