• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ツールバーにうまく文字が付けられません)

ツールバーに文字が付けられない!アドバイスをお願いします

このQ&Aのポイント
  • ツールバー作成関数を使って、ツールバーに文字を付ける処理を行いたいですが、うまくいきません。
  • ツールバー作成関数を閉じると、文字を付ける関数が機能せず、標準のボタンが表示されます。
  • ツールバー作成関数を閉じずに、文字を付ける関数を閉じると文字が表示されますが、エラーが出ます。

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

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

>HWND MyCreateToolbar(HWND hWnd) >{ (略) >HWND MyCreateToolbar(HWND hWnd); >//;セミコロンをつけないと >//HWNDの使い方が間違っている ステートメントにセミコロンが無い の エラー >{ 全部のパターンで、関数の中身を全部「取っ払って」みよう。 パターン1(「}」を一番最後に付けて、セミコロンがないパターン) HWND MyCreateToolbar(HWND hWnd) { HWND MyCreateToolbar(HWND hWnd) { } } これは、明らかにおかしい。コンパイラは「HWNDが変な所にある」「セミコロンが無い」と判断する。 パターン2(「}」を一番最後に付けて、セミコロンがあるパターン) HWND MyCreateToolbar(HWND hWnd) { HWND MyCreateToolbar(HWND hWnd); { } } これは「MyCreateToolbarの中で、MyCreateToolbarをプロトタイプ宣言している」と解釈されると思う。そしてコンパイラはエラーを吐く。 パターン3(「}」を前の方に付けて、セミコロンがないパターン) HWND MyCreateToolbar(HWND hWnd) { } HWND MyCreateToolbar(HWND hWnd) { } 「完全に同じ名前の関数を2つ定義している」ので「最初の方」だけが機能する。つまり「ボタンに文字を付ける関数」が機能しない。 パターン4(「}」を前の方に付けて、セミコロンがあるパターン) HWND MyCreateToolbar(HWND hWnd) { } HWND MyCreateToolbar(HWND hWnd); { } これは「2番目のは、単なるMyCreateToolbarのプロトタイプ宣言」になる。そして、コンパイラはエラーを吐く。 もう一度「クラスモジュールの記述方法」と「上位クラスのメンバ関数をラップする、ラッパーの記述方法」を勉強し直しましょう。

noname#220054
質問者

お礼

アドバイス有難うございます。 御礼が遅れてすみません。 ご指摘のとおり、 >「2番目のは、MyCreateToolbarのプロトタイプ宣言」の形を不思議に思っていました。 >「最初の方」だけが機能する。つまり「ボタンに文字を付ける関数」が機能しない。 も感じてはいたのですが、どのように処理をして良いのかわかりませんでした、(経験不足ですね。)でも、 >「完全に同じ名前の関数を2つ定義している」 の指摘で、間違いに気づきました。(一つに纏めれば良い) 今は、『ボタンも4つ表示され、その下に文字も表示されるようになりました』 ただ、『文字が全て、一種類』なのが残念ですが、これは、何とかなりそうです。

関連するQ&A