第乙個windows視窗程式

2022-10-11 00:48:09 字數 1735 閱讀 6558

#includeint winapi winmain(hinstance hinstance,hinstance hprevinstance,pstr szcmdline,int icmdshow)

類似命令列的#include,不過更像c++的#include,包含了其他許多的標頭檔案。視窗版也包含了乙個標頭檔案,它包含了其他windows表頭檔案

其中:正如在c程式中的進入點是函式main一樣,windows程式的進入點是winmain,總是像這樣出現:

int winapi winmain(hinstance hinstance,hinstance hprevinstance,pstr szcmdline,int icmdshow)
由作業系統為winmain傳入引數

在winbase.h中winmain的宣告如下:

winmain (

_in_ hinstance hinstance,

_in_opt_ hinstance hprevinstance,

_in_ lpstr lpcmdline,

_in_ int nshowcmd

);

_in_表示為輸入引數,_in_opt_表示可選輸入引數,指示引數可能為null,參見

批註函式引數和返回值

winmain的宣告與hellomsg.c中的第三個引數稍有不同,lp字首表示長指標,是16位windows下的產物。hellomsg.c中還改變了兩個變數的名稱,windows程式變數名使用【匈牙利表示法】命名變數,i表示整數,sz表示以0結尾的字串

winapi識別符號定義在minwindef.h中(書上寫定義在windef.h中,時間太長windows某些東西變了?)語句如下:

#define winapi __stdcall
__stdcall表示由被呼叫方清理堆疊,引數從右向左傳遞。參見引數傳遞和命名約定

winmain的第乙個引數被稱為執行實體控制代碼,在windows中控制代碼指唯一標識某些東西的數字。

在windows的早期版本中,當同時執行同一程式多次時,您便建立了該程式的「多個執行實體(multiple instances)」。同一應用程式的所有執行實體共享程式和唯讀的記憶體(通常是例如選單和對話方塊模板的資源)。程式通過檢查hprevinstance引數就能夠確定自身的其它執行實體是否正在執行。然後它可以略過一些繁雜的工作並從前面的執行實體將某些資料移到自己的資料區域。在32位windows版本中,該概念已被拋棄。傳給winmain的第二個引數總是null(定義為0)。

winmain的第三個引數是用於執行程式的命令列。某些windows應用程式利用它在程式啟動時將檔案載入記憶體。

winmain的第四個引數指出程式最初顯示的方式,可以是正常的或者是最大化地充滿整個畫面,或者是最小化顯示在工作列中。

messagebox函式用於顯示簡訊息。雖然,messagebox顯示的小視窗不具有什麼功能,實際上它被認為是乙個對話方塊。

messagebox的第乙個引數通常是視窗控制代碼(將在後面介紹,可能是附加在指定的視窗上?)

第二個引數是在訊息框主體中顯示的字串。

第三個引數是出現在訊息框標題列上的字串。text()是乙個巨集,作用是將字母'l'新增到字串前,變成l"hellomsg",轉換成unicode字串,每個字元占用兩個位元組

第四個引數控制訊息框的按鈕型別。見win apis

第乙個視窗程式

程式截圖 程式 include lresult callback wndproc hwnd,uint,wparam,lparam int winapi winmain hinstance hinstance,hinstance hprevinstance,pstr szcmdline,int icm...

第乙個視窗程式

includeint winapi winmain hinstance hinstance,應用程式當前例項的控制代碼。hinstance hprevinstance,win16留下的廢物現在已經不用了 lpstr lpcmdline,命令列引數 int ncmdshow 主視窗初始化時的顯示方式 ...

第乙個Windows視窗應用程式

學習目的 熟悉開發工具visual c 6.0和msdn 2001的使用.應用windows api函式,手工編寫具有最基本構成的windows視窗應用程式 包含winmain入口函式,訊息迴圈,視窗函式 並除錯成功.1.熟悉開發工具 熟悉開發工具visual studio的使用 在visual s...