GetWindowLong() 函數


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字節的值 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM