2007-06-27

文字列操作

昨日に引き続き WM6プログラムの勉強中。
 
参考にしているのはこの辺  
まず何も考えずに画面に文字を表示してみる。
文字列を _T()で囲む事だけ注意すれば問題なし。
void OnPaint01(HDC hdc, RECT *rect) 
{
    // 普通に出力
    DrawText(hdc, _T("普通に出力"), -1, rect, DT_CENTER | DT_VCENTER);
}
 
次に文字列変数の内容を表示してみる。
void OnPaint02(HDC hdc, RECT *rect) 
{
    _TCHAR msg[256];

    // _TCHARを出力
    _tcsncpy_s(msg, 256, _T("_TCHARを出力"), _TRUNCATE);
    DrawText(hdc, msg, _tcslen(msg), rect, DT_CENTER | DT_VCENTER);
}
 
難易度(面倒くささ)アーーップ(笑
 
最終的に書いたものを見ると大したことないのですが、これだけのものを書くのに結構あちこち調べないとダメでした。
 
これなら多少遅くてもC#で書くよ...と思っていたところ、MFC専用だと思っていたCStringがATLでも使えるとの記述を発見。
早速、atlstr.hをインクルードして実験。
void OnPaint03(HDC hdc, RECT *rect) 
{
    CString msg;

    // CStringを出力
    msg = _T("CStringを出力");
    DrawText(hdc, msg, _tcslen(msg), rect, DT_CENTER | DT_VCENTER);
}
 
お、いい感じ。
他にも便利そうなメソッドが揃っているので文字列操作はCString使うのがよさそうですね。
 
尚、ATL使うときはプロジェクトのプロパティで追加が必要なので注意が必要。
 

0 件のコメント: