-
Windows函式呼叫
鎖定
Windows函式呼叫,是一個計算機程序。
- 中文名
- Windows函式呼叫
- 所屬領域
- 計算機科學
目錄
Windows函式呼叫程序簡介
從Windows 1.0到Windows 3.1的16位元Windows中,MessageBox函式位於動態連結程式庫USER.EXE。在Windows 3.1軟體開發套件的WINDOWS.H中,MessageBox函式定義如下:
int WINAPI MessageBox (HWND, LPCSTR, LPCSTR, UINT) ;
注意,函式的第二個、第三個參數是指向常數字串的指標。當編譯連結一個Win16程式時,Windows並不處理MessageBox呼叫。程式.EXE檔案中的表格,允許Windows將該程式的呼叫與USER中的MessageBox函式動態連結起來。
32位的Windows(即所有版本的Windows NT,以及Windows 95和Windows 98)除了含有與16位相容的USER.EXE以外,還含有一個稱為USER32.DLL的動態連結程式庫,該動態連結程式庫含有32位元使用者介面函式的進入點,包括32位元的MessageBox。
這就是Windows支援Unicode的關鍵:在USER32.DLL中,沒有32位元MessageBox函式的進入點。實際上,有兩個進入點,一個名為MessageBoxA(ASCII版),另一個名為MessageBoxW(寬字元版)。用字串作參數的每個Win32函式都在作業系統中有兩個進入點!幸運的是,您通常不必關心這個問題,程式中只需使用MessageBox。與TCHAR表頭檔案一樣,每個Windows表頭檔案都有我們需要的技巧。
Windows函式呼叫MessageBoxA定義方法
下面是MessageBoxA在WINUSER.H中定義的方法。這與MessageBox早期的定義很相似:
WINUSERAPI int WINAPI MessageBoxA ( HWND hWnd, LPCSTR lpText,LPCSTR lpCaption, UINT uType) ;
Windows函式呼叫MessageBoxW定義方法
下面是MessageBoxW:
WINUSERAPI int WINAPI MessageBoxW (HWND hWnd, LPCWSTR lpText,LPCWSTR lpCaption, UINT uType) ;
Windows函式呼叫注意事項
注意,MessageBoxW函式的第二個和第三個參數是指向寬字元的指標。
如果需要同時使用並分別匹配ASCII和寬字元函式呼叫,那麼您可在Windows程式中明確地使用MessageBoxA和MessageBoxW函式。但大多數程式寫作者將繼續使用MessageBox。根據是否定義了UNICODE,MessageBox將與MessageBoxA或MessageBoxW一樣。在WINUSER.H中完成這一技巧時,程式相當瑣碎:
#ifdef UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA
#endif
這樣,如果定義了UNICODE識別字,那麼程式中所有的MessageBox函式呼叫實際上就是MessageBoxW函式;否則,就是MessageBoxA函式。
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:9次歷史版本
- 最近更新: 山今_以诺