| |
|
|
| Windows Ende / Herunterfahren / Abmelden abfangen von Andreas Miethe: KompilierenMarkierenSeparieren#############################
Test-Programm für :
XProfan
#############################
Author : Andreas Miethe
August 2003
#############################
Thema : Windows-Ende abfangen
#############################
$H windows.ph
$H messages.ph
DEF HiWord(1) And(&(1)>>16,$FFFF)
DEF LoWord(1) And(&(1),$FFFF)
Declare Ende&,Button&,OldWindowProc&
Proc Speicher_Routine
Declare X&
Statt einer Speicher-Routine läuft hier nur ein Zähler durch
~TextOut(%hDC,0,0,Speicher-Dummy :,16)
Whilenot X& > 20000
Locate 2,0
Print X&
Inc X&
EndWhile
~TextOut(%hDC,0,100,fertig mit Speichern :,22)
~TextOut(%hDC,0,150,Taste.... :,11)
Waitinput
EndProc
Proc Frage_Speichern
If Messagebox(Erstmal alle Daten speichern ?,Windows_Ende?,36) = 7
return 1 Windows wird sofort beendet
Else
bevor 1 zurückgegeben wird kann hier eine Speicher-Routine
eingebaut werden. Windows wird erst beendet wenn alles erledigt ist.
Speicher_Routine
return 1 Windows wird nach dem Speichern beendet
return 0 Windows nicht beendet
Endif
EndProc
Proc WindowProc
Parameters Wnd&, Msg&, wParam&, lParam&
If Msg& = ~WM_COMMAND
If lParam& = Button& Control abfragen
If HiWord(wParam&) = ~BN_CLICKEDKlick auf Button
SendMessage(Wnd&,~WM_CLOSE,0,0)
Endif
Endif
Endif
If Msg& = ~WM_CLOSE
Speicher_Routine
~PostQuitMessage(0)Programm-Ende
Endif
If Msg& = ~WM_QUERYENDSESSION
Return Frage_Speichern()
Endif
alle Messages die nicht behandelt wurden an die Original-Prozedur weiterleiten
return ~CallWindowProc(OldWindowProc&,Wnd&, Msg&, WParam&, LParam&)
EndProc
set(FastMode,1)
SetTrueColor 1
WindowStyle 31
Window 0,0-640,480
CLS ~GetSysColor(~COLOR_BTNFACE)
Button& = CreateButton(%hwnd,Ende,10,50,80,24)
Sendmessage(Button&,~WM_SETFONT,~GetStockObject(~DEFAULT_GUI_FONT),1)
Window-Prozedur austauschen und die Original-Prozedur in
OldWindowproc sichern
OldWindowProc& = ~SetWindowLong(%hwnd,~GWL_WNDPROC, ProcAddr(windowProc,4))
WhileNot Ende&
WaitInput
EndWhile
Salve, iF. |
|
|
| |
|
|