📄 newlistctrl.cpp
字号:
// NewListCtrl.cpp : implementation file
//
#include "stdafx.h"
#include "NewListCtrl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CNewListCtrl
CNewListCtrl::CNewListCtrl()
{
m_nitem=-1;
m_nsubitem=-1;
m_nitem1=-1;
m_nsubitem1=-1;
m_flag=0;
}
CNewListCtrl::~CNewListCtrl()
{
}
BEGIN_MESSAGE_MAP(CNewListCtrl, CListCtrl)
//{{AFX_MSG_MAP(CNewListCtrl)
// NOTE - the ClassWizard will add and remove mapping macros here.
ON_WM_LBUTTONDOWN()//左键消息
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNewListCtrl message handlers
void CNewListCtrl::Edit()
{
CRect rect;
if(GetSubItemRect(m_nitem,m_nsubitem,LVIR_LABEL,rect)==FALSE)
return;
int sty=WS_CHILD|WS_CLIPSIBLINGS|WS_EX_TOOLWINDOW|WS_BORDER; //设置编辑框样式
if(m_edit.Create(sty,rect,this,0XE704)==FALSE) //创建编辑框
return;
CString txt=GetItemText(m_nitem,m_nsubitem);
m_edit.SetWindowText(txt);//设置编辑框的内容
m_edit.SetFocus();
m_edit.SetSel(0,-1);
m_edit.ShowWindow(SW_SHOW);//显示编辑框
m_nitem1=m_nitem;
m_nsubitem1=m_nsubitem;
m_flag=1;
}
void CNewListCtrl::EndEdit()
{
if(m_nitem1!=-1&&m_nsubitem1!=-1)//判断是否为初始时
{
CString txt;
m_edit.GetWindowText(txt);
SetItemText(m_nitem1,m_nsubitem1,txt);//设置为编辑后的文件内容
m_edit.DestroyWindow();
m_flag=0;
}
}
void CNewListCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
LVHITTESTINFO testinfo;
testinfo.pt.x=point.x;
testinfo.pt.y=point.y;
testinfo.flags=LVHT_ONITEMLABEL;//强调点击必是标题
if(SubItemHitTest(&testinfo)<0)
{
int item=InsertItem(GetItemCount(),"");
SetItemText(item,1,"");
return;
}
m_nitem=testinfo.iItem;//得到行号
m_nsubitem=testinfo.iSubItem;//得到列号
if(m_nitem==m_nitem1&&m_nsubitem==m_nsubitem1)//判断是否是前一点击的行列
return;
else
{
if(m_flag==1)
{
EndEdit();//结束编辑框
return;
}
if(m_flag==0)
Edit();//创建新的编辑框对列表框进行编辑
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -