GetWindowLongPtr
這個函式是在指定的視窗中獲取信息。也可以在指定window記憶體偏移量的情況下獲取值。可以拿這個函式來代替GetWindowLong函式來獲取一個指示器或者句柄(註:指示器和句柄是32位或64位微軟windows所特有的概念)。要寫一個兼容32位或64位windows版本的代碼,就要使用這個函式。
語法:
LONG_PTR GetWindowLongPtr(
HWND hWnd,
int nIndex
);
參數:
hWnd
欲獲取信息的視窗(或屬於視窗的類)的句柄。
nIndex
為欲獲取的信息指定值。可以是以下其中之一。
GWL_EXSTYLE
獲取擴展視窗樣式。更多信息,查閱CreateWindowEx.
GWL_STYLE
獲取視窗樣式(window styles)
GWLP_WNDPROC
獲取視窗程式指示器,或描述指示器的句柄 。如果使用此參數,必須使用CallWindowProc回調函式。
GWLP_HINSTANCE
獲取一個應用程式實例的句柄 。
GWLP_HWNDPARENT
如果只有一個父視窗,獲取父視窗的句柄 。
GWLP_ID
獲取視窗標識符。
GWLP_USERDATA
獲取視窗關聯的數據,是應用程式創建視窗時留給用戶的數據。初始值是0。
DWLP_DLGPROC
獲取一個對話框的指示器,或描述指示器的句柄 。如果使用此參數,必須使用CallWindowProc回調函式。 DWLP_MSGRESULT 獲取一個對話框中的被處理的信息的值。
DWLP_USER 作為指示器或句柄來獲取私有應用程式的額外的信息。
返回值:
如果函式執行成功,將返回讀取的值。
如果執行失敗,將返回零,要獲取更多擴展信息,請調用GetLastError.
如果SetWindowLong or SetWindowLongPtr沒有被事先調用,就在擴展視窗或類記憶體中調用GetWindowLongPtr函式,將返回零
詳情你也可以查看MSDN。
使用庫:user32.dll
例如:
[DllImport("user32", EntryPoint="GetWindowLongPtr")]
public static extern IntPtr GetWindowLongPtr(
InPtrt hwnd,
int nIndex
);