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