VC编辑控件Edit基本操作
2018-02-01 09:33
681 查看
本文以一个简单的例子实现编辑控件的基本操作。
首先,新建一个对话框应用程序
然后在对话框上添加一个edit控件
修改menu菜单
添加处理程序
[cpp] view
plain copy
void CEditDemoDlg::InitUi()
{
CRect rect;
GetClientRect(&rect);
CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);
if (pEdit)
{
pEdit->MoveWindow(&rect);
}
}
<
4000
/span>
void CEditDemoDlg::OnFileExit()
{
// 调用基类成员函数 OnCancel 终止对话框
OnCancel();
}
void CEditDemoDlg::OnFileNew()
{
// 将编辑控件中的文本初始化为零, 并清除其撤消缓冲区。
CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);
pEdit->SetWindowText("");
pEdit->EmptyUndoBuffer();
}
void CEditDemoDlg::OnEditUndo()
{
// 直接调用类 CEdit 的成员函数 Undo
CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);
pEdit->Undo();
}
void CEditDemoDlg::OnEditCut()
{
// 直接调用类 CEdit 的成员函数 Cut
((CEdit*)GetDlgItem(IDC_EDIT))->Cut();
}
void CEditDemoDlg::OnEditCopy()
{
// 直接调用类 CEdit 的成员函数 Copy
((CEdit*)GetDlgItem(IDC_EDIT))->Copy();
}
void CEditDemoDlg::OnEditPaste()
{
// 直接调用类 CEdit 的
15d58
成员函数 Paste
((CEdit*)GetDlgItem(IDC_EDIT))->Paste();
}
void CEditDemoDlg::OnEditDel()
{
// 直接调用类 CEdit 的成员函数 Clear
((CEdit*)GetDlgItem(IDC_EDIT))->Clear();
}
void CEditDemoDlg::OnEditSelectall()
{
int nStart,nEnd;
// 设置选定字符的开始
nStart=0;
// 设置选定字符的结尾。函数 GetWindowTextLength 返回编辑控件中文本的长度
nEnd=((CEdit*)GetDlgItem(IDC_EDIT))->GetWindowTextLength();
// 以 nStart 和 nEnd 为参数调用类 CEdit 的成员函数 SetSel
((CEdit*)GetDlgItem(IDC_EDIT))->SetSel(nStart,nEnd);
}
void CEditDemoDlg::OnEditSetfont()
{
LOGFONT lf;
static CFont font;
// 获得编辑框原来使用的字体信息,并使用该信息初始化字体对话框
CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);
pEdit->GetFont()->GetLogFont(&lf);
CFontDialog dlg(&lf);
// 弹出字体对话框以供用户选择新的字体,
// 并在用户确认的情况下更改编辑控件所使用的字体。
if (dlg.DoModal()==IDOK)
{
dlg.GetCurrentFont(&lf);
font.DeleteObject();
font.CreateFontIndirect(&lf);
pEdit->SetFont(&font);
}
}
void CEditDemoDlg::OnInitMenuPopup( CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu )
{
CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);
// 当用户单击的是窗口的控制菜单时 bSysMenu 参数为真,否则为假
if (!bSysMenu)
{
// 检查编辑控件是否有可撤消的操作
if (pEdit->CanUndo())
{
pPopupMenu->EnableMenuItem(ID_EDIT_UNDO,MF_ENABLED);
}
else
{
pPopupMenu->EnableMenuItem(ID_EDIT_UNDO,MF_GRAYED);
}
// 检查编辑控件中是否有选定的文本
int nStart,nEnd;
pEdit->GetSel(nStart,nEnd);
if (nStart==nEnd)
{
pPopupMenu->EnableMenuItem(ID_EDIT_CUT,MF_GRAYED);
pPopupMenu->EnableMenuItem(ID_EDIT_COPY,MF_GRAYED);
pPopupMenu->EnableMenuItem(ID_EDIT_DEL,MF_GRAYED);
}
else
{
pPopupMenu->EnableMenuItem(ID_EDIT_CUT,MF_ENABLED);
pPopupMenu->EnableMenuItem(ID_EDIT_COPY,MF_ENABLED);
pPopupMenu->EnableMenuItem(ID_EDIT_DEL,MF_ENABLED);
}
// 检查剪贴板中是否有文本格式的数据可供粘贴
// 该过程通过调用 Win32 API 函数 IsClipboardFormatAvailable 来实现
if (IsClipboardFormatAvailable(CF_TEXT))
{
pPopupMenu->EnableMenuItem(ID_EDIT_PASTE,MF_ENABLED);
}
else
{
pPopupMenu->EnableMenuItem(ID_EDIT_PASTE,MF_GRAYED);
}
}
}
void CEditDemoDlg::OnSize(UINT nType, int cx, int cy)
{
// 调用基类的 OnSize 成员函数
CDialog::OnSize(nType, cx, cy);
CRect rect;
// 获得父窗口的客户区矩形
GetClientRect(&rect);
CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);
if (pEdit)
{
// 改变编辑控件的大小以适应父窗口大小的改变
pEdit->MoveWindow(&rect);
}
}
首先,新建一个对话框应用程序
然后在对话框上添加一个edit控件
修改menu菜单
添加处理程序
[cpp] view
plain copy
void CEditDemoDlg::InitUi()
{
CRect rect;
GetClientRect(&rect);
CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);
if (pEdit)
{
pEdit->MoveWindow(&rect);
}
}
<
4000
/span>
void CEditDemoDlg::OnFileExit()
{
// 调用基类成员函数 OnCancel 终止对话框
OnCancel();
}
void CEditDemoDlg::OnFileNew()
{
// 将编辑控件中的文本初始化为零, 并清除其撤消缓冲区。
CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);
pEdit->SetWindowText("");
pEdit->EmptyUndoBuffer();
}
void CEditDemoDlg::OnEditUndo()
{
// 直接调用类 CEdit 的成员函数 Undo
CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);
pEdit->Undo();
}
void CEditDemoDlg::OnEditCut()
{
// 直接调用类 CEdit 的成员函数 Cut
((CEdit*)GetDlgItem(IDC_EDIT))->Cut();
}
void CEditDemoDlg::OnEditCopy()
{
// 直接调用类 CEdit 的成员函数 Copy
((CEdit*)GetDlgItem(IDC_EDIT))->Copy();
}
void CEditDemoDlg::OnEditPaste()
{
// 直接调用类 CEdit 的
15d58
成员函数 Paste
((CEdit*)GetDlgItem(IDC_EDIT))->Paste();
}
void CEditDemoDlg::OnEditDel()
{
// 直接调用类 CEdit 的成员函数 Clear
((CEdit*)GetDlgItem(IDC_EDIT))->Clear();
}
void CEditDemoDlg::OnEditSelectall()
{
int nStart,nEnd;
// 设置选定字符的开始
nStart=0;
// 设置选定字符的结尾。函数 GetWindowTextLength 返回编辑控件中文本的长度
nEnd=((CEdit*)GetDlgItem(IDC_EDIT))->GetWindowTextLength();
// 以 nStart 和 nEnd 为参数调用类 CEdit 的成员函数 SetSel
((CEdit*)GetDlgItem(IDC_EDIT))->SetSel(nStart,nEnd);
}
void CEditDemoDlg::OnEditSetfont()
{
LOGFONT lf;
static CFont font;
// 获得编辑框原来使用的字体信息,并使用该信息初始化字体对话框
CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);
pEdit->GetFont()->GetLogFont(&lf);
CFontDialog dlg(&lf);
// 弹出字体对话框以供用户选择新的字体,
// 并在用户确认的情况下更改编辑控件所使用的字体。
if (dlg.DoModal()==IDOK)
{
dlg.GetCurrentFont(&lf);
font.DeleteObject();
font.CreateFontIndirect(&lf);
pEdit->SetFont(&font);
}
}
void CEditDemoDlg::OnInitMenuPopup( CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu )
{
CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);
// 当用户单击的是窗口的控制菜单时 bSysMenu 参数为真,否则为假
if (!bSysMenu)
{
// 检查编辑控件是否有可撤消的操作
if (pEdit->CanUndo())
{
pPopupMenu->EnableMenuItem(ID_EDIT_UNDO,MF_ENABLED);
}
else
{
pPopupMenu->EnableMenuItem(ID_EDIT_UNDO,MF_GRAYED);
}
// 检查编辑控件中是否有选定的文本
int nStart,nEnd;
pEdit->GetSel(nStart,nEnd);
if (nStart==nEnd)
{
pPopupMenu->EnableMenuItem(ID_EDIT_CUT,MF_GRAYED);
pPopupMenu->EnableMenuItem(ID_EDIT_COPY,MF_GRAYED);
pPopupMenu->EnableMenuItem(ID_EDIT_DEL,MF_GRAYED);
}
else
{
pPopupMenu->EnableMenuItem(ID_EDIT_CUT,MF_ENABLED);
pPopupMenu->EnableMenuItem(ID_EDIT_COPY,MF_ENABLED);
pPopupMenu->EnableMenuItem(ID_EDIT_DEL,MF_ENABLED);
}
// 检查剪贴板中是否有文本格式的数据可供粘贴
// 该过程通过调用 Win32 API 函数 IsClipboardFormatAvailable 来实现
if (IsClipboardFormatAvailable(CF_TEXT))
{
pPopupMenu->EnableMenuItem(ID_EDIT_PASTE,MF_ENABLED);
}
else
{
pPopupMenu->EnableMenuItem(ID_EDIT_PASTE,MF_GRAYED);
}
}
}
void CEditDemoDlg::OnSize(UINT nType, int cx, int cy)
{
// 调用基类的 OnSize 成员函数
CDialog::OnSize(nType, cx, cy);
CRect rect;
// 获得父窗口的客户区矩形
GetClientRect(&rect);
CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);
if (pEdit)
{
// 改变编辑控件的大小以适应父窗口大小的改变
pEdit->MoveWindow(&rect);
}
}
相关文章推荐
- VC编辑控件Edit基本操作
- VC中Microsoft FlexGrid控件的使用及合并单元格、可编辑操作(EDIT控件添加)
- VC控件的基本操作
- VC中Microsoft FlexGrid控件的使用及合并单元格、可编辑操作
- VC对话框控件基本操作1
- 控件:PopupWindow --- 弹出窗口(基本操作)
- VC++之Edit控件自动换行
- VC 改变edit控件背景色
- 在ASP.NET 2.0中操作数据之十九:给编辑和新增界面增加验证控件
- VC编辑框(EDIT)的自动换行与自动滚屏
- jQuery操作基本控件方法实例分析
- 改個名字再發一次--本例運用了javascript,html控件,服务器控件,最重要的就是javascript对空间的操作--GridView套GridViewtao--- 利用GridView显示主细表并一次编辑明细表所有数据的例子
- VC里如何改变Static,Edit等控件的字体大小
- VC编辑框(EDIT)的自动换行与自动滚屏
- Linux 入门之文本内容编辑vim编辑器 基本操作
- VC(MFC) edit控件滚动条自动到达底部的几种实现
- vc在edit控件中动态插入数据滚动显示
- VC操作XML的基本流程
- VC增强Edit控件为日期输入控件
- C#线程相关问题总结:基本操作及UI控件交互