在线紧急求助关于SetWindowLongPtr问题,请高手指点~~
在使用这个函数时老是会出现err为1413的情况,也就是“索引无效”,源代码如下
static void SaneEndDialog(HWND hwnd, int ret)
{
//EndDialog(hwnd,ret);
int i = SetWindowLongPtr(hwnd, BOXRESULT, ret);
i = SetWindowLongPtr(hwnd, BOXFLAGS, DF_END);
}
其中的BOXRESULT和BOXFLAGS定义如下
#define BOXFLAGS DLGWINDOWEXTRA
#define BOXRESULT (DLGWINDOWEXTRA + sizeof(LONG_PTR))
请问为什么会出现这个问题,不知道我有没有描述清楚,如果不清楚请提出来我再补充,我在线等
[解决办法]
这个索引是在窗口对象中必须存在的,这个对象不是指CWnd这样的对象,而是使用CreateWindow的api创建的对象,在创建这个对象时,这个字节数是根据extra_bytes来分配的,它是在RegisterClass时指定的。对话框不是你自己注册的,原头文件中DLGWINDOWEXTRAA指出了对于对话框会保留多少字节数,你使用超过它的索引就不行。除非你自己注册的窗口类,才有可能加大这个值。
[解决办法]
这个简单,联系我,我给你发个例子吧 email:cat1899@sina.com