こんにちは。
現在の環境ですが、XP、VC++.NET2003(MFC)にてPGを作っています。
MessageBoxの質問なのですが、
クラスの追加でXXX.cpp、XXX.hを追加し、
XXX.cppに
MessageBox("エラー表示","ヘッダ名",MB_ICONSTOP);を記述したのですが、
'MessageBoxA' : 関数に 3 個の引数を指定できません。'
となってしまします。
MFC側(初めにできるXXX.cpp、XXX.h)では記述しても
エラーが出ないのですが・・・・・。
・クラスを追加した理由はメッセージ系を纏めたかったからです。
・AfxMessageBoxで記述しないのはダイアログのヘッダに、
プロジェクト名ではなく、ヘッダ名を表示したいからです。
ご存知の方、教えてください。
宜しくお願い致します。
「クラスの追加」で何のクラスを追加したのでしょうか。
MessageBoxメソッド(引数3個)はCWndのメンバだから
基本クラスがCWndのクラスでないと駄目ですよ。
APIのMessageBox(引数4個)でオーナーにNULL指定でどうでしょう。
WinAPIのMessageBoxは
int MessageBox(
HWND hWnd, // オーナーウィンドウのハンドル
LPCTSTR lpText, // メッセージボックス内のテキスト
LPCTSTR lpCaption, // メッセージボックスのタイトル
UINT uType // メッセージボックスのスタイル
);
で、
CWndクラスのメンバ関数の MessageBox は
int MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption = NULL,
UINT nType = MB_OK );
ダイアログクラス内で MessageBox とすると、親クラスの CWnd::MessageBox が呼ばれますが、
自作クラスの場合は、親クラスがないので、WinAPIのMessageBoxが呼ばれます。
早急な回答ありがとうございます。
クラスの追加ですが、一般を選択し追加したので自作クラスでした。
説明が足りず、すいません。
教えて頂いた通り、WinAPIのMessageBoxの引数4個の指定で、
うまくいきました。
(恥ずかしい話、半日悩んでました。。。。。)
みいさん、Blueさん
本当にありがとうございました。
ツイート | ![]() |