QT mfc
一. 概述
微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类
二. 人生第一个mfc程序
1. 创建 32位窗口程序
2. 添加 mfc.h
头文件
#include <afxwin.h>
class MyWindow : public CWinApp
{
public:
virtual BOOL InitInstance();
};
class MyFrame : public CFrameWnd
{
public:
MyFrame();
};
3. 添加 mfc.cpp
实现类
#include "mfc.h"
MyWindow window; // 全局程序对象 必须要有 并且只能有一个
BOOL MyWindow::InitInstance()
{
// 创建窗口类
MyFrame* frame = new MyFrame();
// 显示方式 ,默认
frame->ShowWindow(SW_SHOWNORMAL);
// 更新
frame->UpdateWindow();
m_pMainWnd = frame; // 指向窗口程序的指针
return TRUE;
}
MyFrame::MyFrame()
{
Create(NULL,TEXT("窗口标题"));
}
三. 消息映射
消息映射是一个将消息和成员函数互相关联的表
1. 捕获鼠标左键
1.1 MyFrame 类中声明宏
DECLARE_MESSAGE_MAP()
1.2 声明消息映射 将消息映射到函数中
// 声明 分界宏
BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd) // 两个参数 参数1 消息映射的类,参数2 是参数1 的父类
ON_WM_LBUTTONDOWN() // 鼠标左键按下
//声明 结束宏
END_MESSAGE_MAP();
1.3 声明接受消息的函数
MyFrame中:
// 鼠标左键 函数声明
afx_msg void OnLButtonDown(UINT,CPoint);
1.4 实现接受消息的函数
void MyFrame::OnLButtonDown(UINT, CPoint point)
{
CString str;
str.Format(TEXT("鼠标x点=%d,鼠标y点=%d"),point.x,point.y);
MessageBox(str);
}
2. 捕获键盘按下
2.1 声明 消息映射
// 声明 分界宏
BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd) // 两个参数 参数1 消息映射的类,参数2 是参数1 的父类
ON_WM_LBUTTONDOWN() // 鼠标左键按下
ON_WM_CHAR() //声明 键盘 消息映射
//声明 结束宏
END_MESSAGE_MAP();
2.2 声明消息处理的函数
// 键盘 函数声明
afx_msg void OnChar(UINT, UINT, UINT);
2.3 实现消息处理的函数
void MyFrame::OnChar(UINT key, UINT, UINT)
{
CString str;
str.Format(TEXT("按下了 %c键"), key);
MessageBox(str);
}
3. 绘图
3.1 声明消息映射
// 声明 分界宏
BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd) // 两个参数 参数1 消息映射的类,参数2 是参数1 的父类
ON_WM_LBUTTONDOWN() // 鼠标左键按下
ON_WM_CHAR() //声明 键盘 消息映射
ON_WM_PAINT() // 绘图
//声明 结束宏
END_MESSAGE_MAP();
3.2 声明消息处理的函数
// 绘图
afx_msg void OnPaint();
3.3 实现消息处理的函数
void MyFrame::OnPaint()
{
CPaintDC dc(this); // this指的是绘图设备
// 画字
dc.TextOutW(100,100,TEXT("人生第一次通过mfc 绘图"));
// 画圆
dc.Ellipse(10,10,100,100);
}