• ベストアンサー

コンボボックスの高さを変更したい。

こんにちは。 MFCでプログラムをしています。 コンボボックスを配置したのですが、高さを他のテキストボックス等を 合わせたいと思うのですがうまくいきません。 CComboBox::SetItemHeightでアイテムの高さを変更することで、コンボ ボックスの高さも変更されることは分かりました。 逆にコンボボックスのコントロールの高さが指定の高さになるように、 アイテムの高さを求めることはできないのでしょうか? もし解決方法がありましたら教えていただけないでしょうか。

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

  • ベストアンサー
回答No.1

 こんばんは。  コンボボックスの高さから、アイテムの高さを引けば、枠淵の差額が出せるので、此れを利用するのが良さそうです。  スクリーンショットを取って、MSペイントで高さを測ってみましたが、一応狙い道理の高さ調整が出来ました。  以下参考程度に。 //コンボボックスの矩形を求める RECT wrc = {0}; pComboBox->GetWindowRect(&wrc); //コンボボックスの高さと、アイテムの高さの差を取る const int blank = (wrc.bottom - wrc.top) - pComboBox->GetItemHeight(-1); //コンボボックスの高さを64で調整 pComboBox->SetItemHeight(-1, 64 - blank);

shuuden
質問者

お礼

なるほど。アイテムの高さから逆算して、それからアイテムの高さを再計算するんですね。 この方法でうまく行きました。これは思いつきませんでした。 ありがとうございました。

関連するQ&A

  • グループボックス内のコンボボックスについて

    お世話になります。 WindowsXP / VC2005 / VC++ MFC / ダイヤログベースにて開発を行っています。 グループボックス内にコンボボックスを2つ配置しています。 コンボボックスにカーソルを合わせて、マウスホイールをスクロールした際、 ボックスの中身がスクロールしないのですが、スクロールする方法をご存知でしたら教えていただけないでしょうか? グループボックス外にコンボボックスを配置した場合では、ボックスの中身がスクロールされており、 再度グループボックス内にてプロパティを変更したりと試してみたのですが、思うように行きません。 よろしくお願いいたします。

  • Access コンボボックスのリンク?

    初心者です。 宜しくお願いします。 Accessのフォームでコンボボックスを2つ配置し、 コンボボックスAで選んだアイテムによって、 コンボボックスBに表示されるアイテムを変えることは出来ますか?

  • MFCでのコンボボックスについて

    ご教授願いたくよろしくお願いします。 初歩的な質問ですみません。 何度やっても表示されません。 開発環境 OS:WindowsXP PP:VC++ 6.0 MFC 使用 質問 コンボボックスの初期値として、"F3"という文字を コンボボックスのテキストに表示させたいのです。 コンボボックスのリストから選択した項目の文字列を表示させたいのですが、できません。 コンボボックスのプロパティとしては、 タイプ:ドロップダウン オーナー描画:いいえ 初期描画で使用しているロジックとしては、 CString sss; m_cmb1.GetLBText(0, sss); m_cmb1.SetWindowText(sss); UpdateData(FALSE); ※m_cmb1は、CComboBox の変数です。 参考になるURLやロジックをお願いします!

  • エクセルのシートにコンボボックスを配置しようとしています。

    エクセルのシートにコンボボックスを配置しようとしています。 コントロールツールボックスのコンボボックスは、見た目があまりよくないところが 気になります。 ドロップダウンのボタンのデザインが角ばってることや シートのフォントと同一のフォントに設定してもちょっと違う(なぜ?)とこなど、 気にいりません。 フォームのコントロールは名前が変更できず、VBの関数がドロップ1_Change()などとなるため、 後に管理しづらそうで心配しています。 コントロールツールボックスのコンボボックスの見た目を改善する方法、または、 フォームのコントロールの名前を変更する方法がありましたら、 教えてください!!

  • ACCESSのコンボボックスについて

    ACCESSのコンボボックスに「012/015/028/125」等が設定されているて、 コンボボックスのプロパティの「入力チェック」は「はい」の設定になっております。 そういった場合、「12」と入力した場合、「012」とすることは可能でしょうか? テキストボックスの場合には、そのテキストボックスの更新後処理で Me.コード = Format(Me.コード, "000") のように記述し変更していたのですが・・・。 コンボボックスでは、「指定した値はリストにありません」と表示され、更新後処理がが実行されません。

  • コンボボックスにリストを表示させるには?

    VC++6.0でコンボボックスにリストを表示させようと思っているのですが プロパティのところのデータに追加しても表示されません ほかに設定するところはあるのでしょうか? もちろんコンボボックスは生きています。 他のhpをみて CComboBox* p = (CComboBox*)GetDlgItem(IDC_COMBO1); p->ResetContent(); p->AddString("項目2"); p->AddString("項目1"); p->AddString("項目4"); p->AddString("項目3"); も試してみたのですがうまくいきません。 よろしくお願いいたします。

  • コンボボックスのイベントについて

    OS  :WindowsXP Pro SP1 開発環境:VisualStudio .NET 2003 開発言語:C# 開発形態:Windowsアプリケーション いつもこの場にお世話になっております。 今回もよろしくお願い致します。 現在、Windowsアプリケーションを作成しており、フォームにはコンボボックスとテキストが貼り付けてあります。コンボボックスは配列になっています。 using System.Windows.Forms; public class Form1 : System.Windows.Forms.Form { 省略   private ComboBox[] cmbArray = new ComboBox[3]; } private void Form_Load(object sender, System.EventArgs e) // フォームロード {   cmbArray[0] = comboBox1;   cmbArray[1] = comboBox2;   cmbArray[2] = comboBox3; } // イベントハンドラの登録 for( int i=0 ; i<3 ; i++) {   cmbArray[i].Validated += new System.EventHandler(ComboBoxClick); } private void ComboBoxClick(object sender, System.EventArgs e) {   MessageBox.Show(((ComboBox)sender).Text); } プログラムは上記のようになっています。 ここで質問なのですが、コンボボックス内のアイテムが変更されたらすぐに発生するイベントは何なのでしょうか?ここではClickイベントを使用していますが、コンボボックス内のアイテムを変更し、そのコンボボックスからカーソルが別のコントロールに移動して初めて発生します。 いろいろとイベントを試したのですが、どれもカーソルが移動する際に発生しているようなのです。 コンボボックス内のアイテムが変更されたらすぐに発生するイベントはあるのでしょうか?どなたかご存知の方がおりましたら、どうかご教授願います。

  • コンボボックスのコントロール

    コンボボックスの書式設定について教えていただけますか? コンボボックスのコントロールの《リンクするセル》を簡単に変更する方法はありますか? コンボボックスを30コ作りたいのですが、コンボボックスをコピーすると 《リンクするセル》も同じものがコピーされてしまいます。 関数のように順番にセル番号が変化しません。 これをひとつづつ手入力をするのが大変なので こーすると早いよ! などの方法があったら教えていただけませんか? よろしくお願い致します。

  • コンボボックスのセンタリング

    初めて質問させていただきます。 VBの標準コントロールのコンボボックスを使用して 開発を進めています。 コンボボックスにはセンタリング機能というものはあるのでしょうか?テキストボックスにはTextAlignというプロパティが存在しますが・・・。 存在しないようであれば、プログラム内で数字は右詰め、文字列は左詰めという風に設定したいと思うのですが、やり方がわかりません。 どなたかご存知の方、アドバイスお願いします。

  • コンボボックスの色変更について(Access97)

    コンボボックスの色変更について(Access97) 現在Access97でプログラムを作っています。 例えば、Forms!A.Enabled = Falseの記述をすると、 そのコントロールは無効化となり、グレーアウトします。 今回はコントロールを無効化してもグレーアウトしない方法を 探しています。詳しい方からの情報をお待ちしています。