用SetWindowsLong()函数。指定另外一个回调函数
解决方案 »
- 求助《vb编写空间差值程序》
- RichTextBox中怎么设置选中字体!
- richtext中图片的问题
- Data 和Adodc使用的问题
- recordset的filter属性难解,快来救我
- 谁用过解密的ActiveSkin 4.27 呀稳定吗?有谁用过呀,交流一下经验吧
- 对装箱算法有兴趣的朋友,请你们 http://x-lz.ebigchina.com 去查看,
- 一个超级菜鸟问题,快来捞分..........
- 关于MSHFlexGrid中合并单元格的问题...
- 初级菜鸟求解除惑:为什么有时候自动编码时,有些方法没有提示?
- 关于编译的问题。
- 请问各位大哥,在vb中如何实现将程序放在桌面右下角,即系统区
SetWindowLong ( )用來重新設置指定窗口的屬性
GetWindowLong ( )用來取回指定窗口的屬性LONG GetWindowLong ( HWND hWnd, int nIndex );
LONG SetWindowLong ( HWND hWnd, int nIndex, LONG dwNewLong ); hWnd 為 handle of window窗口句柄
dwnewLong為new value替換的新值nIndex
GWL_EXSTYLE 擴展窗口樣式
GWL_STYLE 窗口樣式
GWL_WNDPROC 該窗口的窗口函數的位址
GWL_HINSTANCE 擁有窗口的實例的句柄
GWL_HWNDPARENT 其父窗口的句柄
GWL_ID 對話框中一個子窗口的識別字
GWL_USERDATA 含義由應用程式規定
下列值用于對話框,即hWnd為DlghWnd時:
DWL_DLGPROC 對話框函數位址
DWL_MSGRESULT 在對話框函數中處理的一條消息返回的值
DWL_USER 含義由應用程式規定
所謂窗口子類化,實際上就是改變窗口內存塊中的有關參數。由於這種修改只涉及到一個窗口的窗口內存塊,因此它不會影響到屬於同一窗口類的其他窗口的功能和表現。窗口子類化中最常見的是修改窗口內存塊中的窗口函數位址(lpfnWndProc),使其指向一個新的窗口函數,從而改變原窗口函數的處理方法,改進其功能。其基本步驟如下:
(1) 編寫子類化窗口函數。該函數必須為標準的窗口函數格式即:
LRESULT CALLBACK SubClassWndProc ( HWND , UINT , WPARAM , LPARAM ) ;
在這個函數中對感興趣的消息進行處理,而把未處理或者需要原窗口函數進一步處理的消息傳送給原窗口函數;
(2) 利用待子類化窗口的句柄hWnd,調用GetWindowLong ( hWnd , GWL_WNDPROC ) 函數獲得原窗口函數的位址並保存起來;
(3) 調用SetWIndowLong ( hWnd , GWL_WNDPROC , SubClassWndProc ) 把窗口函數設置成子類化窗口函數,完成窗口子類化。