首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

SetWindowLong与GetWindowLong函数的若干有关问题

2013-07-16 
SetWindowLong与GetWindowLong函数的若干问题1)在get窗口的userdata之前,是不是一定要set?2)我在P先生(Pet

SetWindowLong与GetWindowLong函数的若干问题
1)在get窗口的userdata之前,是不是一定要set?
2)我在P先生(Petzold)的书上看到,他给窗口分配了sizeof(LONG)的额外空间,但调用GetWindowLong的时候,写的是GetWindowLong(hwnd, 0)而不是GetWindowLong(hwnd, GWL_USERDATA),这应该怎么理解? GetWindowLong SetWindowLong
[解决办法]
Set/GetWindowLong可以根据某个flag对某个窗口做一些动作,最常见的是设置和获取某个值,另外就是替换窗口的过程
[解决办法]
1. 当然.
2. 当 hWnd 是一个对话框的时候, 第二个参数可以使用:
DWL_DLGPROC   得到对话框回调函数的地址,或者句柄。得到后必须使用CallWindowProc函数来调用 
DWL_MSGRESULT 得到对话框回调函数中消息处理过程的返回值
DWL_USER      得到额外的应用程序私有信息,如一些句柄和指针等

其中, DWL_MSGRESULT 的值定义成 0 的.
[解决办法]

引用:
Quote: 引用:

1. 当然.
2. 当 hWnd 是一个对话框的时候, 第二个参数可以使用:
DWL_DLGPROC   得到对话框回调函数的地址,或者句柄。得到后必须使用CallWindowProc函数来调用 
DWL_MSGRESULT 得到对话框回调函数中消息处理过程的返回值
DWL_USER      得到额外的应用程序私有信息,如一些句柄和指针等

其中, DWL_MSGRESULT 的值定义成 0 的.
楼上的一段代码是先get再set的例子,但程序运行没有出现错误

没有 Set 就 Get 不是会出错, 是取不到东西啊. 
这里面它判断了返回值, 对没有取不到东西的情况做了处理, 自然不会出错了.

MSDN 里面说明了, 一开始是初始化为 0 的.

热点排行