• ベストアンサー

WindowsAPIで

テキストボックスを ES_RIGHT のウィンドウスタイルでクリエイトすれば文字が右そろえになりますが 文字を右そろえにしたり左そろえにしたりしたいのですが SendMessageでできないでしょうか?

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

  • ベストアンサー
noname#46712
noname#46712
回答No.4

RECT rc; GetClientRect(hwnd, &rc); SetWindowLong(hedit, GWL_STYLE, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_RIGHT); InvalidateRect(hwnd, &rc , TRUE); こんなんでどうでしょうかね。おいらにはできたよ。 (。。)v

keyguy
質問者

お礼

ありがとうございます 2つエジットボックスを作って切りかえる形にしてしまったので様相が大きく変わってテストが大変でせっかくの回答検査できなくなってしまいました しかし同じような場面が再び出てきたら使わさせていただきます NULLでなく領域を指定すればできるのですね

その他の回答 (4)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.5

>NULLでなく領域を指定すればできるのですね NULLでもいくのでは? >style ^= ES_RIGHT; ここの意味が理解できていないだけかと。 #2の方のサンプルはES_RIGHTから指定無し(左寄せ)へのサンプルです。 #define ES_LEFT 0x0000L #define ES_CENTER 0x0001L #define ES_RIGHT 0x0002L なんで、ES_RIGHTを外せば、左寄せに。

keyguy
質問者

お礼

ありがとうございます 次回やってみます

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>質問の意味はクリエイトでなく例えばセンドなどで左右そろえを動的にできないかどうかという事でした ですから、スタイルとメッセージはぜんぜん別物なんですって。 >ES_は質問の意味を明白にするためについでに書いたものでそれにこだわらなくてもいいのです こだわるも何も、スタイルを変更するんだからSetWindowLongでGWL_STYLEなんですよ。 ES_??と、EM_??と、EN_??。 いずれもエディットボックスに関する定数ですけど、意味もなくSとかMとかNとかついているわけではありません。 Style、Message、Notifyなんですから。

keyguy
質問者

お礼

ありがとうございます 動的にはSetWindowLongではうまく行きませんでした

回答No.2

SendMessageでは対応するメッセージが無いみたいです。 SetWindowLongでウィンドウスタイルを変えてやればできますがダメですか? こんな感じで。 DWORD style = GetWindowLong(hWnd,GWL_STYLE); style ^= ES_RIGHT; SetWindowLong(hWnd, GWL_STYLE, style); InvalidateRect(hWnd, NULL, TRUE); //無効領域にして再描画させないとすぐに反映されないみたい *hWndはEditボックスのウィンドウハンドルです。

keyguy
質問者

お礼

ありがとうございます どうも動的には変化しないみたいです InvalidateRectでも駄目でした

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

ES_???はスタイル。メッセージではありません。 って前にも書いたような。 スタイルを変えるのはSetWindowLong()です。 ただし、動的に変更できないものもあるので ES_RIGHTが変えられるかどうかは未確認です。

keyguy
質問者

お礼

ありがとうございます 質問の意味はクリエイトでなく例えばセンドなどで左右そろえを動的にできないかどうかという事でした ES_は質問の意味を明白にするためについでに書いたものでそれにこだわらなくてもいいのです

関連するQ&A