複製鏈接
請複製以下鏈接發送給好友

SetWindowLongPtr

鎖定
函數功能:該函數改變指定窗口的屬性。函數也將指定的一個值設置在窗口的額外存儲空間的指定偏移位置。
該函數用於取代SetWindowLong函數。如果您想要您編寫的代碼兼容32位和64位版本的Windows系統,請使用SetWindowLongPtr函數。
外文名
SetWindowLongPtr
性    質
改變指定窗口的屬性
用    途
取代SetWindowLong函數
hWnd
窗口句柄,間接給出窗口所屬的類

SetWindowLongPtr函數原型

LONG_PTRSetWindowLongPtr(HWND hWnd,int nIndex,LONG_PTR dwNewLong);

SetWindowLongPtr參數説明

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:指定的替換值。

SetWindowLongPtr返回值

如果函數成功,則返回所指定的偏移量的前一個值。
如果函數失敗,則返回0。若想獲得更多的錯誤信息,請調用GetLastError函數。
注意:可以存在這樣一種情況,就是如果如果函數成功,且所返回的指定的偏移量的前一個值恰好為0,這時函數的返回值也為0。這中情況下,如果我們想知道SetWindowLongPtr( )函數到底運行成功了沒有,可以通過如下的方法得知:
1、先調用SetLastError(0),清除最後的錯誤信息。
2、調用SetWindowLongPtr( )。這時如果SetWindowLongPtr( )函數的返回值為0。
3、再調用GetLastError( ),獲取最後的錯誤信息。如果GetLastError( )的返回值為非0的話,則SetWindowLongPtr( )函數運行失敗。