- ベストアンサー
SDKについて…新規ウィンドウ
今SDK(WIN-API)でプログラムを作成しているんですが、メインプログラム(WinMain.cpp)の中のOKボタン(CreateWindow{…})を押したら別の新規ウィンドウ(WinSub.cpp)を呼び出したいのですが、やり方がいまいち分かりません。どなたかご助言お願いします。 WinMain.cpp はメインプログラム WinSub.cppはサブプログラム
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「閉じたら次の新しいダイアログを表示」ではなかったのですね? 質問文を読み違えていたようです。 > *コメントの場所に新規処理を載せたいのです。 最初のダイアログを開いたときと同じような処理を書けばよろしいかと。 ただ、ダイアログでWM_CREATEって来ましたっけ? WM_INITDIALOGかと思いましたが……。 # 次のダイアログの処理がWinSub.cppに書かれていて、 # WinMain.cppのダイアログプロシージャから呼び出すように書くとビルド時にエラーになる。 # というのであれば、「分割コンパイル」について調べてください。
その他の回答 (2)
- Wr5
- ベストアンサー率53% (2173/4061)
>はい、OKボタンを押したら新しいウィンドウを開くようにしたいんです。すいませんでした。 どういったコードかかれているのか判らないままですが…… 最初のダイアログボックスをDialogBox()APIで開いているのであれば、 最初のダイアログボックスを閉じる時のEndDialog()で指定した値が戻り値として受け取れます。 その値で判定して次のダイアログボックスをDialogBox()で開けばよろしいでしょう。 最初のダイアログボックスがCreateDialogで作成し、メッセージループを自分で組んでいたりする場合は、PostQuitMessage()などで抜けるでしょうから、そちらで判定可能かと。 ところで、WinMain.cppとWinSub.cppはどんな内容なんでしょう?
補足
ソースの一部を載せます。下のソースはOKボタンの設置処理です。 switch (msg) { case WM_CREATE: hBth = CreateWindow("BUTTON","OK", WS_VISIBLE | WS_CHILD,20,80,60,25, hWnd,(HMENU)ID_BUTTON1,hInstance,NULL); : この下は、OKボタンを押されたときの処理です。 case WM_COMMAND: switch(LOWORD(wParam)){ case ID_BUTTON1: /* 新規ウィンドウの処理 */ case WM_DESTROY: PostQuitMessage(0); break; : *コメントの場所に新規処理を載せたいのです。 始めたばかりなのでうまく説明できませんがお願いします。
- Wr5
- ベストアンサー率53% (2173/4061)
具体的になにがしたいのか判りません。 ダイアログスタイルのプログラムで、OKボタンを押したら新しいウィンドウを開きたいということでしょうか?? WinMain.cpp/WinSub.cppがどのようになっているのか判らないのでなんとも言いようがないです。 ある程度の内容は掲示された方がよろしいかと思います。
補足
>ダイアログスタイルのプログラムで、OKボタンを押したら新しいウィンドウを開きたいということでしょうか?? はい、OKボタンを押したら新しいウィンドウを開くようにしたいんです。すいませんでした。
お礼
WM_INITDIALOGと分割コンパイルについて調べてみます。 ありがとうございました!