函式功能:該函式改變指定視窗的屬性。函式也將指定的一個值設定在視窗的額外存儲空間的指定偏移位置。
該函式用於取代SetWindowLong函式。如果您想要您編寫的代碼兼容32位和64位版本的Windows系統,請使用SetWindowLongPtr函式。
基本介紹
函式原型,參數說明,返回值,
函式原型
LONG_PTRSetWindowLongPtr(
HWNDhWnd,
intnIndex,
LONG_PTRdwNewLong
);
參數說明
1、hWnd:視窗句柄,間接給出視窗所屬的類。
2、nlndex:指定將設定的大於等於0的偏移值。有效值的範圍從0到額外類的存儲空間的位元組數減去一個整型的大小(-sizeof(int))。要設定其他任何值,可以指定下面值之一:
nlndex | 說明 |
---|---|
GWL_EXSTYLE | 設定一個新的擴展風格。更多信息,請見CreateWindowEx。 |
GWL_STYLE | 設定一個新的視窗風格。 |
GWL_WNDPROC | 為視窗過程設定一個新的地址。 |
GWL_HINSTANCE | 設定一個新的應用程式實例句柄。 |
GWL_ID | 設定一個新的視窗標識符。 |
GWL_USERDATA | 設定與該視窗相關的用戶數據。這些用戶數據可以在程式創建該視窗時被使用。用戶數據的初始值為0。 |
當hWnd參數標識了一個對話框時,也可使用下列值: | |
DWL_DLGPROC | 設定對話框過程的新地址。 |
DWL_MSGRESULT | 設定對話框中的訊息處理程式的返回值。 |
DWL_USER | 設定的應用程式所私有的新的額外信息,例如句柄或指針。 |
3、dwNewLong:指定的替換值。
返回值
如果函式成功,則返回所指定的偏移量的前一個值。
如果函式失敗,則返回0。若想獲得更多的錯誤信息,請調用GetLastError函式。
注意:可以存在這樣一種情況,就是如果如果函式成功,且所返回的指定的偏移量的前一個值恰好為0,這時函式的返回值也為0。這中情況下,如果我們想知道SetWindowLongPtr()函式到底運行成功了沒有,可以通過如下的方法得知:
1、先調用SetLastError(0),清除最後的錯誤信息。
2、調用SetWindowLongPtr()。這時如果SetWindowLongPtr()函式的返回值為0。
3、再調用GetLastError(),獲取最後的錯誤信息。如果GetLastError()的返回值為非0的話,則SetWindowLongPtr()函式運行失敗。