リストの任意の列に CListCtrl.EditLabel() が必要です。どうすればそのような機能を実装できますか?
8861 次
2 に答える
2
これは実行可能ですが、マウス クリックとフォーカス イベントをかなり詰め込む必要があります。
簡単に言うと、マウスの左ボタンを押したメッセージをトラップし、それをセル ヒットの詳細 (つまり、行と列のインデックス) に変換します。
これらのセルの詳細では、リスト ビュー セルのサイズと位置、およびセルに含まれるテキスト値を特定することはできません。
ここで、前の手順のサイズと場所の詳細を使用して、このセルに CEdit コントロールを直接作成し、セルのテキスト値を指定します。
最後の手順は、CEdit のフォーカス イベントとキーボード入力イベントを処理して、CEdit のテキストの詳細をリスト ビュー セルに戻すことができるようにすることです。
かなりの量のコーディングが必要ですが、適切に行うと、グリッド コントロールの代わりとしてうまく機能します。
于 2008-11-02T23:49:58.183 に答える
2
CListCtrl を使用しないでください。
MFC グリッド コントロールを使用します。市販のアプリにデプロイして成功しました。すべてのセルのインプレース編集、チェックボックス、スピンなど、および列と行のヘッダー、自動サイズ、自動拡張、色、ドラッグ アンド ドロップを提供します。
于 2008-10-31T18:33:00.493 に答える