Min bil är blå. Varför startar den inte?
...
Du skulle inte kunna ge oss lite mer info om vad programmet gör och hur det är utformat?
9 svar · 289 visningar · startad av trasher
Mitt program gör så att windows inte stängs av ifall man försöker utan att först stänga applikationen.
Problemet återfinns både med Windows 2000 och Windows XP. Tidigare versioner har jag ej testat med.
Programmet är byggt i Borland C++Builder 6.0 om det spelar någon roll...
Min bil är blå. Varför startar den inte?
...
Du skulle inte kunna ge oss lite mer info om vad programmet gör och hur det är utformat?
Programmet ligger i systray och övervakar en server.
Om jag inte är helt ute och cyklar så verkar det som om att programmet
inte hanterar WM_CLOSE meddelandet som Windows skickar...
Då får du väl hantera WM_CLOSE då... Bara att anropa PostQuitMessage.
Jo jag försökte göra detta men lyckades inte...
Du kanske kan ge mig ett litet exempel på hur det ska gå till?
Du har alltså aldrig gjort ett windowsprogram förut? Tja, då blir det ju lite värre... I allmänhet har man en switch-sats i WindowProcedure-funktion. Om du hittar den så är det bara att lägga till WM_CLOSE. Det ser ut ungefär så här:
switch (msg)
{
case WM_CREATE:
// kod här:
}
Där lägger du till en case WM_CLOSE: och sedan PostQuitMessage(0); på raden under följt av break;
Fast det kanske inte är säkert att det ser ut, för Borland C++ Builder är väl till för att man ska slippa skriva koden själv? Jag har aldrig använt Borland, så jag vet inte. Men det låter konstigt att WM_CLOSE inte skulle vara med om Borland skriver koden själv.
Som jag förstår det så hanterar c++builder det själv och man får alldrig
se WindowProc funktionen. Testade att lägga till en ApplicationEvent komponent
och vid OnMessage göra precis som du skrev men det ger inget resultat...
Aha, då förstår jag. Ditt problem är alltså Borland-specifikt. Då kan jag tyvärr inte hjälpa dig, för jag kan bara programmera på vanligt vis.
Ok, men tack ändå...
Du har ett huvudfönster. Har du kollat vad som händer i OnClose-händelsen? Körs den? I så fall kan du prova att sätta Action = caFree. Om inte det funkar har du ju alltid Application->Terminate();.