mfc 动态创建EDIT控件

知识点:
 CWnd::Create
 CWnd::CreateEx
 Spy++工具
 动态创建控件

  
一、 CWnd::Create 参数

virtual BOOL Create( LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);

BOOL CreateEx(DWORD dwExStyle, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, LPVOID lpParam = NULL);

dwExStyle
扩展样式 0x204
  
lpszClassName
 类名 未知的话可以用spy++获取
lpszWindowName
窗口名 
dwStyle 
风格
rect
矩形
pParentWnd
父窗口
nID
窗口ID
pContext
窗口上下文环境

二、代码测试:

int CDialog_Dynamics_Create::OnInitDialog(void)
{
    CDialog::OnInitDialog();
    // TODO: 在此添加控件通知处理程序代码
        //    myedt.Create(WS_BORDER|WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL|ES_CENTER,CRect(0,0,100,50),this,100081);
        //myedt.CWnd::Create(L"Edit",L"myedit",0x50010080,CRect(0,0,100,50),this,100081);
        //myedt.CWnd::CreateEx(0x204,L"Edit",L"myedit",0x50010080,CRect(0,0,100,50),this,100081);
myedt.CreateEx(WS_EX_CLIENTEDGE,L"Edit",L"myedit",WS_BORDER|WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL|ES_CENTER,CRect(0,0,100,50),this,100081);
       myedt2.Create(WS_BORDER|WS_CHILD|WS_VISIBLE|WS_TABSTOP|ES_AUTOHSCROLL|ES_CENTER,CRect(0,60,100,110),this,100082);
    return 0;
}

dwExStyle扩展窗口风格:

•WS_EX_ACCEPTFILES 指明用这个风格创建的窗口能够接受拖放文件。  
•WS_EX_CLIENTEDGE 指明窗口具有3D外观,这意味着,边框具有下沉的边界。  
•WS_EX_CONTEXTHELP 在窗口的标题条中包含问号。当用户单击问号时,鼠标光标的形状变为带指针的问号。如果用户随后单击一个子窗口,子窗口将接收到一个WM_HELP消息。  
•WS_EX_CONTROLPARENT 允许用户用TAB键遍历窗口的子窗口。  
• WS_EX_DLGMODALFRAME 指明一个具有双重边界的窗口,当你在dwStyle参数中指定了WS_CAPTION风格标志时,它可以具有标题条(可选)。  
• WS_EX_LEFT 指定窗口具有左对齐属性。这是缺省值。  
• WS_EX_LEFTSCROLLBAR 将垂直滚动条放在客户区的左边。  
• WS_EX_LTRREADING 按照从左到右的方式显示窗口文本。这是缺省方式。  
• WS_EX_MDICHILD 创建一个MDI子窗口。  
• WS_EX_NOPARENTNOTIFY 指定用这个风格创建的子窗口在被创建或销毁的时候将不向父窗口发送WM_PARENTNOTIFY消息。  
•WS_EX_OVERLAPPEDWINDOW 组合了WS_EX_CLIENTEDGE和WS_EX_WIND-OWEDGE风格。  
• WS_EX_PALETTEWINDOW 组合了WS_EX_WINDOWEDGE和WS_EX_TOPMOST风格。  
• WS_EX_RIGHT 赋予窗口右对齐属性。这与窗口类有关。  
• WS_EX_RIGHTSCROLLBAR 将垂直滚动条(如果有)放在客户区的右边。这是缺省方式。  
• WS_EX_RTLREADING 按照从右到左的顺序显示窗口文本。  
• WS_EX_STATICEDGE 创建一个具有三维边界的窗口,用于不接受用户输入的项。  
• WS_EX_TOOLWINDOW 创建一个工具窗口,目的是被用作浮动工具条。工具窗口具有标题条,比通常的标题条要短,窗口的标题是用小字体显示的。工具窗口不出现在任务条或用户按下ALT+TAB时出现的窗口中。  
• WS_EX_TOPMOST 指定用这个风格创建的窗口必须被放在所有非顶层窗口的上面,即使这个窗口已经不处于激活状态,它还是保留在最上面。应用程序可以用SetWindowsPos成员函数来加入或去掉这个属性。  
• WS_EX_TRANSPARENT 指定了用这个风格创建的窗口是透明的。这意味着,在这个窗口下面的任何窗口都不会被这个窗口挡住。用这个风格创建的窗口只有当它下面的窗口都更新过以后才接收WM_PAINT消息。  
• WS_EX_WINDOWEDGE 指定了具有凸起边框的窗口。 



dwStyle窗口风格:
• WS_BORDER 创建一个有边界的窗口。  
• WS_CAPTION 创建一个有标题条的窗口(隐含WS_BORDER风格)。不能与WS_DLGFRAME风格一起使用。  
• WS_CHILD 创建一个子窗口。不能与WS_POPUP风格一起使用。  
• WS_CLIPCHILDREN 当你在父窗口中绘图时,除去子窗口所占的区域。在创建父窗口的时候使用。  
• WS_CLIPSIBLINGS 剪裁相关的子窗口,这意味着,当一个特定的子窗口接收到重绘消息时,WS_CLIPSIBLINGS风格将在子窗口要重画的区域中去掉与其它子窗口重叠的部分。(如果没有指定WS_CLIPSIBLINGS风格,并且子窗口有重叠,当你在一个子窗口的客户区绘图时,它可能会画在相邻的子窗口的客户区中。)只与WS_CHILD风格一起使用。  
• WS_DISABLED 创建一个初始状态为禁止的窗口。  
• WS_DLGFRAME 创建一个窗口,具有双重边界,但是没有标题条。  
• WS_GROUP 指定一组控件中的第一个,用户可以用箭头键在这组控件中移动。在第一个控件后面把WS_GROUP风格设置为FALSE的控件都属于这一组。下一个具有WS_GROUP风格的控件将开始下一组(这意味着一个组在下一组的开始处结束)。  
• WS_HSCROLL 创建一个具有水平滚动条的窗口。  
• WS_MAXIMIZE 创建一个最大化的窗口。  
• WS_MAXIMIZEBOX 创建一个具有最大化按钮的窗口。  
• WS_MINIMIZE 创建一个初始状态为最小化的窗口。仅与WS_OVERLAPPED风格一起使用。  
• WS_MINIMIZEBOX 创建一个具有最小化按钮的窗口。  
• WS_OVERLAPPED 创建一个重叠窗口。重叠窗口通常具有标题条和边界。  
• WS_OVERLAPPEDWINDOW 创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU,WS_THICKFRAME,WS_MINIMIZEBOX和WS_MAXIMIZEBOX风格的重叠式窗口。  
• WS_POPUP 创建一个弹出式窗口,不能与WS_CHILD风格一起使用。  
• WS_POPUPWINDOW 创建一个具有WS_BORDER,WS_POPUP和WS_SYSMENU风格的弹出窗口。为了使控制菜单可见,必须与WS_POPUPWINDOW一起使用WS_CAPTION风格。  
• WS_SYSMENU 创建一个在标题条上具有控制菜单的窗口。仅对带标题条的窗口使用。  
• WS_TABSTOP 指定了一些控件中的一个,用户可以通过TAB键来移过它。TAB键使用户移动到下一个用WS_TABSTOP风格定义的控件。  
• WS_THICKFRAME 创建一个具有厚边框的窗口,可以通过厚边框来改变窗口大小。  
• WS_VISIBLE 创建一个最初可见的窗口。  
• WS_VSCROLL 创建一个具有垂直滚动条的窗口。
原文地址:https://www.cnblogs.com/whzym111/p/6228362.html