21. april 2003 - 22:24Der er
6 kommentarer og 1 løsning
Problem med lukning af program.
Davs...
Jeg har lavet et delphi program via Windows apien. Jeg har skrevet Winproc som følgende:
function WindowProc(hWnd: hWnd; uMsg, wParam, lParam: Integer): Integer; stdcall; begin
Result := 0;
case uMsg of WM_CLOSE: DestroyWindow(hWnd); WM_SYSCOMMAND: begin if(wParam = SC_CLOSE) then DestroyWindow(hWnd); end; WM_DESTROY: begin PostQuitMessage(0); end; else Result := DefWindowProc(hWnd, uMsg, wParam, lParam); end;
end;
Når jeg så klikker på krydset så skulle programet gerne lukke, men det sker ikke. Det er kun GUI'en der forsvinder. Hvad gør jeg galt.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg *tror* det går galt fordi du selv håndterer WM_SYSCOMMAND/SC_CLOSE og måske derfor aldrig får din WM_DESTROY Message. Prøv at droppe WM_SYSCOMMAND casen
Efter at havde testet lidt fandt jeg ud af at PostQuitMessage(0) blev sendt og så skete der ikke andet. Så kom jeg i tanke at jeg på winproc.org at GetMessage returnere < 0 hvis der opstår fejl. Så jeg ændrede messageloopen til:
while(Ord(GetMessage(Msg, MainWnd, 0, 0)) > 0) do begin TranslateMessage(Msg); DispatchMessage(Msg); end; end;
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.