2013-05-08 43 views
0

我有一個MSVC 2010解決方案,其中包含2個項目:如何從ATL對話框正確訪問ATL控件?

  • ATL DLL項目中,包含DHTML控制(名爲DHTMLControl,這是相當多由嚮導生成)。我想我可以將這個控件放到第二個項目中。
  • ATL EXE項目,包含主對話框(CMainDialog),也由嚮導創建。

我已成功地DHTMLControl添加到對話框:

  1. 添加DHTMLControl到工具箱
  2. 把它拖在主對話框中的資源視圖
  3. 從工具箱(以避免訪問拒絕刪除DHTMLControl在構建)

但是,我的問題是,我不知道如何使用此控件!

假設我在MainDialog的範圍,在說:

LRESULT CMainDialog::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) 

什麼是調用DHTMLControl的方法,正確的方法是什麼?說,我想在按下主對話框中的按鈕之後導航到另一個URL或類似的地址。

如何獲取指向CMTMDonog類中的DHTMLControl(CDHTMLControl?IDHTMLControl?)的指針/引用?

對不起,如果聽起來有點混亂,但我真的很困難與ATL。

謝謝。

回答

0

將生成的_i.h包含在對話框的標題中(不包括實際控件的標題 - 不包含實際控件的標題)。

然後使用這樣的事情:

CComPtr<IDHTMLControl> ptr; 
HRESULT hr = GetDlgControl(IDC_DHTML_CONTROL, IID_IDHTMLControl, (void**)&ptr); 

BSTR url = SysAllocString(L"http://example.com/"); 
// Call control's prop method 
ptr->put_Url(url); 
SysFreeString(url);