今回の内容
前回の続きです。今回の記事ではメッセージボックスのアイコンを追加したいと思います。
さらに、メッセージボックスに表示させたい文字への代入や、文字列関数などについても紹介します。
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 件のコメント:
コメントを投稿