いつもお世話になっております。
早速質問ですが、コンボボックス内に表示される文字について標準は左詰めで▼ボタンが右側に
表示されます。
これを文字右詰めで▼ボタンも右にしたいのです。
文字右詰めで▼ボタンを左はプロパティで設定することは出来るのですが、上記の設定は出来ま
せんでした。
だれか知っている方がいましたらご教授ください。
よろしくお願い致します。
OS:WIN2000 VC++.net2003
MFCを使っているなら、
CComboBox combo;
CEdit* edit = (CEdit*)combo.GetWindow(GW_CHILD);
edit->ModifyStyle(ES_LEFT, ES_RIGHT);
これで出来ると思います。
MFCを使わない場合でも、同じように
コンボボックスの子ウィンドウを取得して、
右詰に設定すれば出来ると思います。
MFCを使う場合は確認しましたが、
使わない場合は確認してないので後は自分でお願いします。
通りすがりの名無し さん回答ありがとうございます。
下記のように実施してみたのですが、うまくいきません。
何かやり方に問題があるのでしょうか?
こちらでもいろいろやって見ますが、わかる人がいましたらご教授いただきたく、よろしくお願
い致します。
プロジェクトは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);
コンパイルは通るのですが、起動すると、文字は左詰めのままです。
>H.N@chさん
あなたのコードそのままで(ModifyStyleの後にセミコロン抜けてはいましたが)、
VC6.0、VC++.net2003両方で試してみましたがどちらの環境でも右詰右▼になりました
よ。
OnInitDialogで初期化した後にどこかでスタイル変更してしまっているのでは?
もすかしてリスト内の文字も右詰したいとか?
ES_RIGHTへの動的スタイル変更はWinXPではできるみたいだけど
Win2000じゃ無理なんじゃないかな?
上記はXPで試していましたが、
ためしに2000にバイナリを持っていったら右詰になりませんでした。
別の方法を探すしかないのかな…
通りすがりさん、agataさん、subaruさん回答ありがとうございました。
セミコロン抜けていましたね。
こちらでもWinXPで試してみたらちゃんと動きました。
XPと2000ではフレームワークが異なるから無理なんでしょうかね?
メンバ調べたりしていろいろやってみているんですが、うまくいきませんね。
もう少しいろいろやってみますが、なかなか難しいかも知れませんね。
出来ない時はしょうがないので左詰で行こうと思います。
何かわかる人がいましたらアドバイスお願い致しますm(_ _)m
ということでもう少し未解決とさせてください。
んー、等幅フォントで文字列の左側を空白で埋めておけば
なんちゃって右詰めになるっちゃなるけど (^^
右詰めが必須の仕様ならεπιστημηさんのもありかと思いますね。
それでは駄目というのであれば、自分でクラスから起こせば色々できるかもしれませんね。
投入する工数に見合うかというとそれは疑問ですが。
プロパティでWS_EX_RIGHTにしといて
OnInitDialogでWS_EX_LEFTに戻せば
Editは右詰めのままでつまみは右にってのができましたよ。
Win2000限定だけど…
すみません。上のXPでもできますわ。
επιστημηさん、PATIOさん、シロートさんありがとうございました。
シロートさんから教えていただいたやり方で、解決することができました。
まさか右詰めにしておいて、拡張ウィンドウスタイルでボタンだけを右にするなんて全然思いつ
きませんでした。
本当にありがとうございました。
また問題出たら書き込みますのでよろしくお願い致します。