CListCtrlでのスクロールバー – プログラミング – Home

CListCtrlでのスクロールバー
 
通知
すべてクリア

[解決済] CListCtrlでのスクロールバー


まなみ
 まなみ
(@まなみ)
ゲスト
結合: 15年前
投稿: 14
Topic starter  

お世話になります。
WindowsXP VS2008で開発しています。

ダイアログベースのアプリにリストコントロールを配置しています。
アイテムが増えてくると、右端に垂直スクロールバーが表示されます
が、このスクロールバーの幅を広くすることは可能でしょうか?
(タッチパネルのため、標準の幅では使いづらいため)

GetScrollBarCtrl()からCScrollBarを取り出し、MoveWindow()等で
幅を変更しようとしましたが、CScrollBarがNULLとなりできませんでした。

何か良い方法がないでしょうか。
宜しくお願い致します。


引用未解決
トピックタグ
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

デスクトップの「プロパティDLG」の「デザイン」の
「詳細設定」ボタンで表示される「デザインの詳細」DLGの
「指定する部分」コンボで「スクロールバー」を選択して
「サイズ」を設定する
・・・・ぢゃだめですか(^^;)。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> ぢゃだめですか(^^;)。

合理的だと思います。
このアプリに限らず、システム全般で垂直スクロールバーが使いにくいはずですから。


返信引用
まなみ
 まなみ
(@まなみ)
ゲスト
結合: 15年前
投稿: 14
Topic starter  

仲澤@失業者様
aetos様

回答ありがとうございます。

確かにプロパティで変更する方法もあるかと思いますが、
他のボタンなどのコントロールは指で押せる大きさにして
いますので、スクロールバーのみプロパティで変更と言う
のは、ちょっと...

また、「システム全般で・・・」とのことですが、
このシステムは基本タッチパネルで行いますが、
データ入力などの細かな作業はマウスを使います。
なので、このアプリだけ(このスクロールバーだけ)幅広
にしたいのです。


返信引用
bun
 bun
(@bun)
ゲスト
結合: 24年前
投稿: 761
 

仮想リストコントロールにするのはどうでしょう。
と言ってもそういう機能がある訳じゃなく、力技ですが。

やり方は、
スクロールバーはリストコントロールに頼らず、自分でリストコントロールの横
に貼り付ける。これなら、スクロールバーの太さは自在でしょ。

で、スクロールバーの位置から表示を開始するアイテムを計算して、そのアイテ
ムから順にリストコントロールに追加する。画面いっぱいまで追加したら、その
先はもう追加しない。そうすることにより、リストコントロール自体のスクロー
ルバーは常に表示されないように制御するわけ。

この仮想リストコントロールのメリットは他にもあります。
初期表示の際に全てのアイテムをリストコントロールに追加しなくていいので、
アイテム数が多いときには圧倒的に初期表示が高速になります。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

そうなると簡単な方法はありません。

タッチパネルは指を使うことを前提にしているのでしょうか(質問)。

そう仮定すると、一般にその様なシステムの場合「スクロールはさせない」
が設計の前提になっていたりします。指ではドラッグが難しいので
スクロールバーの機能の大半が使用に耐えないため、標準のスクロールバー
は使用せずページスクロール用のボタンを別途用意する仕様にしているものが、
ほとんどです。駅の自動券売機なんかはわりと良くできてます。

どうしてもクロールバーを使用したい場合は、CScrollBarをウインドウ
としてCreate()して、コントロールするしかないと思います。


返信引用
まなみ
 まなみ
(@まなみ)
ゲスト
結合: 15年前
投稿: 14
Topic starter  

> タッチパネルは指を使うことを前提にしているのでしょうか(質問)。
基本は指ですが、場合によってはペンも使用することもあり得ます。
使う側の勝手になってしまうので、断定はできません。
ですが、最低19インチワイド(1440x900)で行うので、指で十分できる
大きさです。

> ページスクロール用のボタンを別途用意する仕様にしているものが
過去にどうようなケースがあり、ボタンを使用して行ったことがあります。
この時もスクロールバーの幅を変更できないかと色々と行ったのですが
挫折しました。
なので、今回再チャレンジしようと思ったのです。

今までのレスの内容からすると、リストコントロールのスクロールバーの
幅は簡単には変更できないようですね。

今、私なりに考えている方法は、bun様の方法みたいにリストコントロールの
横に幅を広くした垂直スクロールバーを配置し、リストコントロールのスク
ロールバーとリンクするようなカラクリでいけるかなっと思っています。

どちらにせよ、スマートの方法ってないですよねぇ~


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

>今、私なりに考えている方法は、bun様の方法みたいにリストコントロールの
>横に幅を広くした垂直スクロールバーを配置し、リストコントロールのスク
>ロールバーとリンクするようなカラクリでいけるかなっと思っています。

常識的にはその通りだと思いますが、対象のアプリが、
実用性よりインタラクティブやアメニティが勝っている場合で、
「対象のCListCtrlから他のウインドウにドラッグ&ドロップはしない」
のなら、ドラッグ操作自体でウインドウをスクロールしてしまう
というのも、「あり」かもしれません(iPhoneやGoogl-EarthみたいなUI)。


返信引用
まなみ
 まなみ
(@まなみ)
ゲスト
結合: 15年前
投稿: 14
Topic starter  

みなさま、色々とありがとうございました。

スクロールバーのリンクやスクロール用のボタン等の試みはまだ行って
いませんが、リストコントロールのスクロールバー幅の変更は、
できない(難しい)とのことで、本件は解決としました。

上記の方法、どちらかを採用しようと思いますが、また、困ったときに
お尋ねするかもしれません。
その時は、宜しくお願い致します。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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