- ベストアンサー
別スレッドからメインダイアログのコントロールにアクセスする方法
VC++2005 MFC WindowsXPを使用しています。 メインダイアログに作成したエディットボックスに フォーカスをセットしたいのですが、 別スレッドから行うにはどのようにすればよいのでしょうか? メインダイアログにあるボタンを押すと別スレッドの処理に入り、 その中でメインダイアログのコントロールを操作しようとしています。 //フォーカスをセット CWnd* MyEdit = ( CWnd* )this->GetDlgItem( IDC_EDIT1 ); MyEdit->SetFocus(); 宜しくお願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 スレッドにダイアログ又はエディットボックスのハンドルを直接渡して、 ::SetFocus(::GetDlgItem(hDlg, IDC_EDIT1)); の様にして、win32APIで操作するか、 CWnd* pDlg = CWnd::FromHandle(hDlg); CWnd* pEdit = pDlg->GetDlgItem(IDC_EDIT1); pEdit->SetFocus(); の様にして、スレッド内でハンドルからクラスを作成して操作するのではないでしょうか。 後思いつくのは、ダイアログにユーザー定義メッセージを追加し、スレッド内からユーザー定義メッセージをポストして、向こう側で何かをさせる位でしょうか。
お礼
わかりました。ありがとうございます。 試してみます。