且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

VC++设计简易计算器笔记(二)

更新时间:2022-09-22 08:30:18

3、学会制作高级编辑控件,可以指定文本文件的字体和颜色。
   首先,创建一个高级编辑控件类CAdvEdit,其父类为CEdit。主要包含三个函数,消息函数
OnPaint(),成员函数OnDraw()和OnDisplay(LPCSTR lpszStr)。
   在OnPaint()的消息函数中调用成员函数OnDraw()来绘制编辑控件客户区。而在OnDisplay(LPCSTR
lpszStr)函数中将要显示的文本内容lpszStr赋给成员变量m_Caption。
   void CAdvEdit::OnDraw()      //绘制编辑控件客户区
   { 
       CRect rect;
       GetWindowRect(&rect);
       CDC *pDC=GetDC();         //得到编辑控件设备环境变量
       pDC->SetBkMode(TRANSPARENT);  //设置背景模式为透明
       CBrush *pBrush=new CBrush(RGB(255,255,255));     //创建白色画刷
       pDC->FillRect(&rect,pBrush);                //用画刷填充客户区
       pDC->SetText(Color(RGB(92,92,92)));           //设置文本颜色
       pDC->DrawText(m_Caption,rect,DT_SINGLELINE|DT_VCENTRE|DT_RIGHT);
                                                   //绘制文本,指定颜色和字体
   }
4、在主对话框中添加菜单资源:在OnInitDialog()函数中加载
   m_Menu=new CMenu;
   m_Menu->LoadMenu(IDR_MENU);              //加载菜单资源模版
   SetMenu(m_Menu);                    //将菜单添加到对话框
改变对话框窗口的大小和位置的相关函数:
   CRect rect;
   GetWindowRect(&rect);
   //设置对话框的窗口位置和大小:宽为232像素,高度不变
   SetWindowRect(&wndTop,0,0,232,rect.Height(),SWP_NOMOVE|SWP_NOZORDER);
改变编辑框的窗口大小及位置
   m_DspEdit.GetWindowRect(&rect);  //CButton m_DspEdit
   //编辑框宽为182像素,高度不变
   m_DspEdit.SetWindowPos(NULL,rect.left,rect.top,182,
                           rect.Height(),SWP_NOMOVE|SWP_NOZORDER);
改变静态框的位置及大小
   m_DspStatic.GetWindowRect(&rect);   //CAdbEdit m_DspStatic
   m_DspStatic.SetWindowPos(NULL,rect.left,rect.top,202,
                           rect.Height(),SWP_NOMOVE|SWP_NOZORDER);
更改菜单项显示文本
   m_Menu->ModifyMenu(ID_EXTEND,MF_BYCOMMAND|MF_STRING,ID_EXTEND,"扩展");               
    

本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/162829,如需转载请自行联系原作者