プロシージャ間のSendMessage()について

[戻る]
TERA 2006/06/25(日) 17:05:19
開発環境 WindowsXP  VS2005  PlatformSDK  C言語


LRESULT CALLBACK MainDlgProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM 
lParam) 
{

    case IDM_NAME :    
        DialogBox(g_hInst,MAKEINTRESOURCE(IDD_NAME), NULL, (DLGPROC)
NameDlgProc);
        return TRUE;

}


LRESULT CALLBACK NameDlgProc (HWND hWndName, UINT message, WPARAM wParam, 
LPARAM lParam)
{

    〜〜〜〜
    
    SendMessage(  ※ , WM_USER+1, 0, 0);

    〜〜〜〜

    return FALES;
}


NameDlgProcプロシージャから MainDlgProcプロシージャに自作メッセージを
送りたいのですが、SendMessage()の第一引数にhWndとすることもできず、困っていま
す。
こういう場合は、hWndをグローバル変数にコピーして使うのが正しいやり方なのでしょう
か。
でもそれはなんだかスマートではない気がするのですが・・・。

επιστημη 2006/06/25(日) 17:09:48
WPARAM, LPARAM を介して送ればいいんじゃないかと。

TERA 2006/06/25(日) 17:31:42
επιστημηさん

ええと・・すみません。
それはいったい、どういうことでしょうか。

Blue 2006/06/25(日) 17:42:52
> DialogBox(g_hInst,MAKEINTRESOURCE(IDD_NAME), NULL, (DLGPROC)NameDlgProc);
DialogBox関数の第3引数は親ウィンドウを指定するようにできます。

で、ダイアログプロシージャ内で、GetParent関数を呼べば、親ウィンドウのハンドルが
取得できるはずです。

επιστημη 2006/06/25(日) 17:49:18
あ、そーゆーことか。ごめん勘違い。

TERA 2006/06/25(日) 18:22:26
[[解決]]
επιστημηさん Blueさん

できました!
なるほど・・・こういうことができたのですね。

お二人ともどうもありがとうございました。

古いスレッドには追加発言できません。