• ベストアンサー

別スレッドからメインダイアログのコントロールにアクセスする方法

VC++2005 MFC WindowsXPを使用しています。 メインダイアログに作成したエディットボックスに フォーカスをセットしたいのですが、 別スレッドから行うにはどのようにすればよいのでしょうか? メインダイアログにあるボタンを押すと別スレッドの処理に入り、 その中でメインダイアログのコントロールを操作しようとしています。 //フォーカスをセット CWnd* MyEdit = ( CWnd* )this->GetDlgItem( IDC_EDIT1 ); MyEdit->SetFocus(); 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

 こんにちは。  スレッドにダイアログ又はエディットボックスのハンドルを直接渡して、 ::SetFocus(::GetDlgItem(hDlg, IDC_EDIT1));  の様にして、win32APIで操作するか、 CWnd* pDlg = CWnd::FromHandle(hDlg); CWnd* pEdit = pDlg->GetDlgItem(IDC_EDIT1); pEdit->SetFocus();  の様にして、スレッド内でハンドルからクラスを作成して操作するのではないでしょうか。  後思いつくのは、ダイアログにユーザー定義メッセージを追加し、スレッド内からユーザー定義メッセージをポストして、向こう側で何かをさせる位でしょうか。

komehon
質問者

お礼

わかりました。ありがとうございます。 試してみます。