braintag

公開してしまう備忘録

CDHtmlDialogにて、html間の値の受け渡し方法

MFCアプリケーションのユーザインタフェースをすべてJavascript(JQuery)におまかせしてしまう - braintag

これの続きですが、今回はJavascriptは関係ありません。

今回は、MFC<->html間の、値の受け渡し方法をやります。

htmlの編集

前回使用したプロジェクトの"testJQuery.htm"の最後に、入力欄を用意します。
あとで、ここで指定した"id"を、MFCのヘルパーマクロに登録します。

<input id="testJQueryValue" />
<BR>
</BODY>
</HTML>

変数の追加

"testJQueryDlg.h"に、取得用のCStringを用意します。

//html value
	CString testjquery_value_;

};

DDX_DHtmlヘルパーマクロの登録

"testJQueryDlg.cpp"の、DoDataExchangeに、ヘルパーマクロを追加します。
2つ目の引数は、"testJQuery.htm"に記述されている、値を取得したい"id"です。

void CtestJQueryDlg::DoDataExchange(CDataExchange* pDX)
{
	CDHtmlDialog::DoDataExchange(pDX);
	DDX_DHtml_ElementValue(pDX, _T("testJQueryValue"), testjquery_value_);
}

値のセット

ヘルパーマクロに登録した後は、通常のMFCアプリと同じです。UpdateData(FALSE)で値を設定できます。
ここでは、OnInitDialogで、値をセットしてみます。

	//設定値のセット
	testjquery_value_ = _T("testjqueryvalue");;
	UpdateData(FALSE);

値の取得

MFCと同じように、UpdateData(TRUE)で値が取れます。
ここでは、OKボタンを押すと、メッセージボックスで表示されるようにしました。

HRESULT CtestJQueryDlg::OnButtonOK(IHTMLElement* /*pElement*/)
{
	UpdateData(TRUE);
	AfxMessageBox(testjquery_value_);
	OnOK();
	return S_OK;
}


以上で、値のやり取りは終わりです。
次こそはイベントのやり取りを行います。

[前回]MFCアプリケーションのユーザインタフェースをすべてJavascript(JQuery)におまかせしてしまう - braintag
[次回]CDHtmlDialogから、javascript関数の呼び出し方法 - braintag