读书人

怎么解决这个vc2010编写控件的BUG(LO

发布时间: 2012-07-28 12:25:13 作者: rapoo

如何解决这个vc2010编写控件的BUG(LONGLONG属性)
为了防止我手动输入错误,我用vc2010 ide来操作,如下:
为控件增加一个属性,LONGLONG型,得到类似于
DISP_PROPERTY_NOTIFY_ID(CST_CurveCtrl, "MSGRecWnd", dispidMSGRecWnd, m_MSGRecWnd, OnMSGRecWndChanged, VT_I8)

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

C/C++ code
__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工程中使用;所有操作用鼠标点击完成,我没输入一行代码。

[解决办法]
基本上可以肯定是VS的BUG 我测试VS2008也有同样的问题

读书人网 >VC/MFC

热点推荐