MFCでHTMLベースのダイアログを使ってみた
»
結構ハマりましたが、こんな感じでいけるみたいです。
BEGIN_DHTML_EVENT_MAP(CMyApplication)
DHTML_EVENT_ONCLICK(_T("MyButton"),OnMyButtonClick) ←ボタンのハンドラを登録
END_DHTML_EVENT_MAP()
HRESULT CMakeCardDlg::OnMyButtonClick(IHTMLElement *pElement) ← ハンドラ本体
{
CString str=_T("ボタンが押されました");
BSTR bstr;
bstr=str.AllocSysString();
SetElementText(L"MyInput",bstr);
return 0;
}
void CMakeCardDlg::DoDataExchange(CDataExchange* pDX)
{
CDHtmlDialog::DoDataExchange(pDX);
DDX_DHtml_ElementText(pDX,_T("MyInput"),DISPID_A_VALUE,m_MyInput_str); ←これがポイント
}
あとは、次のようなHTMLを用意すれば、OK
<div class="btn">
<input type="button" id="MyButton" value="ボタン" />
<input type="text" id="MyInput" />
</div>
ボタンを押すと、テキストエリアに「ボタンが押されました」と表示されます。
C++でアプリを書きつつ、HTMLをデザイナーにと考えてやってみましたが、制約も多いみたいで滅茶苦茶便利というわけではないかも・・・
SpecialPR