Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Elk Windows-programma bevat een invoerpuntfunctie met de naam WinMain of wWinMain. De volgende code toont de handtekening voor wWinMain:
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow);
De vier wWinMain parameters zijn als volgt:
- hInstance- is de verwijzing naar een instantie of een module. Het besturingssysteem gebruikt deze waarde om het uitvoerbare bestand of exe te identificeren wanneer het in het geheugen wordt geladen. Bepaalde Windows-functies hebben de instantiegreep nodig, bijvoorbeeld om pictogrammen of bitmaps te laden.
- hPrevInstance- heeft geen betekenis. Het werd gebruikt in 16-bits Windows, maar is nu altijd nul.
- pCmdLine- bevat de opdrachtregelargumenten als een Unicode-tekenreeks.
- nCmdShow is een vlag die aangeeft of het hoofdvenster van de toepassing is geminimaliseerd, gemaximaliseerd of normaal wordt weergegeven.
De functie retourneert een int waarde. Het besturingssysteem gebruikt de retourwaarde niet, maar u kunt de waarde gebruiken om een statuscode door te geven aan een ander programma.
Een aanroepconventie, zoals WINAPI, definieert hoe een functie parameters van de aanroeper ontvangt. De aanroepende conventie definieert bijvoorbeeld de volgorde waarin parameters op de stack worden weergegeven. Zorg ervoor dat u uw wWinMain--functie declareert, zoals wordt weergegeven in het voorgaande voorbeeld.
De functie WinMain is hetzelfde als wWinMain, behalve de opdrachtregelargumenten worden doorgegeven als een ANSI-tekenreeks. De Unicode-tekenreeks heeft de voorkeur. U kunt de functie ANSI WinMain gebruiken, zelfs als u uw programma compileert als Unicode. Als u een Unicode-kopie van de opdrachtregelargumenten wilt ophalen, roept u de functie GetCommandLine aan. Met deze functie worden alle argumenten in één tekenreeks geretourneerd. Als u de argumenten wilt gebruiken als een argv-style matrix, geeft u deze tekenreeks door aan CommandLineToArgvW.
Hoe weet de compiler wWinMain aan te roepen in plaats van de standaard main functie? Wat er eigenlijk gebeurt, is dat de Microsoft C Runtime Library (CRT) een implementatie biedt van main die WinMain of wWinMainaanroept.
De CRT doet meer werk binnen hoofdgedeelte. Het roept bijvoorbeeld statische initializers aan voordat wWinMain. Hoewel u de linker kunt vertellen een andere invoerpuntfunctie te gebruiken, moet u de standaardwaarde gebruiken als u een koppeling naar de CRT maakt. Anders wordt de CRT-initialisatiecode overgeslagen, met onvoorspelbare resultaten, zoals globale objecten die niet correct worden geïnitialiseerd.
De volgende code toont een lege WinMain--functie:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR lpCmdLine, int nCmdShow)
{
return 0;
}
Nu u het toegangspunt hebt en enkele basisterminologie- en coderingsconventies begrijpt, kunt u uw eerste Windows-programma maken.