MFC窗口创建及消息映射机制

7 篇文章 0 订阅

 本文是学习以下视频教程的记录

05_MFC窗口的创建_哔哩哔哩_bilibili

06_消息映射机制_哔哩哔哩_bilibili

 首先使用VS创建Windows桌面向导项目:

然后创建头文件mfc.h(名称自定义)

#ifndef MFC_H

#include <afxwin.h>//使用MFC必须包含此头文件


class MyApp : public CWinApp
{
public:
	//程序入口
	virtual BOOL InitInstance();


};

class MyFrame : public CFrameWnd
{
public:
	MyFrame();

//声明消息映射(必须在类声明中),提供消息映射机制
	DECLARE_MESSAGE_MAP();

	afx_msg void OnLButtonDown(UINT, CPoint);
	afx_msg void OnChar(UINT, UINT, UINT);
	afx_msg void OnPaint();
};


#endif // !MFC_H

对应mfc.cpp文件如下:

#include "mfc.h"

MyApp app;//全局应用程序对象,有且仅有一个

BOOL MyApp::InitInstance()
{
	//创建窗口
	MyFrame* frame = new MyFrame;
	
	//显示和更新
	frame->ShowWindow(SW_SHOWNORMAL);

	m_pMainWnd = frame;//保存指向应用程序主窗口的指针

	return TRUE;//返回正常初始化
}


MyFrame::MyFrame()
{
	Create(NULL, TEXT("mfc"));
}

void MyFrame::OnLButtonDown(UINT, CPoint point)
{
	/*TCHAR buf[1024];
	wsprintf(buf, TEXT("x = %d, y = %d"), point.x, point.y);
	MessageBox(buf);*/

	//mfc中的字符串 CString
	CString str;
	str.Format(TEXT("x = %d, y = %d"), point.x, point.y);
	MessageBox(str);
}

void MyFrame::OnChar(UINT key, UINT, UINT)
{
	CString str;
	str.Format(TEXT("按下了%c 键"), key);
	MessageBox(str);
}

void MyFrame::OnPaint()
{
	CPaintDC dc(this);
	dc.TextOutW(100, 100, TEXT("AAAAAA"));
	dc.Ellipse(10, 10, 100, 100);
}


//定义消息宏
BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)//开始
	//中间可以捕获任意消息
	ON_WM_LBUTTONDOWN()
	ON_WM_CHAR()
	ON_WM_PAINT()
END_MESSAGE_MAP()//结束

总结,MFC程序大致的运行流程:

  1. 包含afxwin.h头文件
  2. 实例化应用程序对象(继承于CWinApp)
  3. 执行程序的入口函数
  4. 在入口函数中我们需要1、给框架类对象(继承于CFrameWnd)动态分配内存,2、在框架类对象的构造函数中通过Create创建窗口,3、显示和更新窗口,4、将框架类对象赋值给m_pMainWnd
  5. 对项目进行配置:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值