平台 SDK: Windows 用户接口

WinMain

WinMain函数被系统调用为基于Windows的应用程序的初始入口点。

int WINAPI WinMain(
  HINSTANCE hInstance,      // 当前实例句柄 
  HINSTANCE hPrevInstance,  // 先前的实例句柄
  LPSTR lpCmdLine,          // 命令行
  int nCmdShow              // 显示状态
);

参数

  • hInstance

  • [in] 当前的应用程序实例句柄。

  • hPrevInstance

  • [in] 前一个应用程序实例句柄。 该参数始终为NULL。

    如果您需要检测另一个实例是否已经存在,请使用CreateMutex函数创建一个唯一命名的互斥锁。 即使互斥量已经存在,CreateMutex也会成功,但GetLastError函数将返回ERROR_ALREADY_EXISTS。 这表明应用程序的另一个实例存在,因为它首先创建了互斥锁。

  • lpCmdLine

  • [in] 指向应用程序命令行的空终止字符串的指针,不包括程序名称。 要检索整个命令行,请使用GetCommandLine函数。

  • nCmdShow

  • [in] 指定如何显示窗口。 该参数可以是以下值之一。

    含义
    SW_HIDE隐藏窗口并激活另一个窗口。
    SW_MAXIMIZE最大化指定的窗口。
    SW_MINIMIZE最小化指定的窗口并按Z顺序激活下一个顶层窗口。
    SW_RESTORE激活并显示窗口。 如果窗口被最小化或最大化,则系统将其恢复到其原始大小和位置。 应用程序应该在恢复最小化窗口时指定此标志。
    SW_SHOW激活窗口并以当前的大小和位置显示它。
    SW_SHOWMAXIMIZED激活窗口并将其显示为最大化窗口。
    SW_SHOWMINIMIZED激活窗口并将其显示为最小化窗口。
    SW_SHOWMINNOACTIVE将窗口显示为最小化窗口。

    该值与SW_SHOWMINIMIZED类似,但窗口未激活。

    SW_SHOWNA以当前大小和位置显示窗口。

    该值与SW_SHOW类似,只是窗口未激活。

    SW_SHOWNOACTIVATE以最近的大小和位置显示一个窗口。

    该值与SW_SHOWNORMAL类似,但窗口未激活。

    SW_SHOWNORMAL激活并显示一个窗口。 如果窗口被最小化或最大化,则系统将其恢复到其原始大小和位置。 应用程序应该在第一次显示窗口时指定此标志。


返回值

如果函数成功,当它收到WM_QUIT消息时终止,它应该返回包含在该消息的wParam参数中的退出值。 如果函数在进入消息循环之前终止,它应该返回零。

备注

您的WinMain应该初始化应用程序,显示其主窗口,并输入消息检索和分发循环,这是应用程序执行的其余部分的顶级控制结构。 收到WM_QUIT消息时终止消息循环。 此时,WinMain应退出应用程序,并返回WM_QUIT消息的wParam参数中传递的值。 如果由于调用PostQuitMessage而收到WM_QUIT,则wParam的值是PostQuitMessage函数的nExitCode参数的值。 有关更多信息,请参阅创建消息循环。

ANSI应用程序可以使用WinMain函数的lpCmdLine参数来访问命令行字符串,不包括程序名称。 WinMain无法返回Unicode字符串的原因是lpCmdLine使用LPSTR数据类型,而不是LPTSTR数据类型。 GetCommandLine函数可用于访问命令行中的Unicode字符串,因为它使用LPTSTR数据类型。

要求

  Windows NT/2000/XP: 包含在Windows NT 3.1和更高版本中。

  Windows 95/98/Me: 包含在Windows 95和更高版本中。

  头文件: 声明于 Winuser.h; 包含于 Windows.h.