函数 WinMain 作为Windows窗口应用程序的初始化入口点被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参数。如果在进入消息循环前函数结束,应当返回 0 。

注意

WinMain 应当初始化应用程序,显示其主窗口,然后进入一个处于顶级的控制应用程序其余部分执行的“收取-分发”消息循环。当收到 WM_QUIT 消息时,应当终止消息循环,此时,WinMain应当结束应用程序,返回传递给它的WM_QUIT 消息中的 wParam 参数值。如果 WM_QUIT 是作为调用PostQuitMessage的结果收到的,wParam 的值就是PostQuitMessage函数nExitCode 参数的值。查看 Creating a Message Loop 获得更多信息。

ANSI 应用程序可以使用函数 WinMainlpCmdLine 参数得到除程序名的命令行的字符串。WinMain 函数不能返回 Unicode 字符串的原因是 lpCmdLine 使用 LPSTR 的类型,而不是 LPTSTRGetCommandLine函数可以用来获得命令行的 Unicode 字符串,因为其使用 LPTSTR 类型。

系统要求:

  Windows NT/2000/XP: 包含在 Windows NT 3.1 及其之后版本中。
  Windows 95/98/Me: 包含在 Windows 95 及其之后版本中。
  头文件 在 Winbase.h 中定义;使用时,应包含 Windows.h 。

查看其它

Windows Overview, Window Functions, CreateMutex, DispatchMessage, GetCommandLine, GetMessage, PostQuitMessage, TranslateMessage

posted on 2013-05-25 18:39  TomJerryDavi  阅读(140)  评论(0编辑  收藏  举报