ライブラリなどを使用していると、戻り値にエラーコードを返す関数は比較的多いです。
GetLastError関数(最新のエラーコードを取得する関数)がライブラリに含まれていることもありますが、そうでない場合画面上になんのエラーが発生したか確認したい場合があると思います。
その場合に役に立つのがMessageBox()です。
今回はint型のエラーコードを受け取り、CString型の文字列変数に挿入し、MessageBoxを表示させてみましょう。
ソースコード
今回は全然難しくありません。
早速ソースコードを確認してみましょう。
1 2 3 4 |
int errorCode = -1; CString errorDisplay; errorDisplay.Format(_T("エラー発生!\nerror code : %d"), errorCode); AfxMessageBox(errorDisplay); |
CString::Format()を使うことでコンソールアプリケーションのprintf()のように変数を格納させることができます。
エラーコードの表示以外にも開発途中で画像のサイズや解像度などを一時的に表示させたいといった場合にもすぐに使うことができます。
関連リンク:CStringT::Format | msdn
書式指定
C++を使ってプログラミングしているとprintf()をあまり使わなくなってくるので、%dや%sなど書式指定を忘れてしまうこともあるのではないでしょうか。
よく使うような書式指定をいかにまとめます。
%c / %C | 1バイト文字、もしくはワイド文字を指定します。 プロジェクトの文字セットや文字型(char_t/wchar_t)に注意が必要です。 |
---|---|
%d / %i | 符号付き10進整数を指定します。 エラーコードをint型で返す関数は多いので、最も使用率が高くなるでしょうか。 |
%x / %X | 符号なし16進整数を指定します。 小文字の場合は”abcdef”, 大文字の場合は”ABCDEF”が使用されます。 |
%f | 浮動小数点数を指定します。 画像サイズなどを計算する場合double型として計算されることも多いので、 一時的に表示させたい場合に利用することになるでしょう。 |
%s / %S | 1バイト文字の文字列、もしくはワイド文字の文字列を指定します。 %c / %Cと同様にプロジェクトの文字セットや文字型(CStringT / CStringA)に注意が必要となります。 |
まとめ
実際にエラーコードの出力などをする場合は、どこから呼び出されたのか、そのエラーコードは何を意味するのかを記述することも多いと思いますが、ドキュメントなどを確認しながら何番のエラーコードが返っているか知りたい場合には活用の機会が多いです。
実際に活用する場合はインライン関数などを作成し、エラー表示をさせる関数を用意すると使い勝手もよくなるのではないでしょうか。