文字に色を付けて画面に表示する

VC++ で SetTextColor() と SetBkColor() で文字の色を設定します。

前田稔(Maeda Minoru)の超初心者のプログラム入門

前回作成したプロジェクトを開きます。

  1. Windows エクスプローラを立ち上げて、Hello プロジェクトのフォルダーを表示します。
    ファイル一覧から Hello.vcproj をダブルクリックすると、前回作成したプロジェクトが立ち上がります。
    Visual C++ Ver 6.0 を使っているときは Hello.dsw(または Hello.dsp) をダブルクリックします。
    Hello.cpp の画像
  2. WM_PAINT: に文字の色を設定するソースコードを追加します。
    行の先頭または行末で Enter をタイプすると空白行が挿入されます。
    ソースコードは英大文字と英小文字の区別をして下さい。
          case WM_PAINT:
               hdc = BeginPaint(hWnd, &ps);
               // TODO: 描画コードをここに追加してください...
               SetTextColor(hdc,RGB(255,0,0));  
               TextOut(hdc,100,20,"Hello Window!",13);
               EndPaint(hWnd, &ps);
               break;
        
  3. [デバッグ][デバッグなしで開始]を選択して、ビルドに続いて実行を行います。
    コンパイルの進行状況とエラーがあれば、エラーメッセージが表示されます。
  4. 確認が終われば[ファイル(F)][アプリケーションの終了(X)]で終了させて下さい。
    ウインドウの右上に表示されている[×ボタン]をクリックして終らせることもできます。
    また[Alt][F][X]のキーを順にタイプして終らせる方法もあります。
  5. VisualC(.Net) の終了は[ファイル(F)][終了(X)]を選びます。
    ウインドウの右上に表示されている[×ボタン]をクリックして終らせることもできます。

【演習1】

  1. 黄色の文字で表示して下さい。
  2. 好きな色で文字が表示できるように練習して下さい。
    色は RGB の組み合わせで設定します。
  3. 文字の背景色を設定するソースコードです。
    文字の色と背景色の組み合わせを考えて表示して下さい。
    SetBkColor(hdc,RGB(0,255,0));


【演習2】

  1. 文字の背景色を透明にするコードです。
    ウインドウの背景色を変えて、透明になっていることを確認して下さい。
    文字の背景色の規定値は、白が設定されています。
    SetBkMode(hdc,TRANSPARENT);
  2. ウインドウの背景をグレイにするコードです。
    wcex.hbrBackground = (HBRUSH)(HBRUSH)GetStockObject(GRAY_BRUSH);
    ウインドウの背景を黒にするコードです。
    wcex.hbrBackground = (HBRUSH)(HBRUSH)GetStockObject(BLACK_BRUSH);

【NOTE】

WM_PAINT は、例えば次のようなウインドウを描画する必要が生じたときに呼ばれます。


デバイスコンテキスト(DC)とは出力デバイスに関する情報を格納する構造体で、出力は一旦 DC に出力されて、DC からハードウエアに出力されます。
出力デバイスは装置に依存する部分が多く同じように扱うことができないので、DC を経由することにより装置の違いを吸収します。
TextOut() の説明は Hello Window! を画面に表示する を参照
    SetTextColor(hdc,RGB(255,0,0));  
    TextOut(hdc,100,20,"Hello Window!",13);
ソースコード 説明
SetTextColor 表示する文字の色を設定する関数
hdc デバイスコンテキストのハンドル
RGB( ) RGB の組み合わせで色を指定する
255,0,0 赤・緑・青の順に色の濃さを 0~255 の範囲で指定

SetTextColor() の色

0,0,0 黒色
255,0,0 赤色
0,255,0 緑色
0,0,255 青色
255,255,0 黄色
255,0,255 紫色
0,255,255 水色
255,255,255 白色

【クイズ】

現実にあったクイズのような話です。
画面に表示されているはずなのに文字が見えない?
簡単なプログラムなので、間違いようが無い。
何故文字が表示されないのでしょう?

超初心者のプログラム入門(Win32API C++)