• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:子ウィンドウの作成方法)

子ウィンドウの作成方法

このQ&Aのポイント
  • 子ウィンドウの作り方を理解したく、ただウィンドウを表示するプログラムを作ろうとしました。しかし、うまくいきません。
  • 子ウィンドウの作り方を理解するために、ウィンドウの表示プログラムを作成しましたが、うまく動作しません。
  • 何度試してもうまくいかない、子ウィンドウを作成するプログラムのエラーに困っています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

お決まりのセリフから。 「うまくいきません。」とはどういう現象ですか? 次に、質問。 「デバッグ」とか「デバッガ」という単語を知っていますか? 最後に回答。 プログラムをコピペしてデバッグしたところ、WinMainの最初、 if (!InitApp(hCurInst)) return FALSE; でプログラムが修了してしまっています。 そこで、InitAppの中を追っかけると、 if((RegisterClassEx(&wc)||RegisterClassEx(&wc2)==0)) return 0; で 0 を返しています。 RegisterClassExは「関数が成功すると、0 以外の値が返ります。」 従って、ここのコードは、 if((RegisterClassEx(&wc==0)||RegisterClassEx(&wc2)==0)) が正しいと思われます。しかし、ここを修正しても、まだウィンドウは表示されません。 そこで RegisterClassEx(&wc)とRegisterClassEx(&wc2)を順次呼び出してみると、&wc2の方が失敗しています。 wc2の設定内容をよく見ると、 wc2.lpszClassName = szClassName; というコードがあります。これはwcに設定したものと同じものです。 これを wc2.lpszClassName = szClassName2; に修正してコンパイル、実行してみると、めでたく「親ウインドウ」、「子ウィンドウ」が表示されました。 (WinMainの他の内容、WndProcの内容は見ていないので、あしからず。) デバッガを使えば、原因調査に5分もかかりません。

youhelp-
質問者

お礼

回答ありがとうございます。 デバッガを使って一行一行実行していたのですが、 自分のソースコードではない、ヘッダーファイルに飛んだりして よくわからなくなったので、質問してしまいました。 丁寧な回答重ねて感謝します。

その他の回答 (2)

回答No.3

変換ミス。 「修了」->「終了」 orz

  • sean9
  • ベストアンサー率86% (26/30)
回答No.1

こんにちは。 wc2.lpszClassName = szClassName; は wc2.lpszClassName = szClassName2; じゃないでしょうか。

youhelp-
質問者

お礼

回答ありがとうございます。

関連するQ&A