- 締切済み
ATLでのPostMessageについて
ATLでコントロールの開発をしています。 PostMessageでコントロールにメッセージを送信したいのですが、 MFCでいうAfxGetMainWnd()のようなグローバル関数はあるのでしょうか。 ::PostMessage(???, WM_COMMAND, ID_XXXX, NULL);
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19843)
回答No.2
>::PostMessage()をコールするサブルーチンがコントロールのクラスとは別のところにあり、コントロールのウインドウハンドルを >取得できない状態にあります。 > コントロールは複数newされる可能性があります。 >このような状況下でサブルーチンから現在アクティブなコントロール のウインドウにメッセージをポストする方法を探しています。 どこかで誰かが「コントロールをnewしている」のなら、newしている場所で「何がnewされたかを、汎用リストクラスのグローバルな変数に追加していく」と良いのでは。 もちろん、コントロールを破棄した時には、汎用リストクラスのグローバルな変数から削除しないとならないけど。 あとは、PostMessage()する際に、汎用リストクラスのグローバルな変数を見て、相手を探せば良い。
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19843)
回答No.1
>グローバル関数はあるのでしょうか。 ATLのグローバル変数の一覧 http://msdn.microsoft.com/ja-jp/library/500bzah8(VS.80).aspx >::PostMessage(???, WM_COMMAND, ID_XXXX, NULL); CWindow::m_hWnd http://msdn.microsoft.com/ja-jp/library/8207d1b6.aspx
補足
ご返信ありがとうございます。 ::PostMessage()をコールするサブルーチンがコントロールのクラスとは別のところにあり、コントロールのウインドウハンドルを 取得できない状態にあります。 コントロールは複数newされる可能性があります。 このような状況下でサブルーチンから現在アクティブなコントロール のウインドウにメッセージをポストする方法を探しています。 なにかいい方法はございませんでしょうか?