今回の内容
前回の続きです。今回の記事ではメッセージボックスのアイコンを追加したいと思います。
さらに、メッセージボックスに表示させたい文字への代入や、文字列関数などについても紹介します。
C言語は、PythonやC#などと違い結構深いので、理解しながら読み進めるようにしましょう。
前回までのコード
#include <windows.h>
int WINAPI WinMain(
HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
PSTR lpCmdLine ,
int nCmdShow ) {
MessageBox(NULL , TEXT("This is メッセージボックス") ,
TEXT("This is タイトル") , MB_OK);
return 0;
}
ここにアイコンを追加していきます。
アイコンを追加する方法
この部分に注目します。 MessageBox(NULL , TEXT("This is メッセージボックス") ,
TEXT("This is タイトル") , MB_OK);
ここの第四引数を見てください。MB_OKとあります。これはボタンのものです。(次の章で紹介します。)アイコンを追加するにはこの第四引数に追加します。
こんな感じになります。
例えば、情報「i」アイコンを表示させるには以下のようにします。
#include <windows.h>
int WINAPI WinMain(
HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
PSTR lpCmdLine ,
int nCmdShow ) {
MessageBox(NULL , TEXT("This is メッセージボックス") ,
TEXT("This is タイトル") , MB_OK | MB_ICONINFORMATION);
return 0;
}
成功しました:
太字のMB_ICONINFORMATIONが追加されています。
クマでもわかるようにいえば、第四引数は ボタンの設定 | アイコンの設定 というふうにすると覚えます。(本当は違うけど)
表示させたい文字列への変数の代入
どゆこと?と最初みたときは思うかもしれません。どういうことかというと、例えば、printf関数で出力するときって、
「xの値は○○です」と出力させたいときにこんな感じで入れるじゃないですか。
int x = 10;
printf("xの値は%dです。",x);
こんな感じで変数を入れたいときはMessageBoxのときもできるのかということです。結論はできます。ある関数を使います。
#include <windows.h>
int WINAPI WinMain(
HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
PSTR lpCmdLine ,
int nCmdShow ) {
CHAR chStr[128];
int x = 10;
wsprintf (chStr,"xの値は%dです。",x)
MessageBox(NULL , chStr ,
TEXT("This is タイトル") , MB_OK | MB_ICONINFORMATION);
return 0;
}
成功しました:wsprintfの使い方ですが、まずが例としてchStrという変数をつくるとします。それの型はCHARというものです。
んで、wsprintfの第一引数にはその作成した変数を入力します。だから、サンプルコードではchStrを第一引数にしているわけです。
そして、第二引数からはprintf関数と同じようにします。 それが完了したらMessageBox関数などにそのまま置くことができます。
文字列関数
どゆこと?と思う人がいるかもしれません。
これはたとえば、printfに変数の文字列をいれたいときって、こんな感じでかくでしょう。
char *text = "ABC";
printf("%s",text)
そういうことがMessageBox関数でもできないかということです。結論は、できます。TCHARという型を使えば簡単に実現することができます。
やってみます。
#include <windows.h>
int WINAPI WinMain(
HINSTANCE hInstance ,
HINSTANCE hPrevInstance ,
PSTR lpCmdLine ,
int nCmdShow ) {
CHAR string[] = TEXT("ABCDEF");
MessageBox(NULL , string ,
TEXT("This is タイトル") , MB_OK | MB_ICONINFORMATION);
return 0;
}
できました。CHAR *stringにしようと思ったのですが、それだと警告がでるようです。今回はここまでにしたいと思います。
次回はボタンの設定と行きたいとおもいます。



0 件のコメント:
コメントを投稿