为了防止我手动输入错误,我用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工程中使用;所有操作用鼠标点击完成,我没输入一行代码。