• 締切済み

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

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

  • y3k
  • お礼率90% (48/53)

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

グループボックスの Visibleプロパティは Trueがデフォルトだと思います グループボックスを非表示になさっているのでしょうか?

y3k
質問者

お礼

申し訳ありません。記載ミスでした。 VisibleプロパティはTrueで、DisabledプロパティがFalseです。 どちらか一方のTrue、Falseを反転すると、マウスホイールによる コンボボックスのスクロールが可能となりますので、現在は 暫定的にDisabledプロパティをTrueにして作業しております。

y3k
質問者

補足

自宅PC(VC2005 Standard)でデバッグしたところ当該事象が起こり、 会社PC(VC2005 Professional)では当該事象は起こりませんでした。 どちらも共通のソリューションからデバッグしています。 また、一方のPCで作ったエグゼを他方のPCで動作するか確認予定です。 (お礼記載後に補足いたしました)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

コンボボックスの親は何なのでしょう グループボックスですか? ダイアログですか? タブオーダーはどのような順なのでしょう コンボボックス1 > コンボボックス2 > グループボックス といった順なら グループボックス > コンボボックス1 > コンボボックス2 といった順序に直しましょう ダイアログエディタを起動して CTRL+D または 書式 > タブオーダー でタブオーダーを変更して リビルドしてみましょう

y3k
質問者

お礼

再度ご回答ありがとうございます。 コンボボックスの親は特に意識していませんでしたが、ダイヤログだと思います。 その方法として合っているかわからず申し訳ありませんが、 グループボックス内と外のコントロールに対して、GetParent()を行ったところ、 戻り値のアドレスがどちらも同じアドレスをさしていたため、そう判断しました。 タブオーダーに関してですが、一点記載漏れがあり、グループボックス内には2つのラベルがあります。 順序としては、グループボックス>ラベル1>コンボボックス1>ラベル2>コンボボックス2 となっておりましたので、念のため以下のように変更しましたが、特に変わりませんでした。 グループボックス>コンボボックス1>コンボボックス2>ラベル1>ラベル2

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

フォーカスがあたっていないだけなのでは無いですか? CDialogクラスの WM_MOUSEWHEELメッセージのハンドラで CRect rc; CWnd* pWnd; // コンボボックスを取得 pWnd = GetDlgItem( IDC_COMBO1 ); // 位置+大きさを取得 pWnd->GetWindowRect( &rc ); // ダイアログ座標に変換 ScreenToClient( &rc ); // 引数の ptもダイアログ座標に変換 ScreenToClient( &pt ); // Ptが コンボボックスの中なら フォーカス設定する if ( rc.PtInRect( pt ) ) {   pWnd->SetFocus(); }

y3k
質問者

お礼

早速のご回答ありがとうございます。やはり思うように行きません。 ご指摘のとおりコンボボックスに対してフォーカスは当たっておらず、 ソースコードを引用することによりフォーカスは当たるようになりましたが、 状況は変化しませんでした(キーボードの↑キー、↓キーなどでは選択可能)。 現状、グループボックスのDisabledとVisibleプロパティはFalseとなっており、 どちらか一方をTrueにしますと、スクロールは可能になりますが、本末転倒です。 WM_MOUSEWHEELメッセージのハンドラでコンボボックスの値を変更するような コードの追加が必要となるのでしょうか。

関連するQ&A

  • ActiveXコントロールのコンボボックスについて

    あるシートに、ActiveXコントロールのコンボボックスを1つ作成し、 別なシートからコンボボックスの中身を取り出すような形にしました。 コンボボックスの中身は  [****]AAAA   ※*は半角数字、AAAは全角で漢字やひらがな交じり。*は4文字。Aは最大16文字 というような形になっています。 コンボボックスの中身は、場合によって違い、最小3個、最大17個になります。 質問1:コンボボックス内の表示がAの部分の4文字までで切れてしまいます。      これが表示の限界なのでしょうか?      全て表示させることはできないのでしょうか? 質問2:コンボボックスの中身が多くなると、垂直スクロールバーが表示されますが、      これがマウスのホイールスクロールと連動しません。      連動させることは出来ないのでしょうか?

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

    環境はWIN98 VC++6.0 MFCです。 コンボボックスを初めて使うのですが、コンボボックスに何かを記入し、コマンドボタンを押すとコンボボックスのプルダウンのリストの中に追加されるようにするにはどうすれば良いですか? 具体的なコードなり参考サイトを教えてください。

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

    Visual Strudio 2008、.NetFramwork 3.5 で開発をしています 今はプロトタイプなので2008で作成していますが、本番ではVisualStudio 2010を使う予定です VisualStudioの中のVBで、Windowsフォームの画面の開発をしています そこでコンボボックスで質問なのですが、 コンボボックスのタイプは「DropDownList」でユーザーさんが値の追加を出来ないようにしています コンボボックスで文字を入力した場合、その場所にカーソルがいくようにと思っています コンボボックスで文字を入力した場合、候補を1文字目だけでなく2文字目でも絞れるようにしたいのです 中身が BN:バナナ AP:りんごSB:いちご PI:パパイヤ PA:パイナップル とあった場合、 「P」と入力したら、PIの場所に来るのですが、「PA」と入力すると、AのAPの場所にカーソルが 来てしまいます 「PA」と入力したら、PAの場所にカーソルがきてほしいのですが・・・可能なのでしょうか よろしくお願いします

  • コンボボックスの拡張

    MFCのコンボボックス機能の拡張について質問です。 コンボボックスを「EnableWindow( FALSE )」で使用不可にした際に、 通常は、ボックス内に表示されている文字色がグレーになり、 カーソルでの範囲選択も不可になりますが、 文字色を黒のままにし、カーソルで範囲選択(コピー操作も可)が可能になるような プログラムを作成したいのです。 ヒントとして得た情報としては、 ・CEditクラスが関係 ・メッセージマップ横取り がありますが、情報が少なすぎて手が付けられない状態です。。 もし知識のある方おられましたら、具体的な解決策などご教授頂けないでしょうか。 開発環境は、VC++2005です。 どうか宜しくお願い致します。

  • コンボボックスのマウスホイールを無効にしたい

    DataGridView内にコンボボックスを設定しております。 マウスのホイールボタンは、DataGridViewの縦スクロールに 使いたいのですが、DataGridView内のコンボボックスに カーソルがある場合、コンボボックス内のデータが変わってしまいます。 ユーザー側と打ち合わせた結果、コンボボックスにカーソルが ある時に、マウスのホイールボタンを無効に出来ないかと 言われております。 色々調べてみましたが、私では分からず、教えて下さい。 (サンプルソース) Dim column1 As New DataGridViewComboBoxColumn() With DataGridView1 .Columns.Clear() .Columns.Add("Col01", "列1") With column1 .Items.AddRange(New String() {"Item01", "Item02", "Item03"}) .Name = "Col02" .HeaderText = "列2" End With .Columns.Add(column1) For i As Integer = 0 To 100 .Rows.Add() Next i End With

  • 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やロジックをお願いします!

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

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

  • 【FLASH】コンボボックスがあるとIEでスクロールできない。バグ?

    FLASH8(Win-XP)使用者です。 仕事でFLASHを作っています。 FLASHの中にコンボボックス(UI)が存在しているだけでブラウザ上でマウスホイールでのスクロールができなくなってしまい困っています。(スペースキーでのスクロールも不可) 余裕があれば試していただきたいのですが、 (1)FLASHに単純にコンボボックスを貼り付ける。 (2)SWFをHTMLに貼り付ける。 (3)IEで閲覧 (4)FLASH画像をクリック(アクティブ化) →マウスホイールでブラウザをスクロールできない! といった感じです。 ちなみにNetscape7.1なら問題ありません。 環境は、 IE6 FLASHプレイヤー8 パブリッシュは8で です。 解決策をご存知の方、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • コンボボックスのドロップダウンリストの設定

    Excelのコントロールツールボックスからコンボボックスを作成したのですが、マウスのホイールをスクロールするとドロップダウンリストがコンボボックスの頭から離れてしまいます。 フォームツールバーから作成すれば離れないのですが、VBAでリンクを設定する関係でコントロールツールボックスから作成したいのです。 離れないように設定するにはどうしたらいいのでしょうか。 教えてください。宜しくお願いいたします。

  • MFCでコンボボックスを選択不可状態にしたい

    ダイアログ上にあるコンボボックスを選択不可状態にしたいのですが、 良い方法が見つかりません。 どなたか良い方法ご存知でしたら、ご教授お願い致します。 なお、この場合の選択不可とは、 コンボボックス上でクリックしても、 プルダウンされず、何も反応しないことを指します。 またコンボボックスのTypeは、ドロップダウンにて作成しています。 開発環境は、VC++2005です。 また、当方MFC経験2ヶ月程度の初心者ですので、 なるべく分かりやすい解説いただけると幸いです。 お手数ですが、御回答お願いいたします。