問題タブ [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 - ダイアログを閉じた後の CTreeCtrl 項目の取得
アプリケーションでは、ツリーで選択されたアイテムのみを処理する必要があります。Dailog に追加されたプロパティ シートで MFC CTreeCtrl を使用しています。ツリーにはフォルダーのリストが表示され、ユーザーはいくつかを選択し、ユーザーが [OK] を押すと、フォルダーを処理する必要があります。SetItemData を使用してフォルダー情報を保存します。他のすべては正常に動作しています。問題は、ユーザーが [OK] を押すと、CTreeCtrl 変数が null になるため、GetItemData を使用できないことです。ダイアログを閉じた後でも変数を使用する方法はありますか? どんな助けでも大歓迎です。
c++ - 一部の LVITEMS (ファイルまたはディレクトリ) を区別する方法は?
だから私は CListCtrl を使用して実装していPostMessage(LVN_INSERTITEM,0,(LPARAM) lvitem)
ます。そして、lvitem を区別する方法が必要です。後で lvitem を取得するときに、それがファイルかディレクトリかを判断できるようにするためです。を使用して実装する必要があるPostMessage
ため、アイテムがいつ挿入されるか正確にはわかりません。項目を動的に割り当てています (動的に割り当てられたメモリ ポインターを LVITEM 構造体の lParam 属性に格納するため、挿入後に通知を処理し、項目からアドレスを取得するメモリの割り当てを解除します)。
performance - MFC CLIstrCtrl: 仮想リスト データを一括で更新する
一度に 1 つずつではなく、仮想リスト モードの CListCtrl でデータのチャンクを更新する方法はありますか?
デフォルトでは、リストがセルのデータを必要とする場合、LVS_GETDISPINFO を介して処理します。8x8 (64) 個のセルが表示され、常に更新されているとします。これは基本的に、ハンドラーを LVS_GETDISPINFO に対して 64 回呼び出していることになります。これは予想通りの動作ですが、この関数を繰り返し呼び出すと、64 個のセルすべてに対して for ループで実行するのとは対照的に、わずかなオーバーヘッドが生じると思います。そして、これは私にとって問題です。なぜなら、私のコントロールは常に 64 個のセルすべてを更新しているからです (TCP パケット トレースのようなものを想像してみてください)。
CListCtrl はもちろんキャッシングをサポートしています (私の状況では役に立ちませんが) が、LVS_GETDISPINFO ハンドラーを何度も呼び出すにはオーバーヘッドがあると感じています。簡単な例は、データを取得する前に、データベースへのポインタが有効かどうか (null でないかどうか) を判断することです... 本質的に、このコード行は 64 回呼び出されます。ポインターを for ループして、64 個のセルのデータを取得します。また、ポインターは単純な例にすぎません。コードが必要なため、説明しない (避けられない) ことは他にもあります。
時間が重要であるため、直接継承して楽しんでいる CListCtrl の他の利点を複製するには時間がかかるため、より効率的な独自のリスト ctrl を書き直すことはできません。現在の唯一の問題は速度です。方法があれば、null で終わるセルの配列を渡して更新するハンドラーのようなものを言って、これを 1 つの関数だけで一括更新できるようにします。
あるいは、LVS_GETDISPINFO でどのセルが更新を保留しているかを知ることができるので、可能であればすべてのセルを更新し、更新全体を検証して LVS_GETDISPINFO の取得を停止することはできますか?
何か案は?前もって感謝します。
visual-c++ - MFC:ListCtrlの個々の行の色/太字を変更するにはどうすればよいですか?
MFCとVisualStudio2010C++を使用します。CListCtrlの特定の個々の行を目立たせる方法が必要です(ただし、組み込みの選択機能を使用して行を強調表示したくありません)。行の背景の色、フォントの太さ、または画像(パフォーマンスが高い場合)の場合もあります。
理想的には、ストックリストコントロールを使用してこれを行う方法を知りたいです。ただし、これが不可能な場合は、サードパーティのコードを使用する方法を教えてください。
アップデート
これが私が使用することになったコードです:
私の場合、ItemDataを何にも使用していなかったので、行を強調表示する必要があるかどうかを示すために、ブール値を使用して他の場所でSetItemDataを呼び出しました。
mfc - CListCtrlの2番目の列に挿入します
私がこれが好きなとき
「左」の下に「右」の文字列を挿入します。
mfc - MFCでフォーカスメッセージを取得するにはどうすればよいですか?
CListCtrlを含むダイアログボックスがあります。それらの1つをクリックすると、killfocusまたはsetfocusメッセージを受信するようにします。
どうすれば入手できますか?
c++ - CListCtrl は十分なスペースがあるにもかかわらず省略記号を表示します (Win2008 および Win7 のみ)
CListCtrl を使用して、ListView モードでアイコン付きのアイテムを表示しています。ほとんどの場合、リストには項目が 1 つしかなく、右側に十分なスペースがありますが、私の Win2008 システム (または Win7) では、省略記号を使用してテキストが切り捨てられます (たとえば、"Tank" は "Ta..." に切り捨てられます)。 . これはすべてのデータで発生するわけではありません (一部の長い文字列でも機能します) が、「タンク」の例では繰り返し発生します。また、WinXP システムでは正常に動作します - 常に。
リスト ビューは、rc ファイルを介して作成されます。
その後、インスタンス化されます
次の形式の列を 1 つだけ挿入しています。
そして、データが挿入されます
私はもう試した
としても
そして、
トリックもしなかった。
何か案は?
ミカ
winapi - CListCtrl - 項目テキストの長さを取得します
から派生していCListCtrl
ます。i
アイテムのサブアイテム0
(最初の列)に含まれるテキストの長さを調べる方法はありますか? その情報は によって必要とされGetItemText()
ます。
listview - 配置スタイルを変更した後、リストコントロールを再描画するにはどうすればよいですか?
LVS_ALIGNTOP
配置スタイル ( / LVS_ALIGNLEFT
) が変更された後、リストコントロールを更新/更新/再描画する方法を見つけようとしています。
スタイルをアイコン/スモールモードから別のものに変更してから再度戻すと、時々動作します(クリックしたときのみ、プログラムによる変更は遅れても機能しないようです)。それでも、それはせいぜい(醜い/ちらつきは言うまでもなく)かなり厄介なので、より良い(より適切で、より正しい?)方法を見つけたいと思います。
リストコントロールのUpdateWindow
, RedrawWindow
, Invalidate
, … を試してみましたがRedrawItems
、Update
表示モードを変更する以外に何も機能していないようです。
c++ - Clistctrl 選択検出
私はリスト ビューで遊んでいて、この投稿に出くわしました: CListCtrl の選択の変更を検出する方法は?
ただし、そこで使用されるコードには大きな流れがあり、複数選択では機能しません (そのスレッドで指摘されているように)。だから私の質問は、どうすれば複数選択でコードを機能させることができるでしょうか (たとえば、shift または ctrl による選択)?