3

リストの任意の列に CListCtrl.EditLabel() が必要です。どうすればそのような機能を実装できますか?

4

2 に答える 2

2

これは実行可能ですが、マウス クリックとフォーカス イベントをかなり詰め込む必要があります。

簡単に言うと、マウスの左ボタンを押したメッセージをトラップし、それをセル ヒットの詳細 (つまり、行と列のインデックス) に変換します。

これらのセルの詳細では、リスト ビュー セルのサイズと位置、およびセルに含まれるテキスト値を特定することはできません。

ここで、前の手順のサイズと場所の詳細を使用して、このセルに CEdit コントロールを直接作成し、セルのテキスト値を指定します。

最後の手順は、CEdit のフォーカス イベントとキーボード入力イベントを処理して、CEdit のテキストの詳細をリスト ビュー セルに戻すことができるようにすることです。

かなりの量のコーディングが必要ですが、適切に行うと、グリッド コントロールの代わりとしてうまく機能します。

于 2008-11-02T23:49:58.183 に答える
2

CListCtrl を使用しないでください。

MFC グリッド コントロールを使用します。市販のアプリにデプロイして成功しました。すべてのセルのインプレース編集、チェックボックス、スピンなど、および列と行のヘッダー、自動サイズ、自動拡張、色、ドラッグ アンド ドロップを提供します。

于 2008-10-31T18:33:00.493 に答える