看到duilib能使用ActiveX,于是我也測驗了下,用的是用友的華表,通過import可以獲得tli和tlh檔案,可是并沒有找到CLSID和IID的宣告,一直都無法獲取到控制元件,網上找的資料對這塊都沒有詳細說明。
代碼:
InitWindow()
{
CActiveXUI* pActiveXUI = static_cast<CActiveXUI*>(m_pm.FindControl(_T("Cell")));
if (pActiveXUI)
{
CELL50Lib::_DCell2000 *cell = NULL;
pActiveXUI->GetControl(__uuidof(CELL50Lib::_DCell2000), (void**)&cell);
...
}
}
uj5u.com熱心網友回復:
在64位Windows下:64位exe和dll在目錄c:\windows\system32目錄下;
32位exe和dll在目錄c:\windows\syswow64目錄下;
所以要注意:
在win64位系統下注冊32位ocx或dll需要將32位ocx或dll拷貝到c:\windows\syswow64\目錄下。
且注冊要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
uj5u.com熱心網友回復:
注冊過了的 而且MFC呼叫是成功的
uj5u.com熱心網友回復:
CLSID和IID的宣告 你可以自己宣告下,另外COM庫要初始化好你xml怎么寫的呢?
uj5u.com熱心網友回復:
CLSID 和IID 都宣告了VS除錯的時候可以看到 現在只能通過MFC把控制元件和duilib放一起
xml中就是多了一個 <Cell name="Cell" />這么一句 然后 代碼里面 FindControl 然后在創建
Com初始化了。
uj5u.com熱心網友回復:
通過注冊表就能找到CLSID,你可以打開注冊表搜索你那個ocx的名字。duilib xml里你如果使用了CLSID屬性直接在代碼里findcontrol就可以,沒有使用CLSID的話,需要先CreateControl(L"{xxxxxxxx-66F9-4A55-ABD2-0BF8DEEC1196}");uj5u.com熱心網友回復:

通過以下方式可以獲取文本框內容。

CComBSTR text = NULL;
CComPtr<IHTMLDocument3> pDocument3 =NULL;
CComPtr<IHTMLElement> lpInput = NULL;
IDispatchPtr dispDoc = NULL;
CComPtr<IHTMLElement> lpInput2 = NULL;
pWebBrowser->get_Document((IDispatch**)&dispDoc);
dispDoc->QueryInterface(&pDocument3);
wchar_t dname[1024] ;
wcscpy(dname,A2W("element_id"));
pDocument3->getElementById(CComBSTR(dname),&lpInput);
lpInput->get_outerHTML(&text);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/88200.html
標籤:界面
上一篇:OLEDB模板使用問題
