プロが教える店舗&オフィスのセキュリティ対策術

VC++2005 MFC WindowsXPを使用しています。

メインダイアログに作成したエディットボックスに
フォーカスをセットしたいのですが、
別スレッドから行うにはどのようにすればよいのでしょうか?

メインダイアログにあるボタンを押すと別スレッドの処理に入り、
その中でメインダイアログのコントロールを操作しようとしています。

//フォーカスをセット
CWnd* MyEdit = ( CWnd* )this->GetDlgItem( IDC_EDIT1 );
MyEdit->SetFocus();


宜しくお願い致します。

A 回答 (1件)

 こんにちは。


 スレッドにダイアログ又はエディットボックスのハンドルを直接渡して、

::SetFocus(::GetDlgItem(hDlg, IDC_EDIT1));

 の様にして、win32APIで操作するか、

CWnd* pDlg = CWnd::FromHandle(hDlg);
CWnd* pEdit = pDlg->GetDlgItem(IDC_EDIT1);
pEdit->SetFocus();

 の様にして、スレッド内でハンドルからクラスを作成して操作するのではないでしょうか。
 後思いつくのは、ダイアログにユーザー定義メッセージを追加し、スレッド内からユーザー定義メッセージをポストして、向こう側で何かをさせる位でしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/12/24 11:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!