本人在做一个网络口监视工具的时候,需要在单文档程序中添加两个编辑框控件,用来显示发送和接收的数据内容。开始的时候在VIEW类中画接收到数据,感觉很麻烦,于是上网找类似的例子,才发现自己走了弯路,原来前辈们都是直接在框架类窗口上添加编辑框控件来实现的,于是本人效仿,果然效率很搞,界面也比较简洁。
下面介绍,在主框架类中添加编辑框的方法。
1. 在框架类的ONCREATE函数里面添加如下代码
//创建左边的控制条
if(!m_wndMyBarLeft.Create(_T("数据包"),this,123))
{
MessageBox("Fail to Create m_wndMyBarLeft!");
return -1;
}
//创建下面的控制条
if(!m_wndMyBarBottom.Create(_T("数据"),this,CSize(100,100),TRUE,124))
{
MessageBox("Fail to Create m_wndMyBarBottom!");
return -1;
}
if(!m_wndMyBarRight.Create(_T("显示"),this,CSize(700,700),TRUE,125))
{
MessageBox("Fail to Create m_wndMyBarRight!");
return -1;
}
下面解释以上代码的作用:
首先应该先了解一下CCoolBar类,百度一下就知道。
此时假设已经建好单文档程序了。CCoolBar类包含四个文件sizecbar.h sizecbar.cpp scbarg.h scbarg.cpp,把这四个文件复制到源程序目录下面,在菜单Project->Add to project->Files将四个文件加入工程中,此时在ClassView中将出现了一个称为CCoolBar的类。
在stdafx.h文件中加上
#include "sizecbar.h"
#include "scbarg.h"
为主框架类CMainFrame增加成员变量:
CCoolBar m_wndMyBarLeft; //左边窗口
CCoolBar m_wndMyBarBottom;//下面窗口
CCoolBar m_wndMyBarRight; // 右边窗口
创建ControlBar
然后查询其CREATE函数,根据其参数类型,写出上面的代码。
2. 设置窗口停靠位置
m_CoolBar_Top.SetBarStyle(m_CoolBar_Top.GetBarStyle()|CBRS_TOOLTIPS|CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_CoolBar_Bottom.SetBarStyle(m_CoolBar_Bottom.GetBarStyle()|CBRS_TOOLTIPS|CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_CoolBar_Left.SetBarStyle(m_CoolBar_Left.GetBarStyle()|CBRS_TOOLTIPS|CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_CoolBar_Left.EnableDocking(CBRS_ALIGN_ANY);
// m_CoolBar_Top.EnableDocking(CBRS_ALIGN_ANY);
m_CoolBar_Bottom.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_CoolBar_Left,AFX_IDW_DOCKBAR_LEFT);
// DockControlBar(&m_CoolBar_Top,AFX_IDW_DOCKBAR_LEFT);
DockControlBar(&m_CoolBar_Bottom,AFX_IDW_DOCKBAR_BOTTOM);
这没什么可说的,SetBarStyle函数,查询其函数类型,依次写出来就可以了。DockControlBar函数设置默认停靠位置。
现在不要以为窗口中已经有控件了,大家应该记得,我们自始至终都没有去创建编辑框控件,以上做的只是大体规划了一下布局,下面我们来创建实体控件。
3. 创建编辑框控件
在框架类中增加CEDIT类的变量。m_Edit_Left. m_Edit_Rev m_Edit_Send m_Edit_Left.Create(WS_VSCROLL|WS_CHILD|WS_VISIBLE|ES_AUTOVSCROLL|ES_READONLY|
ES_MULTILINE|ES_WANTRETURN,CRect(0,0,0,0),&m_CoolBar_Left,ID_EDIT_LEFT);
m_Edit_Left.ModifyStyleEx(0,WS_EX_CLIENTEDGE);
m_Edit_Rev.Create(WS_VSCROLL|WS_CHILD|WS_VISIBLE|ES_AUTOVSCROLL|ES_READONLY|
ES_MULTILINE|ES_WANTRETURN,CRect(0,0,0,0),&m_CoolBar_Top,ID_EDIT_REV);
m_Edit_Rev.ModifyStyleEx(0,WS_EX_CLIENTEDGE);
编辑框控件的create函数想必大家都已经轻车熟路了,到现在为止,运行一下,应该出现我们所期盼的编辑框了。
这里注意一下,我在这里创建的三个都是编辑框,当然这三个也可以使其他的控件,按照这个思路可以轻松实现仿VC++的页面了。