アプリ版:「スタンプのみでお礼する」機能のリリースについて

VC++.NET 2003 のヘルプの、「チュートリアル : 簡単な Windows フォームの作成」に
MessageBox::Show()関数を使ってHello,worldを表示させる例が書いていますが、
この関数を、自分で作った関数(フォームのクラスのメンバ関数で、
関数のコードはインライン関数でなく、cppファイル側に書いています)に持っていくと、

error C2653: 'MessageBoxA' : 識別子がクラス名でも名前空間名でもありません。
error C2660: 'System::Windows::Forms::Control::Show' : 関数に 1 個の引数を指定できません。

と、コンパイルエラーが出てしまいます。

MessageBox::Show()を自前の関数で使う方法を、
どなたか教えていただけないでしょうか?

A 回答 (4件)

VC++.NET 2003を使っているので実験してみました。

同様のエラーメッセージを確認しました。

どうやらWin32 APIのMessageBox関数と.NET FrameworkのSystem::Windows::Forms::MessageBox::Show関数との区別がコンパイラではできないみたいですね。

私はcppファイル側には.NETのコードを書かないので分かりませんが解決策はないと思います。

.NETを使う場合にアプリケーションの終了処理を書きたいなら、
Form1.hのDispose関数にMessageBoxコードを実装する方が正しいのかな?と思います。
    • good
    • 0

プロジェクトを、どれで作りました?


「.NET/Windowsフォームアプリケーション」で作りましたが、何もしなくても表示されますよ?

この回答への補足

ヘッダでインラインで書かずに、
ソースファイルのほうでやってみてください。

補足日時:2003/09/10 23:16
    • good
    • 0

>文字列をUnicodeに変換する簡単な仕組みは


>VC++.NETにはついていないでしょうか?(^^;

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …
これで解決する?

この回答への補足

MessageBox::Show(System::Text::Encoding::GetEncoding("Hello"));
とやってもやはり、コンパイルエラーは出るようです。。。

補足日時:2003/09/09 23:16
    • good
    • 0

 サフィックスAは、Ansiの意味で、Ansi文字を使う時に付加されます。

渡している文字列をUnicodeに変換してから呼び出してみてください。
 それか、明示的にサフィックスAをつけた、Ansi文字列を処理する関数を追加します。

 私はC#やVB.NETから呼び出すためのラッパークラスを作るために利用しただけなので詳しくは読んでいませんが、MSDNに書いてあります。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
今の所、ソースに#undef MessageBoxといれると
コンパイルが通ることがわかりました。
文字列をUnicodeに変換する簡単な仕組みは
VC++.NETにはついていないでしょうか?(^^;

お礼日時:2003/09/08 23:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!