1

MFCとBGCControlBarは初めてです。
ここで、次のように定義されているCBCGPListCtrlを使用する予定です。

class BCGCBPRODLLEXPORT CBCGPListCtrl : public CListCtrl

CBCGPListCtrl m_wndWatch;

今デモコードで私は変更する予定です:

int CWatchBar::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
    if (CBCGPDockingControlBar::OnCreate(lpCreateStruct) == -1)
        return -1;

    m_Font.CreateStockObject (DEFAULT_GUI_FONT);

    CRect rectDummy;
    rectDummy.SetRectEmpty ();

    // Create output pane:
        const DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_VSCROLL | LVS_REPORT |  LVS_EDITLABELS ;

    m_wndWatch.Create (dwStyle, rectDummy, this, ID_LIST_1);
    m_wndWatch.SendMessage (LVM_SETEXTENDEDLISTVIEWSTYLE, 0,
                        LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
    m_wndWatch.InsertColumn (0, _T("Variable"), LVCFMT_LEFT, 100);
    m_wndWatch.InsertColumn (1, _T("Value"), LVCFMT_LEFT, 100);

    m_wndWatch.InsertItem (0, _T("m_nCount"));
    m_wndWatch.SetItemText (0, 1, _T("100"));

    m_wndWatch.SetFont (&m_Font);

    return 0;
}

私が取得するのはリスト(写真のように)です。編集できるのは最初の列のみで、データを保持することはできません。2番目の列のテキストを編集してデータを保持できるようにするにはどうすればよいですか?

ここに画像の説明を入力してください

4

2 に答える 2

0

CListCtrl(または派生クラス)ではなく、グリッドコントロールが必要です。実際、他のコラムでエディションのサポートを追加することは可能ですが、それは大変な作業であり、私が新参者に勧めるようなものではありません。

彼らのウェブサイトのこのページによると、彼らはグリッドコントロールを持っています。

于 2012-10-31T21:39:32.693 に答える
0

MFC CListCtrlを編集可能にするために、いくつかのことを行う必要があります。これは、あまり多くの詳細に立ち入ることなく、非常に広範な概要です。

  1. 上記のように、これはかなりの作業であり、CListCtrl自体ではすべての列を明示的に編集できないため、CListCtrlからクラスを派生させる必要があります。

  2. カーソル位置を指定して、クリックした特定のセルの行/列番号を計算するルーチンが必要ですCPoint

  3. 派生CListCtrlクラスでは、選択したセルを編集してCEdit、適切なサイズのコントロールを作成して表示するメソッドも必要です。

  4. メッセージを送信し、完了時に自己破壊するように、派生CEditコントロールを作成します。LVN_ENDLABELEDIT

編集可能なリストコントロールを実装するVisualStudio2010プロジェクトの例は、次のサイトからダウンロードできます。

http://www.technical-recipes.com/2014/making-a-mfc-list-control-editable/

例を実行/デバッグすると、次のように編集可能なリストコントロールを実装するダイアログプロジェクトの例が表示されます。

ここに画像の説明を入力してください

于 2014-05-12T19:34:31.187 に答える