读书人

SetWindowLong与GetWindowLong函数的若

发布时间: 2013-07-16 22:38:05 作者: rapoo

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 的.

读书人网 >C++

热点推荐