Hoi allemaal,
Ik ben bezig met een project waarvoor ik de volgende functie heb gemaakt, die een foutmelding moet weergeven:
In de voorbeelden die ik heb weten te vinden wordt dit op dezelfde manier gedaan, maar toch werkt dit stukje code niet naar behoren. Op mijn Windows XP testcomputer verdwijnt de MessageBox namelijk direct na het openen weer. Ik hoor wel het "ping" geluidje van Windows, maar krijg de MessageBox niet te zien.
Ik ben al uren op zoek naar mogelijke oplossingen, maar eigenlijk zijn alle voorbeelden die ik tegenkom ongeveer hetzelfde als dit. Ik heb wel kleine variaties gezien, zoals het gebruik van de TEXT() macro om "error" heen, maar dit maakt allemaal geen verschil. Ik heb ook nog geprobeerd om als eerste parameter in plaats van NULL de handler van het hoofdwindow mee te geven, maakt ook niets uit.
Voor zover ik uit de debugger kan opmaken geeft MessageBox 0 terug, en geeft GetLastError de code 128. Dat schijnt te staan voor "ERROR_WAIT_NO_CHILDREN". Het lijkt mij dat de MessageBox crasht, en de error volgt omdat er geen MessageBox meer is om op te wachten, maar ik kom er niet achter waarom de MessageBox dan crasht. Ik denk dat Windows mogelijk iets anders wil dan mijn char*, maar ik kom er niet achter wat ik dan wel moet gebruiken. Als de char* inderdaad het probleem is, dan zou ik het liefst een conversie uitvoeren binnen throw_error(), zodat ik daarbuiten een char* kan blijven gebruiken. Deze code moet namelijk later nog worden geport, en dan wil ik liever niet overal Windows types hebben rondslingeren.
Overigens: op een andere Windows computer (Windows 7) lijkt de MessageBox wel te werken.
Ik heb veel ervaring met C in Linux, maar programmeer eigenlijk heel weinig in Windows. Misschien maak ik dus een enorme beginnersfout. Ik hoop dat een van de meer ervaren Windows-programmeurs hier me verder kan helpen.
Ik schrijf dit programma met Dev-C++ onder Windows XP SP3.
Alvast bedankt!
Ik ben bezig met een project waarvoor ik de volgende functie heb gemaakt, die een foutmelding moet weergeven:
code:
1
2
3
4
5
6
7
8
9
| #include <windows.h> void throw_error(const char* error) { int result; result = MessageBox(NULL, error, NULL, MB_OK | MB_ICONEXCLAMATION | MB_SETFOREGROUND); } |
In de voorbeelden die ik heb weten te vinden wordt dit op dezelfde manier gedaan, maar toch werkt dit stukje code niet naar behoren. Op mijn Windows XP testcomputer verdwijnt de MessageBox namelijk direct na het openen weer. Ik hoor wel het "ping" geluidje van Windows, maar krijg de MessageBox niet te zien.
Ik ben al uren op zoek naar mogelijke oplossingen, maar eigenlijk zijn alle voorbeelden die ik tegenkom ongeveer hetzelfde als dit. Ik heb wel kleine variaties gezien, zoals het gebruik van de TEXT() macro om "error" heen, maar dit maakt allemaal geen verschil. Ik heb ook nog geprobeerd om als eerste parameter in plaats van NULL de handler van het hoofdwindow mee te geven, maakt ook niets uit.
Voor zover ik uit de debugger kan opmaken geeft MessageBox 0 terug, en geeft GetLastError de code 128. Dat schijnt te staan voor "ERROR_WAIT_NO_CHILDREN". Het lijkt mij dat de MessageBox crasht, en de error volgt omdat er geen MessageBox meer is om op te wachten, maar ik kom er niet achter waarom de MessageBox dan crasht. Ik denk dat Windows mogelijk iets anders wil dan mijn char*, maar ik kom er niet achter wat ik dan wel moet gebruiken. Als de char* inderdaad het probleem is, dan zou ik het liefst een conversie uitvoeren binnen throw_error(), zodat ik daarbuiten een char* kan blijven gebruiken. Deze code moet namelijk later nog worden geport, en dan wil ik liever niet overal Windows types hebben rondslingeren.
Overigens: op een andere Windows computer (Windows 7) lijkt de MessageBox wel te werken.
Ik heb veel ervaring met C in Linux, maar programmeer eigenlijk heel weinig in Windows. Misschien maak ik dus een enorme beginnersfout. Ik hoop dat een van de meer ervaren Windows-programmeurs hier me verder kan helpen.
Ik schrijf dit programma met Dev-C++ onder Windows XP SP3.
Alvast bedankt!