SetWindowLong()和 GetWindowLong() 使用解详

2025-02-28 06:56:59
推荐回答(1个)
回答1:

1. LONG SetWindowLong( HWND hWnd, int nIndex, LONG dwNewLong ); 这个函数根据nIndex的取值不同,可以实现不同的功能. 其中nInde可以取: GWL_EXSTYLE: 设置窗口扩展风格,即CreateWindowEx的DWORD wExStyle 参数 GWL_STYLE: 设置窗口风格,即CreateWindow的DWORD dwStyle参数 GWL_WNDPROC: 设置窗口的处理函数,即RegisterClass的WNDCLASSEX的WNDPROC lpfnWndProc成员 GWL_HINSTANCE: 设置窗口所属的应用程序句柄,即RegisterClass的WNDCLASSEX的HINSTANCE hInstance成员 GWL_ID 设置窗口的ID(对于控件,就是控件ID) GWL_USERDATA: 设置窗口的用户自定义数据 DWL_DLGPROC: 设置对话框处理函数 DWL_MSGRESULT: 设置对话框消息处理的结果值 DWL_USER: 设置扩展区域数据 你这里是要修改原窗口的回调函数,所以指定的类型为GWL_WNDPROC,参数是你自定义的回调函数名,转为LONG型,而返回值是以前的回调函数,因为是LONG型的,要强转成WNDPROC然后保存起来 2.LONG GetWindowLong(HWND hWnd,int nlndex) 第二个参数和SetWindowLong的第二个参数一样 取出对应的属性值