問題タブ [clistctrl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mfc - CListCtrl で別の列項目をクリックすると複数選択が失われる
- スクリーンショットをご覧ください(サンプルです)
- 最初の列は「名前」、2番目の列は「ステータス」の2列のリストビューがあります
- 2列目の電球をクリックすると、ステータスが「オン」と「オフ」の間で変更されます
- 現在、複数選択機能を実装する必要があります。ctrl または shift を使用して複数の行を選択し、それらのいずれかの「電球」をクリックして、選択したすべてのアイテムのステータスを切り替えます。
問題は:
「電球」をクリックすると、選択したマルチが失われます。API GetSelectedCount を使用すると、0 が返されることを意味します。
私の調査:
「電球」をクリックすると、アイテム変更に関するイベントがトリガーされます。OnItemChanged イベントは OnClick イベントの前にトリガーされます (そのため、API GetSelectedCount はイベント OnClock で 0 を返します)。イベント OnItemChanged で複数選択されたアイテムをキャッシュしたかったのですが、すべてのアイテムが OnItemChanged イベントを 1 回トリガーするため失敗しました。
例: リスト ビューで 3 つの項目を複数選択し、3 番目の項目の「電球」をクリックすると、イベント OnItemChanged が 3 回トリガーされ、3 つの項目が選択解除されたことを通知します。そのため、(電球をクリック) の OnClick イベントでは、以前の操作でどの項目が選択されていたのかわかりません。
さらに、「電球」をクリックした後も複数選択を維持したいです。
どんな助けでも大歓迎ですか?
ON_NOTIFY_REFLECT(LVN_ITEMCHANGED, OnItemChanged)
ON_NOTIFY_REFLECT_EX(NM_CLICK, オンクリック)
void CListCtrl::OnItemChanged( NMHDR* pNMHDR, LRESULT* pResult ) {......}
BOOL CListCtrl::OnClick(NMHDR* pNMHDR, LRESULT* pResult) {......}
c++ - スムーズなスクロール アニメーションを作成するにはどうすればよいですか?
私CListCtrl
は約100,000以上のエントリを持っています。ユーザーには、これらのエントリを検索するための検索ボックスが表示されます。一致するものが見つかったら、それを選択範囲として設定し、 を使用してスクロールしEnsureVisible
ます。
このスクロールは瞬時に行われます。私は、ここでデモされているものに似たアニメーション(特に「Go Top - Easing 2」アニメーション) をコーディングしてみたかったのです。
私は、基本的なアニメーションについて、
- 現在の選択を取得します。
- ターゲット選択を取得します。
- 差を計算します。
- 1 つのアイテムのピクセルの高さを取得します。
- 手順 3 と 4 の結果を乗算します。
Scroll
増分 = ステップ 5 の結果になるまでの遅延を伴う 1 (または他のより最適な値) の増分。
私はこれを試しましたが、信じられないほど混乱しました。まず、私のアルゴリズムは大丈夫ですか?第二に、これを達成するための別のより良い方法はありますか (できれば上記のリンクのアニメーション 2 に似ています)。
swt - SWT を使用してイメージ リスト コントロールを実装する方法は?
swt を使用してイメージ リスト (中程度のアイコンを使用した Windows エクスプローラーなど) コントロールを簡単に実装する方法について誰か考えがありますか? WindowsのC++ではCListCtrlで簡単にできそうですが、swtでは簡単ではないでしょうか?ヒントをいただければ幸いです。
c++ - リスト コントロールの MFC ダイアログ コンボ ボックス
テキストの列を表示するリスト コントロール (レポート ビュー) を持つダイアログ ウィンドウを作成しようとしています。最初の列の可能なアクションのリストを保持するコンボ ボックスを表示する別の列を追加しようとしています。MFCでこれを行う簡単な方法はありますか?
c++ - MFC。クラス CListCtrl。シンボルで可能な最大列幅を決定する方法は?
MFC は、クラスのインスタンスの列の最大幅を取得するためのインターフェイスを提供しますCListCtrl
か? もしそうなら、それは何ですか?ありがとう。
更新:これは、値の使用方法を示す小さなコード スニペットです。