有难度的COM问题:关于Font的问题?
vcmfc 2000-12-27 03:12:00 我在创建ActiveX中使用其默认字体属性,在生成控件后,在IDL中如下东东:
[propputref, id(DISPID_FONT)]
HRESULT Font([in]IFontDisp* pFont);
[propput, id(DISPID_FONT)]
HRESULT Font([in]IFontDisp* pFont);
[propget, id(DISPID_FONT)]
HRESULT Font([out, retval]IFontDisp** ppFont);
在CLabel.h中有如下东东:
CComPtr<IFontDisp> m_pFont;
在你的提醒下,我在OnDraw中用如下代码:
IFont *pFont;
HFONT hFont=NULL;
HRESULT hr;
if(m_pFont)
hr=m_pFont->QueryInterface(IID_IFont,(void**)&pFont);
else
hr=GetAmbientFont(&pFont);
if(SUCCEEDED(hr))
{
pFont->get_hFont(&hFont);
::SelectObject(di.hdcDraw,hFont);
}
结果Label控件在创建时没有问题,可在VB的对象属性页中对Font属性的改变后,出现错误:无效的属性值(Invlid Property Value),我是哪里工作没有做呀!,问题在哪里呀!,如果用自已的属性页却正常,why?大大哥,我真的很急呀!经理每天都问我呢?,再不就...?