Home>>Visual C++>>文字表示 LastUpdate:2009-01-21
文字表示の基礎
ここでは「Hello World」のVisual C++版を解説します。
C/C++だとprintfやcoutだったと思いますが、
Visual C++でも決まった文字出力用の関数があります。
主に使うのは2つだけなので憶えてしまいましょう。
デバイスコンテキストに文字を表示するのは「TextOut」、
Edit Controlに文字を表示するのは「SetWindowText」です。
なおサンプルアプリでは、
「TextOutW」や「SetWindowTextW」といった「W」がつく関数を使っています。
文字の入力も「"Hello World"」ではなく、「_T("Hello World")」としています。
これは文字列をUnicodeとして扱うためで、管理人の癖です。
ただ世の中的にUnicode化は進んでいるので、
「W」と「_T」には慣れておいた方がいいと思います。
ダイアログベースでHello World
※シングルドキュメントでHelloWorldはイベントハンドラ、Doc-Viewを読んで下さい。
ダイアログベースで文字を表示するには大きく分けて4つの方法があります。
@ダイアログ全体のデバイスコンテキストに表示
AEdit Controlに表示
BPicture Control内のデバイスコンテキストに表示
CStatic Textで静的な文字を表示
まずCのStaticテキストは文字列が変化しないところに使います。
下のアプリでは「@ダイアログ全体〜」等の表示はStatic Textで表示しています。
Static Textのコントロールをツールバーからドラッグし、プロパティで文字列を変更すればOKです。
イベントハンドラ関数から動的な文字表示をする方法は@-Bです。
この3つについて下のアプリを使って簡単に説明します。
(ソースファイルはサンプルコードのString1.zipにまとめています。)

上のアプリでは、Edit Control(中段)には「CEdit」型(Controlタイプ)の「m_edit」、
Picture Control(下段)には「CStatic」型の「m_pict」というメンバ変数を設定しています。
(コントロールのメンバ変数設定については「コントロール」を参照して下さい。)
またButton1、Button2、Button3に対応するイベントハンドラ関数は
それぞれ下のようになります。
Button1のイベントハンドラでは、
ダイアログ全体領域のデバイスコンテキスト(pDC)を取得し、
TextOutを使って文字を出力しています。
115,40という数字は、ダイアログ左上頂点からのx座標、y座標です。
Button2のイベントハンドラでは、
m_editのメンバ関数SetWindowTextを使って文字列を表示させています。
Button3のイベントハンドラでは、
m_pictのデバイスコンテキスト(pDC)を取得し、
TextOutを使って文字を出力しています。
2,2という数字は、Edit Controlの左上頂点からのx座標、y座標です。
このプログラムを実際に実行しそれぞれのボタンを押すと、
以下のように正しくHello Worldの表示が行われます。

Button1、Button3の背景が白くなってかっこわるいと思う人は、
TextOutの行の前に以下のコードを追加しましょう。
「pDC.SetBkColor(RGB(236,233,216));」
これで「Hello World」の背景が周囲のグレイと同じになるはずです。
※SetBkColorはデバイスコンテキストの背景色を変えるAPI。文字の色はSetTextColorで変える。
※RGB(r,g,b)は色の指定。rが赤(Red)、gが緑(Green)、bが青(Blue)の強さで、0〜255の数字が入る。