...

1 第8回 文字列の書式 1 フォントの指定 [サンプル(WndProc 関数の一

by user

on
Category: Documents
5

views

Report

Comments

Transcript

1 第8回 文字列の書式 1 フォントの指定 [サンプル(WndProc 関数の一
第8回 プログラミング基礎(2008/6/12)
第8回
1
文字列の書式
フォントの指定
[サンプル(WndProc 関数の一部)]
赤:関数 / 青:変数
POINTS mcur;
HFONT hFont;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
char Strng[100] = "";
switch( message )
{
case WM_CREATE:
hFont = CreateFont( 24, 0, 0, 0, 400, FALSE, FALSE, FALSE,
SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_DONTCARE,
"MS P明朝");
break;
case WM_LBUTTONUP:
mcur = MAKEPOINTS( lParam );
InvalidateRect( hWnd, NULL, TRUE );
break;
case WM_PAINT:
hDC = BeginPaint( hWnd, &ps );
SelectObject( hDC, hFont );
SetTextColor( hDC, RGB(255,0,0) );
wsprintf( Strng, "%d x %d", mcur.x, mcur.y );
TextOut( hDC, mcur.x, mcur.y, Strng, strlen(Strng) );
EndPaint( hWnd, &ps );
break;
case WM_DESTROY:
DeleteObject( hFont );
PostQuitMessage( 0 );
break;
1
第8回 プログラミング基礎(2008/6/12)
◇ フォント指定の流れ:
① CreateFont 関数:
フォントの作成
② SelectObject 関数: フォントの指定
③ DeleteObject 関数: フォントの破棄
◇ CreateFont 関数: フォントの作成
返り値 = CreateFont( ①, ② , ③, ④, ⑤, ⑥, ⑦, ⑧, ⑨, ⑩, ⑪, ⑫, ⑬, ⑭ );
返り値:
フォント・ハンドル
引数①:
フォントの高さ (0 = デフォルトの高さ)
引数②:
フォントの平均の幅 (0 = デフォルトの幅)
引数③:
X軸に対する文字送りの方向 (1/10 度単位)
引数④:
X軸に対する各文字の傾き (1/10 度単位)
同じ値に設定
③と④で「200」を設定した場合 ... 傾き 20°
引数⑤:
フォントの太さ (0~900)
引数⑥:
TRUE = イタリック体
引数⑦:
TRUE = 下線付き
引数⑧:
TRUE = 打消し線付き
引数⑨:
文字セット (通常、SHIFTJIS_CHARSET)
引数⑩:
出力精度 (通常、OUT_DEFAULT_PRECIS)
引数⑪:
クリッピング精度 (通常、CLIP_DEFAULT_PRECIS)
引数⑫:
出力品質 (通常、DEFAULT_QUALITY)
引数⑬:
文字間隔と文字書体
[文字間隔]
DEFAULT_PITCH
= デフォルト
FIXED_PITCH
= 固定幅
VARIABLE_PITCH = 可変幅
[文字書体]
FF_DONTCARE
= デフォルト
FF_MODERN
= ゴシック体
FF_ROMAN
= 明朝体
※ 文字間隔と文字書体の設定は、フォント名が「NULL」のときのみ有効
※ フォント名を指定した場合は、フォント名に対応した文字間隔・文字書体を使用
引数⑭:
フォント名
MS ゴシック
MS 明朝
2
MS Pゴシック
MS P明朝
第8回 プログラミング基礎(2008/6/12)
◇ WM_CREATE メッセージ:
ウィンドウが作成されたときに送られるメッセージ
◇ SelectObject 関数: フォントの指定
SelectObject( デバイスコンテキスト・ハンドル, フォント・ハンドル );
TextOut 関数で文字列を描画する際に使用するフォントを設定する。
◇ SetTextColor 関数: 文字色の指定
SetTextColor( デバイスコンテキスト・ハンドル, RGB( 赤の強さ, 緑の強さ, 青の強さ ) );
TextOut 関数で文字列を描画するときの文字色を設定する。
◇ DeleteObject 関数: フォントの破棄
DeleteObject( フォント・ハンドル );
メモリ上からフォント情報を削除する。
2
改行を含む文字列の表示
[サンプル(WndProc 関数の一部)]
赤:関数 / 青:変数
RECT rc;
・・・
case WM_PAINT:
hDC = BeginPaint( hWnd, &ps );
SelectObject( hDC, hFont );
SetTextColor( hDC, RGB(255,0,0) );
wsprintf( Strng, "%d x %d", mcur.x, mcur.y );
TextOut( hDC, mcur.x, mcur.y, Strng, strlen(Strng) );
rc.left
= 100;
rc.right
= 300;
rc.top
= 100;
rc.bottom = 400;
wsprintf( Strng, "Lecture\nof\nProgramming" );
DrawText( hDC, Strng, -1, &rc, DT_CENTER );
EndPaint( hWnd, &ps );
break;
3
第8回 プログラミング基礎(2008/6/12)
◇ DrawText 関数: 指定領域内への文字列の描画 (改行も可能)
DrawText( ①, ②, ③, ④, ⑤ );
引数①:
デバイスコンテキスト・ハンドル
引数②:
文字列 (改行コード「\n」を含む文字列が可能)
引数③:
文字数 (-1 = すべての文字を表示)
引数④:
文字列を表示する領域 (RECT 構造体で指定)
引数⑤:
オプションの書式
DT_LEFT
= 左揃え
DT_CENTER
= 中央揃え
DT_RIGHT
= 右揃え
◇ RECT 構造体: 長方形領域の位置と大きさ
LONG
left
左上のX座標[pixel]
LONG
top
左上のY座標[pixel]
LONG
right
右下のX座標[pixel]
LONG
bottom
右下のY座標[pixel]
4
Fly UP