当前位置: 代码迷 >> 综合 >> CMFCEditBrowseCtrl CEdit 文本编辑控件
  详细解决方案

CMFCEditBrowseCtrl CEdit 文本编辑控件

热度:40   发布时间:2023-10-19 12:00:25.0

1继承关系

CMFCEditBrowseCtrl >>>CEdit >>>CWnd >>>CCmdTarget

官方说明文档地址:点击这里

2.创建方法

控件的使用必先有其对象 对象可以为其他成员变量 也可以为堆中的变量,使用指针等关系

class XXX
{/*省略无关配置*/
//定义一个成员
CMFCEditBrowseCtrl m_Edit;
int OnCreate(LPCREATESTRUCT lpCreateStruct);
}int XXX::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//创建一个窗口
RECT rect={10,10,200,20};//显示的位置
m_Edit.Create(WS_CHILD | WS_VISIBLE, //DWORD设定显示 风格子窗口|显示rect, // const RECT& 设定显示位置this, //CWnd*设置父窗口ID_Search_Edit);//UINT自定义控件ID 消息处理的时候用到//m_EditBrowse.SetOwner(this); // 功能描述:设置控件所有者,控件的消息将发送给所有者,具体细节请看源码 afxeditbrowsectrl.cpp 如果不设置所有者,则消息默认发送给父窗口 无特殊需求可以省略此操作
//特殊情况: 此控件消息需要发送消息到父窗口的父窗口里 或者其他窗口,则需要将接收消息的窗口指针传入此处 功能上是可行的 但是一般不要将消息传送到“偏远”的窗口 以免找不到发送给了谁}

也可以在堆中创建对象 操作方法类似

class XXX
{/*省略无关配置*/
//定义一个成员
CMFCEditBrowseCtrl *m_Edit;
int OnCreate(LPCREATESTRUCT lpCreateStruct);
}int XXX::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
//创建一个窗口
m_Edit=new CMFCEditBrowseCtrl;
RECT rect={10,10,200,20};//显示的位置
m_Edit->Create(WS_CHILD | WS_VISIBLE, //DWORD设定显示 风格子窗口|显示rect, // const RECT& 设定显示位置this, //CWnd*设置父窗口ID_Search_Edit);//UINT自定义控件ID 消息处理的时候用到//m_EditBrowse->SetOwner(this); // 功能描述:设置控件所有者,控件的消息将发送给所有者,具体细节请看源码 afxeditbrowsectrl.cpp 如果不设置所有者,则消息默认发送给父窗口 无特殊需求可以省略此操作
//特殊情况: 此控件消息需要发送消息到父窗口的父窗口里 或者其他窗口,则需要将接收消息的窗口指针传入此处 功能上是可行的 但是一般不要将消息传送到“偏远”的窗口 以免找不到发送给了谁
}

 

对比优缺点:  在栈中创建对象方便 ,自动销毁回收控件 方便调用  缺点是栈空间有限

在堆中创建对象,节省栈的空间,但是调用时略微复杂,而且如果需要销毁 就需要手动销毁咯  频繁调用必须要销毁。

 

 

变动日志:

2019年9月3日:

  1. 创建本文档