如何解决这个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也有同样的问题