gpt4 book ai didi

c++ - 没有 WinMain 的 winapi 入口点

转载 作者:太空宇宙 更新时间:2023-11-04 15:34:20 25 4
gpt4 key购买 nike

所以通过我在网上找到的一个 winapi 程序的源代码,我注意到任何地方都没有 WinMain,我想知道是否有可能让 winapi 程序像这样工作,你为什么认为原来的程序员做了类似的事情这,我们有这样的对话过程:

 static INT_PTR CALLBACK mainDialogProc(HWND hwnd, UINT msg, WPARAM wParam,
LPARAM lParam)
{
switch(msg)
{
case WM_INITDIALOG:
{
//..............
}
}
}

并且主入口点是这样的,而不是 void WINAPI WinMain (void);

void WINAPI entryPoint(void)
{
//........
}

这真的可能吗?这违背了我迄今为止所学的一切......我真的确定我错过了什么......

最佳答案

可执行镜像的入口点是通过链接器设置指定的 /ENTRY .如果未明确设置,则默认为 mainCRTStartup(或 wmainCRTStartup)用于控制台应用程序,WinMainCRTStartup(或 wWinMainCRTStartup ) 用于 GUI 应用程序,_DllMainCRTStartup 用于 DLL。当使用作为 Visual Studio 的一部分提供的 CRT 时,所有上述原始入口点都会调用用户提供的入口点 main(或 wmain),分别是 WinMain(或 wWinMain)和 DllMain。这是在 crt0.c 中实现的,它作为 Visual Studio 的 CRT 源代码的一部分提供。

如果您提供自己的入口点(通过指定 /ENTRY 链接器选项),它必须具有以下签名(对于 32 位应用程序):

DWORD CALLBACK RawEntryPoint(void);

额外阅读:WinMain is just the conventional name for the Win32 process entry point

关于c++ - 没有 WinMain 的 winapi 入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38832333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com