HINSTANCE
常出現在API程序的數據類型
HINSTANCE 是“句柄型”數據類型。相當於裝入到了內存的資源的ID。HINSTANCE對應的資源是instance.句柄實際上是一個 無符號長整數。但它是“句柄型”,所以你不能把它當成真的無符號長整數,拿來派別的用處,例如,不能拿來做四則運算。HINSTANCE常出現在 API 程序:
程序使用HINSTANCE來區別task。
Handle 是代表系統的內核對象,如文件句柄,線程句柄,進程句柄。
HMODULE 是代表應用程序載入的模塊,win32系統下通常是被載入模塊的線性地址。
HINSTANCE 在win32下與HMODULE是相同的東西,在Win32下還存在主要是因為win16
程序使用HINSTANCE來區別task。
HWND 是窗口句柄
熟悉C編程的人都知道main函數帶有2個參數:argc和argv,完整的main函數定義是:int main(int argc, char *argv[])。argc指示程序啟動時命令行參數的個數,argv則包含具體的參數字元串。
如果有程序叫“hello.exe”,直接啟動時,argc=1, argv[0]=hello.exe。
如果以“hello.exe readme.txt”的形式啟動,argc=2, argv[0]=hello.exe, argv[1]=readme.txt
通過這兩個參數,程序可以獲知自身在啟動時的命令行信息。
而在WinMain函數中,帶有4個參數,分別是:hInstance, hPrevInstance, lpCmdLine, nShowCmd。今天就探討hInstance的含義。
hInstance是程序的當前實例的句柄。在Windows這樣的多任務操作系統中,一個程序可以同時運行多個實例。不同的實例間需要彼此區別,句柄就是干這個的。
我們想辦法把句柄指示的信息顯示出來,用LoadString函數,格式為:
其中第2個參數uID,表示裝載(Load)的是第幾個信息。下面的程序將把程序的名稱(IDS_APP_TITLE)信息顯示在消息窗口中。
程序運行后將顯示如下的窗口:
HINSTANCE
hInstance是操作系統分配給實例的指針. 程序根據hInstance訪問其相應的內存空間
hInstance是操作系統分配給程序自身實例的句柄。句柄是用來標識實例的,句柄是實例指針的索引. 通過句柄能找到實例的地址.
HINSTANCE hInstance;是應用程序的實例句柄
獲取方法 HINSTANCE AfxGetInstanceHandle( );
或者AfxGetApp( );
得到一個CWINAPP類的指針,其中有該句柄的成員
nCmdShow,你有SDK經驗就知道,它是主窗口的狀態,也就是WinMain(...)的參數之一