Как правильно получить доступ к управлению ATL из ATL Dialog?

У меня есть решение MSVC 2010, которое содержит 2 проекта:

  • Проект библиотеки ATL DLL, содержащий элемент управления DHTML (названный DHTMLControl, который в значительной степени построен мастером). Я думаю, что я мог бы поместить этот элемент управления во второй проект, хотя.
  • Проект ATL EXE, содержащий главное диалоговое окно (CMainDialog), также созданное мастером.

Мне удалось добавить DHTMLControl в диалоге:

  1. добавил DHTMLControl в панель инструментов
  2. перетащил его в главное диалоговое окно в представлении ресурсов
  3. удалил DHTMLControl из Toolbox (чтобы избежать отказа в доступе при сборке)

Однако моя проблема в том, что я не знаю, как использовать этот элемент управления!

Предполагая, что я нахожусь в сфере действия MainDialog, скажем:

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

Каков будет правильный способ вызова методов DHTMLControl? Скажем, я бы хотел перейти к другому URL-адресу или тому подобное после нажатия кнопки в главном диалоговом окне.

Как я могу получить указатель / ссылку на DHTMLControl (CDHTMLControl? IDHTMLControl?), Находящийся внутри класса CMainDialog?

Извините, если это звучит немного грязно, но я действительно борюсь с 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);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]