您的位置:首页 > 其它

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);  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: