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.
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.