1.布局:
添加控件,右键控件,属性,必改:ID
2.右键控件,添加事件处理程序(选择消息事件(点击等)),或双击控件(点击),即转到控件消息对应槽函数,也可以在类向导(右键)里选已有的消息,然后添加函数;系统消息,可以在类向导里,消息,选择系统自带的消息,然后点添加处理程序(比如滑动条控件、下拉列表combo box控件等)
3.GetDlgItemTextW(ID);和SetDlgItemTextW(ID,CString对象),可以获取和修改控件文本
4.使用控件有两种方法:(qt中直接用 this->ui->控件ID->函数 就可以,MFC不同)
(1)右键控件,添加变量,可以添加一个控件的局部变量,通过这个变量可以调用控件的很多函数,来实现很多功能。在类向导中,选成员变量,也可以添加。
(2)用GetDlgItem(ID),可以获取控件的指针,然后通过这个指针可以调用控件的函数。
5.MFC文件结构(基于对话框):
**.h, **.cpp 这个里面定义了CwinApp的派生类。CwinApp类中封装了windows的消息循环机制,并负责应用程序的初始化和退出的清理工作。
**Dlg.h, **Dlg.cpp 这个里面是创建界面的,添加的变量会在这个类里面。里面有和个OnInitDialog函数,// TODO: 在此添加额外的初始化代码,可以在这个里面加一些初始化的东西(可以认为是全局的)
6.MFC带的函数一般是开头大写
7.有的MFC函数和windows API 同名,调用这种windows API时前面要加 ::
8.MessageBox()弹窗
----------------------------------------------------------------------------------------------
概述
MFC全称是Microsoft Foundation Classes,即微软基础类库。
微软在MFC里以C++类的形式集成了Windows操作系统的大量API,并扩展了一些类如CArray,CString等;此外,MFC还包含了一个windows应用程序开发框架。
以下是对MFC开发框架的一些小结:
1.windows的消息机制
每一个MFC程序对应一个消息循环,应用程序启动时,WinMain会启动这个消息循环,不断检索操作系统发来的消息,当收到操作系统发来的消息时(鼠标点击丶键盘有输入等事件会触发操作系统的消息),消息循环将消息下发到应用程序对应的窗口过程,窗口过程根据消息的不同类型执行不同的处理。
2.MFC框架内的所有标准控件,都是继承自CWnd的,要想控件显示成自己的风格,需要继承已有的控件类,在自己写的类中重绘,如果能找到一些别人写好的MFC自绘控件,也可以拿来用用。
3.MFC控件自绘的时候用的是CDC,CDC是设备描述表,它将显示器等外设虚拟到CDC,重绘时只需要操作CDC虚拟的逻辑平面即可,操作系统能将CDC映射到显示器上。
4.MFC框架可以自定义消息,自定义消息在发送消息的同时还可以传送两个参数,在有多线程或回调函数的项目中很有用,需要频繁更新控件的时候也可以通过发送消息的方式。
5.除了已有的标准控件,MFC还支持COM组件丶ActiveX控件等。
6.MFC中要使用编码无关的字符常量时,用_T宏,char类型用TCHAR,char*用LPTSTR,const char*用LPCTSTR.
7.MFC标准控件
MFC标准控件可直接拖动,放到界面上,每一种标准控件都可以绑定两种类型的变量:值类型和控件类型, 值类型直接与控件显示的值绑定, 控件类型除了可以获取控件的值以外还可以控制控件的行为和属性。
UpdateData(TRUE)和UpdateData(FALSE):
UpdateData(TRUE)是将界面上所有控件显示的值赋值给它对应的值类型的变量,UpdateData(FALSE)是将一个值类型的变量的值刷新到它对应的控件上显示出来。
如果要单独获取或设置某个控件的值,可以用GetDlgItemText,GetDlgItemInt,SetDlgItemInt,SetDlgItemText等通过控件ID与控件交互的函数.
8.MFC不能跨平台,Qt可以
参考:https://blog.csdn.net/qq_26164563/article/details/80928825
---------------------------------------------------------------------------------------------------------------------------------------------
控件
button
edit control 文本编辑框
combo box 下拉列表选项
check box 多选
Radio button 单选
scroll bar滚动条(word里面那种)
progress control进度条,
spin control 数值增减条,一般配合edit control使用
slider control 滑块(添加事件处理消息要在系统定义的消息里面选,不是双击)(添加变量,如m_slid, 然后m_slid.GetPos可以获取位置,这个可以写在前面的消息处理函数中。m_slid.SetRange(1,100),这个是设置滚动条的数值范围,这个可以写在初始化函数中)
hotKey 热键,可以自动获取键盘输入的键
list control 列表
tree control
rich edit control 富文本框,和edit control差别是这个里面字体是带格式的,可以有多种格式。从而可以利用按钮,来改变这个控件里面字体格式
tab control 选项卡界面,类似于工具栏。点一个按钮,换一个界面。界面要在资源视图中,Dialog上右键,添加Dialog,会出现一个界面,然后添加类,然后绑定
---------------------------------------------------------------------------------------------
CString类是MFC中常用的字符串类型,一般函数的参数是字符串的都是CString,它有很多方法函数,类似Qt中的QString
CString str;
int num = 1;
str.Format(L"序号为:%d",num);
--------------------------------------------------------------------------------------------
BYTE是字节,也就是8位。用来储存char或者char类型指针。
WORD是字,也就是16位。用来储存16位整数或者16位地址。
DWORD是双字,也就是32位。可以用来储存32位整数或者32位内存地址。
主要是为了在编写和阅读源码时方便。它们在windef.h的头文件中被定义。
typedef unsigned char BYTE
typedef unsigned short WORD;
typedef unsigned long DWORD