ActiveX控件的MFC设计之旅-第14步 .
发布时间:2020-12-17 00:23:46 所属栏目:大数据 来源:网络整理
导读:刚翻CodeGuru,发现一在运行时显示控件属性页的内容 http://www.codeguru.com/cpp/com-tech/activex/controls/article.php/c2649/ 试着照它的样子做了下来。 还有上一步的例子tppb 1.添加HRESULT GetPages(CAUUID *pPages) HRESULT CTppbCtrl::GetPages(CAUUI
刚翻CodeGuru,发现一在运行时显示控件属性页的内容
http://www.codeguru.com/cpp/com-tech/activex/controls/article.php/c2649/ 试着照它的样子做了下来。 还有上一步的例子tppb 1.添加HRESULT GetPages(CAUUID *pPages) HRESULT CTppbCtrl::GetPages(CAUUID *pPages) { GUID *pGUID; const unsigned CPROPPAGES = 4; pPages->cElems = 0; pPages->pElems = NULL; pGUID = (GUID*) CoTaskMemAlloc( CPROPPAGES * sizeof(GUID) ); if( NULL == pGUID ) { return ResultFromScode(E_OUTOFMEMORY); } // Fill the array of property pages now pGUID[0] = CTestPropPage::guid; pGUID[1] = CLSID_CFontPropPage; pGUID[2] = CLSID_CColorPropPage; pGUID[3] = CLSID_CPicturePropPage; //Fill the structure and return pPages->cElems = CPROPPAGES; pPages->pElems = pGUID; return NOERROR; } 这是一个普通的成员函数,主要功能是获得显示多少个属性页,有哪些属性页等内容。 2.添加控件的方法 void ShowProperties() void CTppbCtrl::ShowProperties() { // TODO: Add your dispatch handler code here CAUUID caGUID; HRESULT hr; LPDISPATCH pIDispatch = GetIDispatch(TRUE); LCID lcid = AmbientLocaleID(); GetPages(&caGUID); hr = OleCreatePropertyFrame( m_hWnd, 10, OLESTR("Do something control"), 1, (IUnknown**) &pIDispatch, caGUID.cElems, caGUID.pElems, lcid, 0L, NULL ); if( FAILED(hr) ) { AfxMessageBox("无法显示属性页",MB_OK | MB_ICONERROR,0); } CoTaskMemFree( (void*) caGUID.pElems ); return; } 显示属性页的函数就是OleCreatePropertyFrame,显示哪些属性页,是通过GetPages函数获得的,属性页的信息放在CAUUID caGUID结构中。 OleCreatePropetyFrame函数的原型为 STDAPI OleCreatePropertyFrame( 在msdn上有介绍,可参考。 3.编译,新建一VB工程,添加tppb控件,添加代码如下: Private Sub Form_Load() Tppb1.ShowProperties End Sub 运行即可发现会弹出来属性页窗口。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |