MFC概述和基础使用

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

发布了59 篇原创文章 · 获赞 46 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/sinat_41852207/article/details/86675928
今日推荐