MFC中如何使用CListCtrl可以编辑,并添加鼠标右键及双击事件。

要在MFC中使用CListCtrl来实现编辑功能,可以按照以下步骤进行操作:

  1. 在对话框资源中添加CListCtrl控件,并设置合适的属性。
  2. 在对话框类的头文件中添加成员变量来管理CListCtrl控件,例如:```
    CListCtrl m_listCtrl;
3. 在OnInitDialog函数中添加以下代码来初始化CListCtrl控件:

m_listCtrl.SubclassDlgItem(IDC_LIST_CONTROL, this);
m_listCtrl.InsertColumn(0, _T(“Column 1”), LVCFMT_LEFT, 100);
m_listCtrl.InsertColumn(1, _T(“Column 2”), LVCFMT_LEFT, 100);
m_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

4. 在对话框类的头文件中添加消息映射:
```cpp
afx_msg void OnLvnEndlabeleditListControl(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnNMRClickListControl(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnLvnItemActivateListControl(NMHDR *pNMHDR, LRESULT *pResult);
  1. 在消息映射表中添加以下映射关系:
ON_NOTIFY(LVN_ENDLABELEDIT, IDC_LIST_CONTROL, &CYourDialogClass::OnLvnEndlabeleditListControl)
ON_NOTIFY(NM_RCLICK, IDC_LIST_CONTROL, &CYourDialogClass::OnNMRClickListControl)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_CONTROL, &CYourDialogClass::OnLvnItemActivateListControl)
  1. 在源文件中添加以下函数实现对应的消息处理:
void CYourDialogClass::OnLvnEndlabeleditListControl(NMHDR *pNMHDR, LRESULT *pResult)
{
    LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
    LV_ITEM* pItem = &pDispInfo->item;

    CString strNewValue = pItem->pszText;
    int nItem = pItem->iItem;
    int nSubItem = pItem->iSubItem;

    // 处理编辑完成后的新值
    // ...

    *pResult = 0;
}

void CYourDialogClass::OnNMRClickListControl(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    // 处理鼠标右键事件
    // ...

    *pResult = 0;
}

void CYourDialogClass::OnLvnItemActivateListControl(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    // 处理双击事件
    // ...

    *pResult = 0;
}

通过以上步骤,你可以在MFC中使用CListCtrl实现编辑功能,并添加鼠标右键和双击事件的处理。要在MFC中使用CListCtrl来实现编辑功能,可以按照以下步骤进行操作:

  1. 在对话框资源中添加CListCtrl控件,并设置合适的属性。
  2. 在对话框类的头文件中添加成员变量来管理CListCtrl控件,例如:```
    CListCtrl m_listCtrl;
3. 在OnInitDialog函数中添加以下代码来初始化CListCtrl控件:

m_listCtrl.SubclassDlgItem(IDC_LIST_CONTROL, this);
m_listCtrl.InsertColumn(0, _T(“Column 1”), LVCFMT_LEFT, 100);
m_listCtrl.InsertColumn(1, _T(“Column 2”), LVCFMT_LEFT, 100);
m_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);

4. 在对话框类的头文件中添加消息映射:
```cpp
afx_msg void OnLvnEndlabeleditListControl(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnNMRClickListControl(NMHDR *pNMHDR, LRESULT *pResult);
afx_msg void OnLvnItemActivateListControl(NMHDR *pNMHDR, LRESULT *pResult);
  1. 在消息映射表中添加以下映射关系:
ON_NOTIFY(LVN_ENDLABELEDIT, IDC_LIST_CONTROL, &CYourDialogClass::OnLvnEndlabeleditListControl)
ON_NOTIFY(NM_RCLICK, IDC_LIST_CONTROL, &CYourDialogClass::OnNMRClickListControl)
ON_NOTIFY(NM_DBLCLK, IDC_LIST_CONTROL, &CYourDialogClass::OnLvnItemActivateListControl)
  1. 在源文件中添加以下函数实现对应的消息处理:
void CYourDialogClass::OnLvnEndlabeleditListControl(NMHDR *pNMHDR, LRESULT *pResult)
{
    LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
    LV_ITEM* pItem = &pDispInfo->item;

    CString strNewValue = pItem->pszText;
    int nItem = pItem->iItem;
    int nSubItem = pItem->iSubItem;

    // 处理编辑完成后的新值
    // ...

    *pResult = 0;
}

void CYourDialogClass::OnNMRClickListControl(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    // 处理鼠标右键事件
    // ...

    *pResult = 0;
}

void CYourDialogClass::OnLvnItemActivateListControl(NMHDR *pNMHDR, LRESULT *pResult)
{
    LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
    // 处理双击事件
    // ...

    *pResult = 0;
}

通过以上步骤,你可以在MFC中使用CListCtrl实现编辑功能,并添加鼠标右键和双击事件的处理。

你可能感兴趣的:(#,MFC日常开发记录,mfc,c++)