コンボボックスの文字 右詰め表示 – プログラミング – Home

コンボボックスの文字 右詰め表示
 
通知
すべてクリア

[解決済] コンボボックスの文字 右詰め表示


H.N@ch
 H.N@ch
(@H.N@ch)
ゲスト
結合: 19年前
投稿: 9
Topic starter  

いつもお世話になっております。
早速質問ですが、コンボボックス内に表示される文字について標準は左詰めで▼ボタンが右側に
表示されます。
これを文字右詰めで▼ボタンも右にしたいのです。
文字右詰めで▼ボタンを左はプロパティで設定することは出来るのですが、上記の設定は出来ま
せんでした。
だれか知っている方がいましたらご教授ください。
よろしくお願い致します。

OS:WIN2000 VC++.net2003


引用未解決
トピックタグ
通りすがりの名無し
 通りすがりの名無し
(@通りすがりの名無し)
ゲスト
結合: 19年前
投稿: 1
 

MFCを使っているなら、

CComboBox combo;
CEdit* edit = (CEdit*)combo.GetWindow(GW_CHILD);
edit->ModifyStyle(ES_LEFT, ES_RIGHT);

これで出来ると思います。
MFCを使わない場合でも、同じように
コンボボックスの子ウィンドウを取得して、
右詰に設定すれば出来ると思います。

MFCを使う場合は確認しましたが、
使わない場合は確認してないので後は自分でお願いします。


返信引用
H.N@ch
 H.N@ch
(@H.N@ch)
ゲスト
結合: 19年前
投稿: 9
Topic starter  

通りすがりの名無し さん回答ありがとうございます。
下記のように実施してみたのですが、うまくいきません。
何かやり方に問題があるのでしょうか?
こちらでもいろいろやって見ますが、わかる人がいましたらご教授いただきたく、よろしくお願
い致します。

プロジェクトはMFCのダイアログベースで作成しています。
ダイアログにCOMBOBOXを追加し、Control変数としてm_COMBOを設定する。
その後にOnInitDialog()に下記コードを記述しました。

CEdit* edit = (CEdit*)m_COMBO.GetWindow(GW_CHILD);
edit->ModifyStyle(ES_LEFT, ES_RIGHT)
m_COMBO.InsertString(0,TEST1);
m_COMBO.InsertString(1,TEST2);
m_COMBO.SetCurSel(0);

コンパイルは通るのですが、起動すると、文字は左詰めのままです。


返信引用
通りすがり
 通りすがり
(@通りすがり)
ゲスト
結合: 24年前
投稿: 92
 

>H.N@chさん
あなたのコードそのままで(ModifyStyleの後にセミコロン抜けてはいましたが)、
VC6.0、VC++.net2003両方で試してみましたがどちらの環境でも右詰右▼になりました
よ。
OnInitDialogで初期化した後にどこかでスタイル変更してしまっているのでは?


返信引用
agata
 agata
(@agata)
ゲスト
結合: 19年前
投稿: 1
 

もすかしてリスト内の文字も右詰したいとか?


返信引用
subaru
 subaru
(@subaru)
ゲスト
結合: 19年前
投稿: 381
 

ES_RIGHTへの動的スタイル変更はWinXPではできるみたいだけど
Win2000じゃ無理なんじゃないかな?


返信引用
通りすがり
 通りすがり
(@通りすがり)
ゲスト
結合: 24年前
投稿: 92
 

上記はXPで試していましたが、
ためしに2000にバイナリを持っていったら右詰になりませんでした。

別の方法を探すしかないのかな…


返信引用
H.N@ch
 H.N@ch
(@H.N@ch)
ゲスト
結合: 19年前
投稿: 9
Topic starter  

通りすがりさん、agataさん、subaruさん回答ありがとうございました。

セミコロン抜けていましたね。
こちらでもWinXPで試してみたらちゃんと動きました。
XPと2000ではフレームワークが異なるから無理なんでしょうかね?
メンバ調べたりしていろいろやってみているんですが、うまくいきませんね。
もう少しいろいろやってみますが、なかなか難しいかも知れませんね。
出来ない時はしょうがないので左詰で行こうと思います。

何かわかる人がいましたらアドバイスお願い致しますm(_ _)m
ということでもう少し未解決とさせてください。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

んー、等幅フォントで文字列の左側を空白で埋めておけば
なんちゃって右詰めになるっちゃなるけど (^^


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

右詰めが必須の仕様ならεπιστημηさんのもありかと思いますね。
それでは駄目というのであれば、自分でクラスから起こせば色々できるかもしれませんね。
投入する工数に見合うかというとそれは疑問ですが。


返信引用
シロート
 シロート
(@シロート)
ゲスト
結合: 19年前
投稿: 20
 

プロパティでWS_EX_RIGHTにしといて
OnInitDialogでWS_EX_LEFTに戻せば
Editは右詰めのままでつまみは右にってのができましたよ。
Win2000限定だけど…


返信引用
シロート
 シロート
(@シロート)
ゲスト
結合: 19年前
投稿: 20
 

すみません。上のXPでもできますわ。


返信引用
H.N@ch
 H.N@ch
(@H.N@ch)
ゲスト
結合: 19年前
投稿: 9
Topic starter  

επιστημηさん、PATIOさん、シロートさんありがとうございました。
シロートさんから教えていただいたやり方で、解決することができました。
まさか右詰めにしておいて、拡張ウィンドウスタイルでボタンだけを右にするなんて全然思いつ
きませんでした。
本当にありがとうございました。
また問題出たら書き込みますのでよろしくお願い致します。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました