|
えぇ〜と、どうしてもリストボックスの処理がうまくできないのでソースコードを公開(添付しています)し、神の降臨を待たせていただくことにしました。
※CrystalDiskMark に限れば今回の処理は必要ないのですが・・・これが、出来ないと CrystalCPUID を CDHtmlDialog に切り替えられないのです。
----------------------------------------------------------------------------
DHTML_EVENT_ONCHANGE(_T("Drive"), OnSelectDrive)
として、↓な感じのハンドラを用意したのですが、どうもイベントが捕捉できないようなんですよね・・・
HRESULT CDiskMarkDlg::OnSelectDrive(IHTMLElement *pElement)
{
UpdateData(TRUE);
AfxMessageBox(m_DriveValue);
return 0;
}
そこで、
DHTML_EVENT_ONCHANGE(_T("Drive"), OnSelectDrive)
を
DHTML_EVENT_ONCLICK(_T("Drive"), OnSelectDrive)
とすると、ちゃんとクリックイベントが発生して、現在選択しているドライブレターがメッセージボックスに表示されます。
MSDN やヘッダファイル (afxdhtml.h) を見ると OnChange イベントは非バブルイベントということだそうです。バブリングというのは、泡のように駆け上るということで上位エレメントにもメッセージを伝えるということらしいのですが・・・。(わけわからんね・・・この説明じゃ)
リストボックスでの選択が変更されたときに、OnSelectDrive を呼び出すことはできないでしょうか・・・識者の方々よろしくお願いいたします m(_ _)m
神の降臨を気長に待ちたいと思います。が、CDHtmlDialog で GUI を構築しようと本気で考えている人って日本にどれほどいるんだろうか・・・。
それにしても、マイクロソフトの HTML は酷いね・・・。
ちなみに、javascript で onChange イベントは簡単に捕捉できるんですよね・・・。
ということなので、 javascript から Window Message を投げる方法でも可です。
あっ、ちなみに本ソースコードのベンチ部分は超暫定です。
|
|