Ik wil graag met Win32 API functies (Delphi6) een "ShowModal" AboutBox op het scherm krijgen.
Ik heb in de Win32 API help gevonden dat dat kan met de functie "CreateDialogIndirect(DlgTemplate:TDlgTemplate)".
Als ik deze functie gebruik (zie de code onderaan deze post) dan werkt 't alleen als ik de variabele "DlgTemplate" globaal maak (dat is in de "var" list van een unit) en als de variabele "DlgTemplate" ook nog eens aan het einde van de globale variabelen lijst staat, d.w.z.
en niet...
Om de DialogBox "ShowModal" weer te geven, disable ik het parent window met de functie "EnabledWindow".
Nu wil ik eigenlijk graag de code in één procedure kunnen zetten... (met bijv. DlgTemplate als lokale variabele)
Kan me misschien iemand zeggen wat ik fout doe (en wat ik dus eventueel anders moet doen...)???????????????????
In de Win32 API help staat iets van "variabele arrays" toevoegen, maar ik weet niet of dat nodig is (en indien wel nodig, ook niet hoe ik dat zou moeten doen...)
Nu heb ik de volgende code gebruikt:
Thanx
Ik heb in de Win32 API help gevonden dat dat kan met de functie "CreateDialogIndirect(DlgTemplate:TDlgTemplate)".
Als ik deze functie gebruik (zie de code onderaan deze post) dan werkt 't alleen als ik de variabele "DlgTemplate" globaal maak (dat is in de "var" list van een unit) en als de variabele "DlgTemplate" ook nog eens aan het einde van de globale variabelen lijst staat, d.w.z.
code:
1
2
3
| var B:Byte;
I:integer;
DlgTemplate:TDlgtemplate; |
en niet...
code:
1
2
3
| var B:Byte;
DlgTemplate:TDlgtemplate;
I:integer; |
Om de DialogBox "ShowModal" weer te geven, disable ik het parent window met de functie "EnabledWindow".
Nu wil ik eigenlijk graag de code in één procedure kunnen zetten... (met bijv. DlgTemplate als lokale variabele)
Kan me misschien iemand zeggen wat ik fout doe (en wat ik dus eventueel anders moet doen...)???????????????????
In de Win32 API help staat iets van "variabele arrays" toevoegen, maar ik weet niet of dat nodig is (en indien wel nodig, ook niet hoe ik dat zou moeten doen...)
Nu heb ik de volgende code gebruikt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| var hWnd:THandle;
DlgTemplate:TDlgTemplate;
Function DialogProcedure(hWnd:THandle;Message:Integer;wParam:WPARAM;lParam:LPARAM):Boolean;Stdcall;
Begin
//Afhandeling van de Dialog messages.
End;
Procedure DialogMaker;
Begin
DlgTemplate.style:=WS_SYSMENU or WS_VISIBLE;
DlgTemplate.dwExtendedStyle:=WS_EX_TOOLWINDOW;
DlgTemplate.cdit:=0;
DlgTemplate.x:=0;
DlgTemplate.y:=0;
DlgTemplate.cx:=150;
DlgTemplate.cy:=110;
CreateDialogIndirect(hInstance,DlgTemplate,hWnd,@DialogProcedure);
End; |
Thanx