Windowsで文字表示と言えば TextOutです。
ですが、WindowsCEでは使えないとの情報があり、試したところダメでした(:_;)
WindowsCEでカットされた APIは、代わりがある為です。
他に文字を表示する APIを調べたところ、DrawTextがあることが分かりました。
DrawTextの使い方は WindowsAPIリファレンスを見て下さい。
文字表示は WM_PAINTにて行います(意味が分からない人はソースを WM_PAINTで検索して下さい)
RECT rect; rect.left=0; rect.top=0; rect.right=200; rect.bottom=40; DrawText(hdc, _T("test"), -1, &rect, DT_LEFT);通常の Windowsと違う所は、文字列を直接書けないところですね。
必ず _T("文字列")と記述しなければなりません。
他の関数でも言える事ですので、覚えておきましょう。
文字が表示できなければ何も始まらないので、別のサンプルも書いておきます。
変数に代入して表示する方法です。RECT rect; TCHAR tchar[256]; rect.left=0; rect.top=0; rect.right=200; rect.bottom=40; strcpy((char*)tchar, "test"); DrawText(hdc, tchar, -1, &rect, DT_LEFT);但し、元の文字列が char型の場合は、TCHAR型へ変換する必要があります。
char s[256]; RECT rect; TCHAR tchar[512]; strcpy(s, "testes"); rect.left=0; rect.top=0; rect.right=200; rect.bottom=40; MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED,s,strlen(s) + 1,tchar,sizeof(tchar)); DrawText(hdc, tchar, -1, &rect, DT_LEFT);ここで注意点です。
MultiByteToWideChar関数の元の文字列長の記述 strlen(s)+1となっているのは、strlen関数は末端の '\0'を省いた長さを返す為です。
この +1を記述しないと、コンバートされた文字列の末端に '\0'が入りません(ハマりそうになりました)
それから、charは 1バイト表記、TCHARは 2バイト表記ですので、単純計算で charの倍のサイズを TCHARに確保しておく必要があります。