mfc (1)

一. 概述

微软基础类库(英语: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);
}

猜你喜欢

转载自blog.csdn.net/haiyanghan/article/details/113618295
MFC
今日推荐