• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WinAPIでRECT構造体の宣言について)

WinAPIでRECT構造体の宣言について

このQ&Aのポイント
  • WinAPIのRECT構造体を宣言する方法とは?
  • 文字列が表示される場所が中央上部になる理由について詳しく知りたいです。
  • ど真ん中辺りから表示されるようにする方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAKO184
  • ベストアンサー率50% (2/4)
回答No.2

回答No1.に対する補足で、 > RECT rct={200,200,200,200}; > この宣言だけでは目的の位置に文字列を表示できないのでしょうか? と言われているので老婆心ながら… rctって200で初期化していますがGetClientRect()で書き潰されていません? 結果としてはクライアント領域の中央を始点としてszStrは表示されますがrctの200との関係は無い様に 見えますが… それから上記にも記載した様に文字列書き出しの始点が画面中央になっていると思いますよ。 あなたが期待している結果を実現するには、始点-文字列全体の長さ/2などを考慮しなくてはならないかも(?) DrawText(Ex)()辺りにDT_CALC???とか何とか…実際にそのHDCで表示する場合の文字列RECTを事前に調べれたと思います(すみません記憶です)。その辺りを使って座標を修正してみては如何でしょう。

arukanoid
質問者

お礼

ああなるほどわかりました。 初めの時点で初期化してもGetClientRect()で消えてしまうから、ここより後で座標を指定すればいいんですね、無事解決できました。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#15691
noname#15691
回答No.1

ど真ん中なら DT_VCENTER も必要では? DrawText(hdc, (LPCTSTR)szStr, -1, &rct, DT_CENTER | DT_VCENTER | DT_WORDBREAK);

arukanoid
質問者

補足

回答ありがとうございます。 RECT rct={200,200,200,200}; この宣言だけでは目的の位置に文字列を表示できないのでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A