• 締切済み

ATLでのPostMessageについて

ATLでコントロールの開発をしています。 PostMessageでコントロールにメッセージを送信したいのですが、 MFCでいうAfxGetMainWnd()のようなグローバル関数はあるのでしょうか。 ::PostMessage(???, WM_COMMAND, ID_XXXX, NULL);

みんなの回答

回答No.2

>::PostMessage()をコールするサブルーチンがコントロールのクラスとは別のところにあり、コントロールのウインドウハンドルを >取得できない状態にあります。 > コントロールは複数newされる可能性があります。 >このような状況下でサブルーチンから現在アクティブなコントロール のウインドウにメッセージをポストする方法を探しています。 どこかで誰かが「コントロールをnewしている」のなら、newしている場所で「何がnewされたかを、汎用リストクラスのグローバルな変数に追加していく」と良いのでは。 もちろん、コントロールを破棄した時には、汎用リストクラスのグローバルな変数から削除しないとならないけど。 あとは、PostMessage()する際に、汎用リストクラスのグローバルな変数を見て、相手を探せば良い。

回答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

sakura210
質問者

補足

ご返信ありがとうございます。 ::PostMessage()をコールするサブルーチンがコントロールのクラスとは別のところにあり、コントロールのウインドウハンドルを 取得できない状態にあります。  コントロールは複数newされる可能性があります。 このような状況下でサブルーチンから現在アクティブなコントロール のウインドウにメッセージをポストする方法を探しています。 なにかいい方法はございませんでしょうか?

関連するQ&A