お世話になります。
WindowsXP VS2008で開発しています。
ダイアログベースのアプリにリストコントロールを配置しています。
アイテムが増えてくると、右端に垂直スクロールバーが表示されます
が、このスクロールバーの幅を広くすることは可能でしょうか?
(タッチパネルのため、標準の幅では使いづらいため)
GetScrollBarCtrl()からCScrollBarを取り出し、MoveWindow()等で
幅を変更しようとしましたが、CScrollBarがNULLとなりできませんでした。
何か良い方法がないでしょうか。
宜しくお願い致します。
デスクトップの「プロパティDLG」の「デザイン」の
「詳細設定」ボタンで表示される「デザインの詳細」DLGの
「指定する部分」コンボで「スクロールバー」を選択して
「サイズ」を設定する
・・・・ぢゃだめですか(^^;)。
> ぢゃだめですか(^^;)。
合理的だと思います。
このアプリに限らず、システム全般で垂直スクロールバーが使いにくいはずですから。
仲澤@失業者様
aetos様
回答ありがとうございます。
確かにプロパティで変更する方法もあるかと思いますが、
他のボタンなどのコントロールは指で押せる大きさにして
いますので、スクロールバーのみプロパティで変更と言う
のは、ちょっと...
また、「システム全般で・・・」とのことですが、
このシステムは基本タッチパネルで行いますが、
データ入力などの細かな作業はマウスを使います。
なので、このアプリだけ(このスクロールバーだけ)幅広
にしたいのです。
仮想リストコントロールにするのはどうでしょう。
と言ってもそういう機能がある訳じゃなく、力技ですが。
やり方は、
スクロールバーはリストコントロールに頼らず、自分でリストコントロールの横
に貼り付ける。これなら、スクロールバーの太さは自在でしょ。
で、スクロールバーの位置から表示を開始するアイテムを計算して、そのアイテ
ムから順にリストコントロールに追加する。画面いっぱいまで追加したら、その
先はもう追加しない。そうすることにより、リストコントロール自体のスクロー
ルバーは常に表示されないように制御するわけ。
この仮想リストコントロールのメリットは他にもあります。
初期表示の際に全てのアイテムをリストコントロールに追加しなくていいので、
アイテム数が多いときには圧倒的に初期表示が高速になります。
そうなると簡単な方法はありません。
タッチパネルは指を使うことを前提にしているのでしょうか(質問)。
そう仮定すると、一般にその様なシステムの場合「スクロールはさせない」
が設計の前提になっていたりします。指ではドラッグが難しいので
スクロールバーの機能の大半が使用に耐えないため、標準のスクロールバー
は使用せずページスクロール用のボタンを別途用意する仕様にしているものが、
ほとんどです。駅の自動券売機なんかはわりと良くできてます。
どうしてもクロールバーを使用したい場合は、CScrollBarをウインドウ
としてCreate()して、コントロールするしかないと思います。
> タッチパネルは指を使うことを前提にしているのでしょうか(質問)。
基本は指ですが、場合によってはペンも使用することもあり得ます。
使う側の勝手になってしまうので、断定はできません。
ですが、最低19インチワイド(1440x900)で行うので、指で十分できる
大きさです。
> ページスクロール用のボタンを別途用意する仕様にしているものが
過去にどうようなケースがあり、ボタンを使用して行ったことがあります。
この時もスクロールバーの幅を変更できないかと色々と行ったのですが
挫折しました。
なので、今回再チャレンジしようと思ったのです。
今までのレスの内容からすると、リストコントロールのスクロールバーの
幅は簡単には変更できないようですね。
今、私なりに考えている方法は、bun様の方法みたいにリストコントロールの
横に幅を広くした垂直スクロールバーを配置し、リストコントロールのスク
ロールバーとリンクするようなカラクリでいけるかなっと思っています。
どちらにせよ、スマートの方法ってないですよねぇ~
>今、私なりに考えている方法は、bun様の方法みたいにリストコントロールの
>横に幅を広くした垂直スクロールバーを配置し、リストコントロールのスク
>ロールバーとリンクするようなカラクリでいけるかなっと思っています。
常識的にはその通りだと思いますが、対象のアプリが、
実用性よりインタラクティブやアメニティが勝っている場合で、
「対象のCListCtrlから他のウインドウにドラッグ&ドロップはしない」
のなら、ドラッグ操作自体でウインドウをスクロールしてしまう
というのも、「あり」かもしれません(iPhoneやGoogl-EarthみたいなUI)。
みなさま、色々とありがとうございました。
スクロールバーのリンクやスクロール用のボタン等の試みはまだ行って
いませんが、リストコントロールのスクロールバー幅の変更は、
できない(難しい)とのことで、本件は解決としました。
上記の方法、どちらかを採用しようと思いますが、また、困ったときに
お尋ねするかもしれません。
その時は、宜しくお願い致します。