C言語でメッセージボックスを表示させる 第二章 アイコン 文字列関数 クマでもわかるC言語

2021年7月15日木曜日

C言語

t f B! P L

今回の内容

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

ここにアイコンを追加していきます。

アイコンを追加する方法

この部分に注目します。
  MessageBox(NULL , TEXT("This is メッセージボックス") ,
     TEXT("This is タイトル") , MB_OK);
ここの第四引数を見てください。MB_OKとあります。これはボタンのものです。(次の章で紹介します。)
アイコンを追加するにはこの第四引数に追加します。

MB_ICONERROR停止アイコン
MB_ICONINFORMATION情報「i」アイコン
MB_ICONWARNING警告「!」アイコン
MB_ICONQUESTION質問「?」アイコン

こんな感じになります。
例えば、情報「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;
}
成功しました:
C言語でメッセージボックスを表示させる 第二章 アイコン 文字列関数 クマでもわかるC言語

太字の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にしようと思ったのですが、それだと警告がでるようです。



今回はここまでにしたいと思います。
次回はボタンの設定と行きたいとおもいます。

このブログを検索

要望について

ブログのレイアウトやテーマについての提案をいただきました。現在qooqテーマを適応中です。 語尾を自動でつけるプログラムを作りたいという要望をいただきました。是非紹介したいですがどの言語でどのようなプログラムかなど、お問い合わせフォームで詳しく教えてください!

最近の出来事

最近の出来事
寿司打お勧め75位♪(練習モードだけど)

アンケート

Welcome!

「プログラミング独学ブログ」へようこそ。 Yakinyといいます。幅広い範囲で投稿していますので、ぜひ過去の記事も見てみてください!!コメントも大歓迎です!更新がとまってしまって申し訳ございません

お問い合わせ

名前

メール *

メッセージ *

QooQ