WinMain函式引數介紹

2021-05-09 06:45:09 字數 1063 閱讀 6844

winmain函式的定義

winmain函式的原型宣告如下:

int winapi winmain( hinstance hinstance,    // 當前視窗例項

hinstance hprevinstance,    // 前乙個視窗例項

lpstr  lpcmdline,    // 命令列引數

int  ncmdshow)    // 視窗顯示狀態

winmain函式接收4個引數,這些引數都是在系統呼叫winmain函式時,傳遞給應用程式的。

第乙個引數hinstance表示該程式當前執行的例項的控制代碼,這是乙個數值。當程式在windows下執行時,它唯一標識執行中的例項(注意,只有執行中的程式例項,才有例項控制代碼)。乙個應用程式可以執行多個例項,每執行乙個例項,系統都會給該例項分配乙個控制代碼值,並通過hinstance引數傳遞給winmain函式。

第二個引數hprevinstance表示當前例項的前乙個例項的控制代碼。通過檢視msdn我們可以知道,在win32環境下,這個引數總是null,即在win32環境下,這個引數不再起作用。

第三個引數lpcmdline是乙個以空終止的字串,指定傳遞給應用程式的命令列引數。例如:在d盤下有乙個sunxin.txt檔案,當我們用滑鼠雙擊這個檔案時將啟動記事本程式(notepad.exe),此時系統會將d:/sunxin.txt作為命令列引數傳遞給記事本程式的winmain函式,記事本程式在得到這個檔案的全路徑名後,就在視窗中顯示該檔案的內容。要在vc++開發環境中向應用程式傳遞引數,可以單擊選單【project】→【settings】,選擇「debug」選項卡,在「program arguments」編輯框中輸入你想傳遞給應用程式的引數。

第四個引數ncmdshow指定程式的視窗應該如何顯示,例如最大化、最小化、隱藏等。這個引數的值由該程式的呼叫者所指定,應用程式通常不需要去理會這個引數的值。

關於winmain函式前的修飾符winapi,請參看下面關於__stdcall的介紹。讀者可以利用goto definition功能檢視winapi的定義,可以看到winapi其實就是__stdcall

——歡迎留下你對這四個引數的見解——

WinMain函式的4個引數

winmain函式的定義 winmain 函式的原型宣告如下 int winapi winmain hinstance hinstance handle to current instance hinstance hprevinstance handle to previous instance l...

WINMAIN函式的引數是怎樣傳遞的

int winapi winmain hinstance hinstance,hinstance hprevinstance,lpstr lpcmdline,int ncmdshow 引數 winmain函式接收4個引數,這些引數都是在系統呼叫winmain函式時,傳遞給應用程式的。hinstanc...

WinMain」 無法過載函式

如果winmain函式寫成以下形式 int winapi winmain hinstance hinstance,hinstance hprevinstance,lpwstr lpcmdline,int nshowcmd 1 d 我的文件 visual studio 2008 projects 1 ...