リストビューでフォーカス移動 – プログラミング – Home

リストビューでフォーカス移動
 
通知
すべてクリア

[解決済] リストビューでフォーカス移動


kayoppe
 kayoppe
(@kayoppe)
ゲスト
結合: 21年前
投稿: 8
Topic starter  

リストビューで→キーでフォーカスを2列目や3列目に移動したい
のですけど、1行目しかフォーカス移動できません。
どうすればいいか教えてくれませんか。

VC++6.0のMFCでやっています。
よろしくお願い致します。

<ソース>
CListCtrl& myLV = GetListCtrl();
list = &myLV;
list->SetExtendedStyle(list->GetExtendedStyle()|LVS_EX_SUBITEMIMAGES);
list->ModifyStyle(NULL,LVS_REPORT);
list->InsertColumn(0, _T(AAA), LVCFMT_LEFT,80, -1);
list->InsertColumn(1, _T(BBB), LVCFMT_LEFT, 80, -1);
list->InsertColumn(2, _T(CCC), LVCFMT_LEFT, 80, -1);
・・・・・


引用未解決
トピックタグ
...
 ...
(@...)
ゲスト
結合: 22年前
投稿: 113
 

私も最近同じようなことを実現したいと思い以下の方法で
実現させました。(ちょっと乱暴かも)

PreTranslateMessage をクラスウィザードで追加して
hWnd == リストコントロールのハンドル
message == WM_KEYDOWN,WM_KEYUP
wParam == VK_LEFT
の時に
wPram をVK_DOWNに変更します(→を↓に書き換え)
wParam = VK_DOWN

通常はその後で、return TRUE; など書きますが
この場合は記述しません。
#こんなことしちゃ本当はまずいのかも。

また、wParam = VK_DOWNの変わりに
SendMessage(WM_KEYDOWN , VK_LEFT,0);
SendMessage(WM_UP , VK_LEFT,0);
でもいけるかもしれません。(たぶん)


返信引用
...
 ...
(@...)
ゲスト
結合: 22年前
投稿: 113
 

ごめんなさい。質問 読み違えてました。
無視してください。
→で行移動してしまいます。


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

リストコントロールのレポート形式の画面だけを見ていると
何で出来ないんだろうという考えにいたるのだと思いますが、
リストコントロールの大きいアイコン形式の表示をみれば、
もともとリストコントロールがそういうものではないという事が見えてくると
思います。
リストコントロールのレポート形式の表示ではカラム位置の変更していない標準の状態で、
一番左の列がアイテムの実体で以降の列は全てそのアイテムの説明という位置付けです。
ですから、アイテムの説明である部分はあくまでもアイテムの付属物でしかないというの
が、本来の姿です。
Explorerの詳細表示でファイル名しか選択できないのと同じと考えてください。

フォーカスが実際にそこにあるわけではないけれど描画上そこにあるかのように描画する
事は出来なくはないと思いますが、そのためにはオーナー描画を行い、何から何まで自分
で描画する必要が有ります。(かつ、選択されているサブアイテムの管理も自前で行う必
要があります。)

各列ごとに選択したり編集したりしたいのであれば、リストコントロールではなくて
グリッドコントロール等のセルをサポートしたコントロールを使ってプログラミング
した方が良いと思います。


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

kayoppeさんのいう「フォーカス」が、
何行目、何列目にあるのかという情報を独自に管理し、
見た目はカスタムドローを使えば、
オーナードローよりは「比較的」簡単になるのではないかと思います。

いずれにせよ、標準のインタフェースにはありませんから、
「そう動いているようにみせかける」レベルでしか実現できないですね。


返信引用
kayoppe
 kayoppe
(@kayoppe)
ゲスト
結合: 21年前
投稿: 8
Topic starter  

リストビューで2列目にフォーカスを移動させることは
かなり難しいということがわかりました。
リストに表示させたいだけなので、LineToなどで直接リスト
を書くようにします。

ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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