VC编辑控件Edit基本操作

4 篇文章 0 订阅

本文以一个简单的例子实现编辑控件的基本操作。


首先,新建一个对话框应用程序


然后在对话框上添加一个edit控件



修改menu菜单

  


添加处理程序

[cpp]  view plain  copy
  1. void CEditDemoDlg::InitUi()   
  2. {  
  3.     CRect rect;  
  4.     GetClientRect(&rect);  
  5.     CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);  
  6.     if (pEdit)  
  7.     {  
  8.         pEdit->MoveWindow(&rect);  
  9.     }  
  10. }  
  11.   
  12. void CEditDemoDlg::OnFileExit()   
  13. {  
  14.     // 调用基类成员函数 OnCancel 终止对话框  
  15.     OnCancel();  
  16. }  
  17.   
  18. void CEditDemoDlg::OnFileNew()   
  19. {  
  20.     // 将编辑控件中的文本初始化为零, 并清除其撤消缓冲区。  
  21.     CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);  
  22.     pEdit->SetWindowText("");  
  23.     pEdit->EmptyUndoBuffer();  
  24. }  
  25.   
  26. void CEditDemoDlg::OnEditUndo()   
  27. {  
  28.     // 直接调用类 CEdit 的成员函数 Undo  
  29.     CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);  
  30.     pEdit->Undo();  
  31. }  
  32.   
  33. void CEditDemoDlg::OnEditCut()   
  34. {  
  35.     // 直接调用类 CEdit 的成员函数 Cut  
  36.     ((CEdit*)GetDlgItem(IDC_EDIT))->Cut();   
  37. }  
  38.   
  39. void CEditDemoDlg::OnEditCopy()   
  40. {  
  41.     // 直接调用类 CEdit 的成员函数 Copy  
  42.     ((CEdit*)GetDlgItem(IDC_EDIT))->Copy();   
  43. }  
  44.   
  45. void CEditDemoDlg::OnEditPaste()   
  46. {  
  47.     // 直接调用类 CEdit 的成员函数 Paste  
  48.     ((CEdit*)GetDlgItem(IDC_EDIT))->Paste();  
  49. }  
  50.   
  51. void CEditDemoDlg::OnEditDel()   
  52. {  
  53.     // 直接调用类 CEdit 的成员函数 Clear  
  54.     ((CEdit*)GetDlgItem(IDC_EDIT))->Clear();   
  55. }  
  56.   
  57. void CEditDemoDlg::OnEditSelectall()   
  58. {  
  59.     int nStart,nEnd;  
  60.     // 设置选定字符的开始  
  61.     nStart=0;  
  62.     // 设置选定字符的结尾。函数 GetWindowTextLength 返回编辑控件中文本的长度  
  63.     nEnd=((CEdit*)GetDlgItem(IDC_EDIT))->GetWindowTextLength();  
  64.     // 以 nStart 和 nEnd 为参数调用类 CEdit 的成员函数 SetSel  
  65.     ((CEdit*)GetDlgItem(IDC_EDIT))->SetSel(nStart,nEnd);  
  66. }  
  67.   
  68. void CEditDemoDlg::OnEditSetfont()   
  69. {  
  70.     LOGFONT lf;  
  71.     static CFont font;  
  72.     // 获得编辑框原来使用的字体信息,并使用该信息初始化字体对话框  
  73.     CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);  
  74.     pEdit->GetFont()->GetLogFont(&lf);  
  75.     CFontDialog dlg(&lf);  
  76.     // 弹出字体对话框以供用户选择新的字体,  
  77.     // 并在用户确认的情况下更改编辑控件所使用的字体。  
  78.     if (dlg.DoModal()==IDOK)  
  79.     {  
  80.         dlg.GetCurrentFont(&lf);  
  81.         font.DeleteObject();  
  82.         font.CreateFontIndirect(&lf);  
  83.         pEdit->SetFont(&font);  
  84.     }  
  85. }  
  86.   
  87. void CEditDemoDlg::OnInitMenuPopup( CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu )  
  88. {  
  89.     CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);  
  90.     // 当用户单击的是窗口的控制菜单时 bSysMenu 参数为真,否则为假  
  91.     if (!bSysMenu)  
  92.     {  
  93.         // 检查编辑控件是否有可撤消的操作  
  94.         if (pEdit->CanUndo())  
  95.         {  
  96.             pPopupMenu->EnableMenuItem(ID_EDIT_UNDO,MF_ENABLED);  
  97.         }  
  98.         else  
  99.         {  
  100.             pPopupMenu->EnableMenuItem(ID_EDIT_UNDO,MF_GRAYED);  
  101.         }  
  102.         // 检查编辑控件中是否有选定的文本  
  103.         int nStart,nEnd;  
  104.         pEdit->GetSel(nStart,nEnd);  
  105.         if (nStart==nEnd)  
  106.         {  
  107.             pPopupMenu->EnableMenuItem(ID_EDIT_CUT,MF_GRAYED);  
  108.             pPopupMenu->EnableMenuItem(ID_EDIT_COPY,MF_GRAYED);  
  109.             pPopupMenu->EnableMenuItem(ID_EDIT_DEL,MF_GRAYED);  
  110.         }  
  111.         else  
  112.         {  
  113.             pPopupMenu->EnableMenuItem(ID_EDIT_CUT,MF_ENABLED);  
  114.             pPopupMenu->EnableMenuItem(ID_EDIT_COPY,MF_ENABLED);  
  115.             pPopupMenu->EnableMenuItem(ID_EDIT_DEL,MF_ENABLED);  
  116.         }  
  117.         // 检查剪贴板中是否有文本格式的数据可供粘贴  
  118.         // 该过程通过调用 Win32 API 函数 IsClipboardFormatAvailable 来实现  
  119.         if (IsClipboardFormatAvailable(CF_TEXT))  
  120.         {  
  121.             pPopupMenu->EnableMenuItem(ID_EDIT_PASTE,MF_ENABLED);  
  122.         }  
  123.         else  
  124.         {  
  125.             pPopupMenu->EnableMenuItem(ID_EDIT_PASTE,MF_GRAYED);  
  126.         }  
  127.     }  
  128. }  
  129.   
  130.   
  131. void CEditDemoDlg::OnSize(UINT nType, int cx, int cy)   
  132. {     
  133.     // 调用基类的 OnSize 成员函数  
  134.     CDialog::OnSize(nType, cx, cy);  
  135.     CRect rect;  
  136.     // 获得父窗口的客户区矩形  
  137.     GetClientRect(&rect);  
  138.     CEdit *pEdit=(CEdit*)GetDlgItem(IDC_EDIT);  
  139.     if (pEdit)  
  140.     {  
  141.         // 改变编辑控件的大小以适应父窗口大小的改变  
  142.         pEdit->MoveWindow(&rect);  
  143.     }  
  144. }  
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学生参加学科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,学科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,学生不仅能够深入学习相关专业知识,还能够接触到最新的科研成果和技术发展趋势。这有助于拓展学生的学科视野,使其对专业领域有更深刻的理解。在竞赛过程中,学生通常需要解决实际问题,这锻炼了他们独立思考和解决问题的能力。 其次,学科竞赛培养了学生的团队合作精神。许多竞赛项目需要团队协作来完成,这促使学生学会有效地与他人合作、协调分工。在团队合作中,学生们能够学到如何有效沟通、共同制定目标和分工合作,这对于日后进入职场具有重要意义。 此外,学科竞赛是提高学生综合能力的一种途径。竞赛项目通常会涉及到理论知识、实际操作和创新思维等多个方面,要求参赛者具备全面的素质。在竞赛过程中,学生不仅需要展现自己的专业知识,还需要具备创新意识和解决问题的能力。这种全面的综合能力培养对于未来从事各类职业都具有积极作用。 此外,学科竞赛可以为学生提供展示自我、树立信心的机会。通过比赛的舞台,学生有机会展现自己在专业领域的优势,得到他人的认可和赞誉。这对于培养学生的自信心和自我价值感非常重要,有助于他们更加积极主动地投入学习和未来的职业生涯。 最后,学科竞赛对于个人职业发展具有积极的助推作用。在竞赛中脱颖而出的学生通常能够引起企业、研究机构等用人单位的关注。获得竞赛奖项不仅可以作为个人履历的亮点,还可以为进入理想的工作岗位提供有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值