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

在线关于SetWindowLongPtr有关问题,请~

2012-01-20 
在线紧急求助关于SetWindowLongPtr问题,请高手指点~~在使用这个函数时老是会出现err为1413的情况,也就是“

在线紧急求助关于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

热点排行