3、学会制作高级编辑控件,可以指定文本文件的字体和颜色。
首先,创建一个高级编辑控件类CAdvEdit,其父类为CEdit。主要包含三个函数,消息函数
首先,创建一个高级编辑控件类CAdvEdit,其父类为CEdit。主要包含三个函数,消息函数
OnPaint(),成员函数OnDraw()和OnDisplay(LPCSTR lpszStr)。
在OnPaint()的消息函数中调用成员函数OnDraw()来绘制编辑控件客户区。而在OnDisplay(LPCSTR
在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);
//绘制文本,指定颜色和字体
}
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); //将菜单添加到对话框
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);
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_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,"扩展");
m_Menu->ModifyMenu(ID_EXTEND,MF_BYCOMMAND|MF_STRING,ID_EXTEND,"扩展");
本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/162829,如需转载请自行联系原作者