dポイントプレゼントキャンペーン実施中!

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

A 回答 (5件)

RECT rc;


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

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

お礼日時:2004/08/16 14:09

>NULLでなく領域を指定すればできるのですね



NULLでもいくのでは?


>style ^= ES_RIGHT;

ここの意味が理解できていないだけかと。
#2の方のサンプルはES_RIGHTから指定無し(左寄せ)へのサンプルです。

#define ES_LEFT 0x0000L
#define ES_CENTER 0x0001L
#define ES_RIGHT 0x0002L
なんで、ES_RIGHTを外せば、左寄せに。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/08/16 19:12

>質問の意味はクリエイトでなく例えばセンドなどで左右そろえを動的にできないかどうかという事でした



ですから、スタイルとメッセージはぜんぜん別物なんですって。


>ES_は質問の意味を明白にするためについでに書いたものでそれにこだわらなくてもいいのです

こだわるも何も、スタイルを変更するんだからSetWindowLongでGWL_STYLEなんですよ。

ES_??と、EM_??と、EN_??。
いずれもエディットボックスに関する定数ですけど、意味もなくSとかMとかNとかついているわけではありません。
Style、Message、Notifyなんですから。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/08/16 02:25

SendMessageでは対応するメッセージが無いみたいです。



SetWindowLongでウィンドウスタイルを変えてやればできますがダメですか? こんな感じで。

DWORD style = GetWindowLong(hWnd,GWL_STYLE);
style ^= ES_RIGHT;
SetWindowLong(hWnd, GWL_STYLE, style);
InvalidateRect(hWnd, NULL, TRUE); //無効領域にして再描画させないとすぐに反映されないみたい

*hWndはEditボックスのウィンドウハンドルです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/08/16 02:24

ES_???はスタイル。

メッセージではありません。
って前にも書いたような。

スタイルを変えるのはSetWindowLong()です。
ただし、動的に変更できないものもあるので
ES_RIGHTが変えられるかどうかは未確認です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/08/16 00:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!