参考:
VS2015 建立一个C++的MFC简易窗体程序项目(https://www.cnblogs.com/xingboy/p/11059721.html)
对话框中各项属性介绍(https://blog.csdn.net/u012350993/article/details/26093051)
MFC窗口风格 WS_style/WS_EX_style(超详细)(https://www.cnblogs.com/chanyuantiandao/p/15598328.html)
最近痛苦学习MFC,不知道MFC是否会被淘汰,博主有C++/qt基础。MFC大部分学习资料都比较老,根据网上七零八凑的学习资料整合成自己的博文,理解不够深入,有问题欢迎指出。
同样有关属性的超链接为搜索到的好理解的好文,后期怕丢失可能会做有关的转载记录,属性值介绍在后面可点目录链接跳转。
文章目录
- 建立一个单纯的窗体程序项目步骤。
- 窗体右侧各个属性值介绍。
- Appearance
- Behavior
- Font
- Misc
- Position
建立一个单纯的窗体程序项目步骤。
把预先自动生成的按钮跟文字删除,拖动左边的控件到窗体上,就可以类似QT那样子编辑界面了,双击控件还可以自动生成控件的触发函数,这个跟C#的窗体控件编程一样,这样就可以根据自己需要编辑界面了,编辑效果如下:
窗体右侧各个属性值介绍。
Appearance
- 3D Look:指定对话框的字体将为非粗体,控件将具有3D边框。我开关尝试了一下默认看不出什么差别。
- Absolute Align:表示使用坐标相对于屏幕原点。确定对话框的对齐方式,设置为true运行窗口自动与屏幕左上角对齐显示;取消选中该复选框,则对话框相对于父窗口的左上角坐标显示。
- Border:表示窗口边框。None没有边框,且没有标题栏。Thin表示窗口具有细的边框;Resizing表示窗口具有粗边框,用户能通过鼠标调整窗口大小;Dialog Frame是默认选项,表示默认风格。
- Caption:设置对话框标题。
- Client Edge:对话框具有凹陷的边沿。设置为true后可明显看出内框有凹下去的感觉。
false
true:
- Clip Children:设置为true后,表示在窗口中进行绘制操作时去除子窗口占据的区域。个人理解就是是否绘制子窗口,详细可看超链接。
- Clip Siblings:不重画子窗口。排除子窗口之间的相对区域,也就是说,当一个特定的窗口接收到绘图消息时,将所有重叠窗口排除在外,只重绘指定的子窗口。
- Composited:将一个窗体的所有子窗口使用双缓冲按照从低到高方式绘制出来。
- Horizontal Scrollbar:是否在窗口中显示水平滚动条。
- Layered:设置窗口透明度,设置为true则窗口全透明不可见。
- Layout RTL:设置为true则变为从右往左的布局方式,适用于从右往左的阅读习惯。
- Left Scrollbar:将垂直滚动条放在客户区的左边。
- Maximize Box:需要先将System Menu属性设置为true才可编辑,设置最大化按钮是否可用。
- Minimize Box:同上,设置最小化按钮是否可用。
- No Activate:处于顶层但不激活。设置为true之后点击combox主窗体会失去焦点,如图所示。
- Overlapped Window:表示窗口是重叠窗口,重叠窗口是一个顶层窗口,并且具有标题栏和边框。组合了WS_EX_CLIENTEDGE(带阴影的边缘)和WS_EX_WIND-OWEDGE风格。
- Palette Window:带立体边框,有工具条窗口样式,窗口在顶层。设置为true后,Tool Window、Topmost、Window Edge状态都会跟着变化。
- Static Edge:具有默认的三维效果边框。当窗口为不可用状态时创建一个三维边缘。我是没看出什么差别。
- Style:窗口风格,Popup表示弹出窗口,弹出窗口不能作为子窗口;Overlapped表示窗口是重叠窗口,重叠窗口是一个顶层窗口,并且具有标题栏和边框;Child表示窗口是一个子窗口,子窗口必须在窗口内显示。
- System Menu:窗口是否具有标题栏按钮以及右键弹出式菜单。与Maximize Box和Minimize Box联动。
- Title Bar:表示窗口是否具有标题栏。其中如果Style为true则必须有标题栏该状态不可改,同时状态栏设置为false,状态栏上所有属性将不可更改。
- Tool Window:创建工具栏窗口。工具栏窗口通常作浮动工具栏。工具栏窗口中的标题栏比正常窗口的标题小一些,文本字体也小于正常标题栏字体。
设置为true后样式变为这样:
- Topmost:窗口置顶(停留在所有非最高层窗口的上面)。指定用这个风格创建的窗口必须被放在所有非顶层窗口的上面,即使这个窗口已经不处于激活状态,它还是保留在最上面。应用程序可以用SetWindowsPos成员函数来加入或去掉这个属性。
- Transparent:是窗口透明,在该窗口下的所有窗口不能被覆盖。通常,该窗口在其下面的所有兄弟窗口更新后才会接收到WM_PAINT消息。
- Vertical Scrollbar:是否在窗口中显示垂直滚动条。设置为true后:
- Window Edge:带凸起边缘的边框。
Behavior
- Accept Files:对话框接受文件拖动,用户可将文件拖动到对话框上,此时对话框将接收到WM_DROPFILES消息。
- Application Window:个人理解是否是一个单独的可执行程序EXE。
- Disabled:表示对话框创建时初始化为不可用状态。所有按钮及状态栏都为不可选中状态。
- NoInheritLayout:子控件不继承窗体或控件的布局。
- Right To Left Reading Order:从右到左的阅读顺序。
- Set Foreground:使对话框在最前面显示。表示设置前台窗口,并激活窗口,创建窗口的线程被放置在前台,使得它的优先权略高于其他线程。前台窗口是Z轴中的顶层窗口,是用户工作的窗口。
- System Model:使窗口始终保持在最上方。
- Visible:对话框在首次显示时是否可见。
Font
- Font(Size):设置字体样式大小,界面会随着字体大小变化整体变化。
- Use System Font:是否使用系统字体。
Misc
- (Name):顾名思义,不可更改创建时生成。
- Center Mouse:在对话框中使鼠标指针居中。true对话框创建出来时以鼠标位置居中,false对话框创建出来后为屏幕居中位置。
- Class name:向Windows操作系统注册的窗口类名,不同于C++的类名,是为了支持C程序设计提供的。一般不用。
- Control:控件模式,可作为其他对话框的子窗口。使对话框作为另一个窗口的子控件被显示,此时,对话框就像一个普通的控件一样。用户可用tab键跳转到该界面。
- Control Parent:允许用户用TAB键遍历窗口的子窗口。
- ID:用于设置资源ID,是程序对资源的标识。
- Local Edit:在对话框内部为编辑框分配内存(仅支持16位程序)。表示对话框中的编辑框控件使用应用程序数据段中的内存。
- Menu:have no idea
- No Fail Create:表示创建过程出现错误,仍然创建对话框。
- No Idle Message:表示当消息队列中没有更多的等待消息时,阻止WM_ENTERLDLE消息发送到对话框的所有者。
- No Parent Notify:表示子窗口不能发送WM_PARENTNOTIFY消息到它的父窗口。
- Right Align Text:文本右对齐
Position
- Center:对话框在工作区域居中显示。
- X Pos:对话框创建时左上角x相对于屏幕左上角的位置。
- Y Pos:对话框创建时左上角y相对于屏幕左上角的位置。