10. september 2002 - 21:07Der er
10 kommentarer og 1 løsning
GUI via api..
Jeg har oprettet et vindue via api-metoden og kaldt det MainWnd, oven på vindue har jeg brugt et static felt som ramme. Oven på denne ramme har jeg oprettet en knap. Mit spørgsmål er så: Hvordan får jeg lavet besked proceduren så der sker noget når man trykker på knappen.
Knappen bliver oprettet med: rdbAgree := CreateWindow('button', RDB_ACCEPT_CAP, WS_CHILD or BS_AUTORADIOBUTTON or WS_VISIBLE, 16, 230, 337, 20, grpTerms, 0, Inst, nil);
Din buttons parent window (grpTerms) modtager en WM_COMMAND message, hvor High word af WParam indeholde BN_CLICK og low word af WParam din buttons Id - hvilket i dit tilfælde er 0. LParam indeholder din buttons handle (rdbAgree).
Den parameter du bruger grpTerms til, skal være en handle til parent Window.
Ps : dette er skrevet ud fra min rustne hukommelse, men det er vist ok
I din WinProc har du som regel en stor case, der håndtere alle messages.
case uMsg of .. WM_COMMAND: begin if hiword(wParam) = BN_CLICKED then case loword(wParam) of 0: MessageBox(0,'Tryk på din knap','davs',MB_OK); 1: // en anden knap... end; end; .... end;
Ok. Grunden til at jeg erklærede den inden i rammen var at den så blev skjult når hele rammen blev skjult. Er det overhovedet ikke muligt at få det til at virke på "min" måde???
Tja, pga af størrelsen af filen, hvis jeg bruger VCL fylder den omkring 350 kb mens den anden metode kun bruger ca. 50 kb. Programmet er en skabelon til en installer, hvilket efter min mening skal fylde så lidt som muligt...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.