※ ChatGPTを利用し、要約された質問です(原文:VisualC++2005 「C2039 SetWindowTextAがCButton のメンバでは無い」と出てしまう。)
VisualC++2005 「C2039 SetWindowTextAがCButton のメンバでは無い」と出てしまう
このQ&Aのポイント
VisualC++2005でプロジェクトにMFC拡張DLLを追加し、ボタンにメンバ変数を割り当てるとエラーが出ます
エラーの内容は、'SetWindowTextA'が'CButton'のメンバではないというものです
継承されているメンバ関数は問題なく使用できますが、'CButton' 固有のメンバ関数は使用できません
VisualC++2005 「C2039 SetWindowTextAがCButton のメンバでは無い」と出てしまう。
VisualC++2005において、プロジェクト(ソリューション)を以下のように構成した場合に表記のエラーが出ます。
解決方法ご存知でしたら教えて下さい。
(MFC初心者です)
【構成】
・新規のソリューションにMFCのMDI形式のプロジェクトを作成
・さらにMFC拡張DLLのプロジェクトを作成する
(1つのソリューションに2つのプロジェクトを同居させる)
・MDIのプロジェクトは特に何もしない
・MFC拡張DLL側でダイアログを1ヶ作成する
・作成したダイアログのクラスを作成
・OnInitDialog()を作成
・作成したダイアログにあるボタンにメンバ変数(例:m_Button)を割り当てる
・OnInitDialog()内でm_Button.SetWindowText("HOGE");と記述
・コンパイルするとエラーが出る
【エラー】
error C2039: 'SetWindowTextA' : 'CButton' のメンバではありません。
1> c:\program files\microsoft visual studio 8\vc\atlmfc\include\afxwin.h(2990) : 'CButton' の宣言を確認してください。
特に変わったことをしているわけではありません。
さらに「m_Button.」と入力した時点で入力補助機能が働くので
m_Buttonはちゃんと認識されていると思います。
'CButton' 固有のメンバ関数の使用には問題ありませんが、
継承されているメンバ関数はことごとくNGです。
お礼
解決しました! 教えて頂いた通りのコードでコンパイルが通りました。 なので、文字セットの設定を「UNICODEを使用」から「マルチバイトを使用」に変更し通常通りコンパイルが出来ました。 プロジェクトウィザードでDLLの作成をしようとした時は後から設定を変えなくてはいけないのですね。 勉強になりました。 ありがとうございます。