如何解决这个vc2010编写控件的BUG(LONGLONG属性)

youngwolf 2012-07-11 10:00:22
为了防止我手动输入错误,我用vc2010 ide来操作,如下:
为控件增加一个属性,LONGLONG型,得到类似于
DISP_PROPERTY_NOTIFY_ID(CST_CurveCtrl, "MSGRecWnd", dispidMSGRecWnd, m_MSGRecWnd, OnMSGRecWndChanged, VT_I8)

编译控件,注册,成功。然后添加到另一个工程的对话框上,并为其生成一个包装类,得到

__int64 GetMSGRecWnd()
{
__int64 result;
GetProperty(0x6, VT_EMPTY, (void*)&result);
return result;
}
void SetMSGRecWnd(__int64 propVal)
{
SetProperty(0x6, VT_EMPTY, propVal);
}

注意,其中的VT_EMPTY是错误的,应该是VT_I8(手动改为VT_I8则完全正确)。上面的包装类错误直接导致调用SetMSGRecWnd或者GetMSGRecWnd时,程序崩溃(release下可能不会崩溃,但肯定得不到正确的结果,我就没试了)

注:控件在vc2010中生成,用也是在vc2010工程中使用;所有操作用鼠标点击完成,我没输入一行代码。
...全文
80 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgl7903 2012-07-12
  • 打赏
  • 举报
回复
基本上可以肯定是VS的BUG 我测试VS2008也有同样的问题

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧