Window API函數,可根據nlndex參數的不同獲取指定窗口的相關信息,
也可用於獲取窗口內存中指定偏移的32位度整型值。該值大小在注冊窗口類時設定,
函數原型:
Long GetWindowLong(HWND hWnd, int nlndex);
第一個參數:HWND 需要操作的窗口句柄。
第二個參數:nlndex
1.若大於0,返回窗口內存中指定偏移量的32位值
有效范圍為0到存儲空間的字節數減4,
比如指定了12個字節的額外窗口存儲空間,則應設置8來訪問第三個4字節,設置4來訪問第二個4字節
設置0來訪問第一個4字節空間,
2.也可以設置以下數據: 描述發的
#define GWL_WNDPROC (-4) //獲取窗口過程地址或句柄。必須使用CallWindowProc函數調用獲取的窗口過程。 #define GWL_HINSTANCE (-6) //獲取應用實例句柄 #define GWL_HWNDPARENT (-8) //獲取所有者窗口句柄 #define GWL_STYLE (-16) //獲得窗口樣式 #define GWL_EXSTYLE (-20) //獲取擴展窗口樣式 #define GWL_USERDATA (-21) //獲取用戶設置的32位數據,其值默認為0 #define GWL_ID (-12) //獲取窗口ID hWnd參數為對話框句柄時,還可用下列值: #define DWL_MSGRESULT 0 //獲取在對話框過程中某消息的返回值。 #define DWL_DLGPROC 4 //獲取對話框過程地址或句柄。必須使用CallWindowProc函數來調用對話框過程。 #define DWL_USER 8 //獲取應用程序專用的額外信息,例如一個句柄或指針。
返回值:
如果函數成功,返回值是指定的32位整數的原來的值。如果函數失敗,返回值為0。
但是,如果指定的32位整數值為0 函數成功將返回0,
補充:
窗口的額外存儲空間有注冊窗口類時通過設置以下參數指定;
wndclass.cbWndExtra = sizeof(long); 該段代碼為使用該窗口類注冊的串口預留了 一個長整形變量大小的額外空間。
同時可以通過 SetWindowLong() 函數來改變該值
SetWindowLong(hwnd,0,1) //設置第一個4字節的值
SetWindowLong(hwnd,4,2) //設置第二個4字節的值
SetWindowLong(hwnd,8,3) //設置第三個4字節的值