PAINTSTRUCT ps;
HDC hdc;
RECT rct={200,200,200,200};
char *szStr = "あけまして\n\tおめでとう";
switch (msg) {
case WM_PAINT:
GetClientRect(hWnd, &rct);
hdc = BeginPaint(hWnd, &ps);
DrawText(hdc, (LPCTSTR)szStr, -1, &rct, DT_CENTER | DT_WORDBREAK);
EndPaint(hWnd, &ps);
break;
のようにしているのですが文字列が表示される場所が中央上部です。
何故なのでしょう?
自分としてはど真ん中辺りから表示されるようにしているつもりなのですが
No.2ベストアンサー
- 回答日時:
回答No1.に対する補足で、
> RECT rct={200,200,200,200};
> この宣言だけでは目的の位置に文字列を表示できないのでしょうか?
と言われているので老婆心ながら…
rctって200で初期化していますがGetClientRect()で書き潰されていません?
結果としてはクライアント領域の中央を始点としてszStrは表示されますがrctの200との関係は無い様に
見えますが…
それから上記にも記載した様に文字列書き出しの始点が画面中央になっていると思いますよ。
あなたが期待している結果を実現するには、始点-文字列全体の長さ/2などを考慮しなくてはならないかも(?)
DrawText(Ex)()辺りにDT_CALC???とか何とか…実際にそのHDCで表示する場合の文字列RECTを事前に調べれたと思います(すみません記憶です)。その辺りを使って座標を修正してみては如何でしょう。
ああなるほどわかりました。
初めの時点で初期化してもGetClientRect()で消えてしまうから、ここより後で座標を指定すればいいんですね、無事解決できました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- 飛行機・空港 ミルウォーキーツールHDC大阪から伊丹空港へ乗り換え無しで行く方法はありますか? できれば、空港直通 2 2023/05/12 06:44
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- 据え置き型ゲーム機 ps+でデータをセーブしたくてもできない。 1 2022/03/23 22:15
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- ゲーム 教えてください! PS4の友達と喋れながらやる為に、PCにPSのアプリを入れて通話してようと、してる 1 2022/10/10 10:08
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELで=より左の文字を一括で...
-
エクセルでアルファベットか数...
-
VBAでの Replace関数で、ワイル...
-
Excelで指数表現しないようにす...
-
Excelで3E8を3.00E+8にしない方...
-
文字列からタブコードを取り除...
-
OnTime 使用時のプロシージャへ...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
[C言語]fputsとfprintfの違い
-
Msgboxの×が押されたとき
-
【Excel VBA】複数ある特定の文...
-
エクセルで文字列の最大値を抽...
-
MS SQLServer のSQLで文字列の...
-
16進数を10進数に簡単に変換す...
-
C#で年月を比較する
-
エクセルで文字列をtxtファイル...
-
Left関数とRight関数を合わせた...
-
VBの「As String * 128」とは?
-
Access2000 (VBA) ' & "など...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
Excelで指数表現しないようにす...
-
エクセルで文字列の最大値を抽...
-
エクセル 数値データを桁をそ...
-
エクセルで文字列をtxtファイル...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
sedなどで、特定の文字列の後の...
-
MS SQLServer のSQLで文字列の...
-
Left関数とRight関数を合わせた...
-
Msgboxの×が押されたとき
-
アクセスで特定の数字以外(複...
-
【Excel VBA】複数ある特定の文...
-
エクセルでセル内の文字列の最...
-
C#で年月を比較する
おすすめ情報