オルタナティブ・ブログ > mtaneda ブログ >

中小企業の開発者は会社で何をしているのか

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をデザイナーにと考えてやってみましたが、制約も多いみたいで滅茶苦茶便利というわけではないかも・・・

 

Comment(0)