共用方式為


WinMain 函式 (winbase.h)

圖形化 Windows 應用程式的使用者提供的進入點。

WinMain 是用於應用程式進入點的傳統名稱。 如需詳細資訊,請參閱。

語法

int __clrcall WinMain(
  [in]           HINSTANCE hInstance,
  [in, optional] HINSTANCE hPrevInstance,
  [in]           LPSTR     lpCmdLine,
  [in]           int       nShowCmd
);

參數

[in] hInstance

類型:HINSTANCE

應用程式目前實例的句柄。

[in, optional] hPrevInstance

類型:HINSTANCE

應用程式上一個實例的句柄。 此參數一律 NULL。 如果您需要偵測是否有另一個實例存在,請使用 createMutex 函式 建立唯一命名的 mutex。 即使 mutex 已經存在,CreateMutex 仍會成功,但函式會傳回 ERROR_ALREADY_EXISTS。 這表示應用程式的另一個實例存在,因為它會先建立 mutex。 不過,惡意使用者可以先建立此 Mutex,再執行並防止應用程式啟動。 若要避免這種情況,請建立隨機命名的 mutex 並儲存名稱,以便只能由授權的使用者取得它。 或者,您可以針對此目的使用檔案。 若要將您的應用程式限制為每個使用者一個實例,請在使用者配置檔目錄中建立鎖定的檔案。

[in] lpCmdLine

類型:LPSTR

應用程式的命令行,不包括程序名稱。 若要擷取整個命令行,請使用 GetCommandLine 函式。

[in] nShowCmd

類型:int

控制窗口的顯示方式。 這個參數可以是任何可在 nCmdShow 參數中指定 ShowWindow 函式的值。

傳回值

類型:int

如果函式成功,在收到 WM_QUIT 訊息時終止,它應該傳回該訊息 wParam 參數中包含的結束值。 如果函式在進入訊息迴圈之前終止,它應該會傳回零。

言論

許多程式設計架構會使用 winMain 名稱 。 根據程式設計架構,呼叫 WinMain 函式之前,後面接著該架構特有的其他活動。

您的 WinMain 應該初始化應用程式、顯示其主視窗,然後輸入訊息擷取和分派迴圈,這是應用程式執行其餘部分的最上層控件結構。 當訊息收到 WM_QUIT 訊息時,終止訊息迴圈。 此時,您的 WinMain 應該結束應用程式,並傳回傳入 WM_QUIT 訊息 wParam 參數的值。 如果呼叫 PostQuitMessage而收到 WM_QUIT,則 wParam 的值是 PostQuitMessage 函式 nExitCode 參數的值。 如需詳細資訊,請參閱 建立訊息循環

ANSI 應用程式可以使用 WinMain 函式的 lpCmdLine 參數來存取命令行字串,但不包括程序名稱。 請注意,lpCmdLine 會使用 LPSTR 資料類型,而不是 LPTSTR 數據類型。 這表示 Unicode 程式無法使用 WinMainGetCommandLineW 函式可用來取得命令行做為 Unicode 字串。 某些程式設計架構可能會提供提供 Unicode 命令行的替代進入點。 例如,Microsoft Visual Studio C++編譯程式會針對 Unicode 進入點使用 wWinMain 名稱

下列程式代碼範例示範如何使用 WinMain

#include <windows.h>

int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hInstPrev, PSTR cmdline, int cmdshow)
{
    return MessageBox(NULL, "hello, world", "caption", 0);
}

要求

要求 價值
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 winbase.h (包括 Windows.h)

另請參閱

概念

CreateMutex

DispatchMessage

GetCommandLine

GetMessage

其他資源

PostQuitMessage

參考

TranslateMessage

Windows