MFC创建窗口流程(笔记)

一、窗口建立

创建桌面项目,建立类似如下两个文件

 在项目中,找到“高级”->“MFC的使用”,修改为下图所示

注意,如果在后面的运行中出现缺少mfcXXX,dll的情况,请自行下载对应组件后放入系统文件(system32/syswow64)中。如果仍旧不行,请核对上诉修改的配置器是否为编译时使用的(release/debug,86/64)。

mfc.h文件中:

#pragma once
#include<afxwin.h>
//应用程序类
class MyApp :public CWinApp {
public:
	//该处为MFC程序的入口地址
	virtual BOOL InitInstance();

private:

};

//框架类
class MyFrame :public CFrameWnd {
public:
	MyFrame();
private:

};

mfc.cpp中

#include "mfc.h"
#pragma once
MyApp myApp;//全局唯一的MyAPP对象,代表整个进程实例

BOOL MyApp::InitInstance(){
	/*
	1.创建框架类对象
	2.显示窗口
	3.更新窗口
	4.保存框架类对象指针
	*/
	MyFrame* frame = new MyFrame;
	//显示窗口,此处用的正常显示
	frame->ShowWindow(SW_SHOWNORMAL);
	//更新窗口
	frame->UpdateWindow();
	//保存框架类对象指针
	m_pMainWnd = frame;
	return TRUE;
}

MyFrame::MyFrame(){
	//CWnd类的成员函数
	//CFrameWnd继承于CWnd
	//类名(NULL表示用默认名),标题,之后有默认值
	Create(NULL,TEXT("MFC"));

}

结果

1.一个MFC程序中,有且只有一个全局应用程序类对象(myApp)

2.在程序入口函数实现功能(InitInstance())

        2-1.为框架类的准备一个无参构造函数,使用CWnd::Create,完成成员的初始化

        2-2.创建MyFrame对象,并为其分配空间

        2-3.为框架类设置显示模式

        2-4.调用框架类对象的更新窗口函数

        2-5.保存框架类的指针

二、事件处理

消息映射

1.在框架类中,声明消息映射宏

//框架类
class MyFrame:public CFrameWnd {
public:
	MyFrame();
	//声明消息映射宏
	DECLARE_MESSAGE_MAP()


private:

};

2.在实现文件中类外定义消息宏

3.程序会在Begin与End之间不断循环,在其间添加事件,该事件发生时会返回消息映射宏。

//定义消息宏
//派生类,基类
BEGIN_MESSAGE_MAP(MyFrame, CFrameWnd)
	ON_WM_LBUTTONDOWN()//鼠标左键被点击

END_MESSAGE_MAP()

4.为事件声明其处理函数

//框架类
class MyFrame:public CFrameWnd {
public:
	MyFrame();
	//声明消息映射宏
	DECLARE_MESSAGE_MAP()
	afx_msg void OnLButtonDown(UINT, CPoint);
private:

};

5.于MFC.cpp中实现它

void MyFrame::OnLButtonDown(UINT, CPoint){
	MessageBox(TEXT("鼠标左键被点击"));
}

结果:

绘图事件

相同方式,声明消息处理函数

 afx_msg void OnPaint();

绘图事件

ON_WM_PAINT()

实现部分

cdc为绘画实例,构造时需填入指被画对象(this)

void MyFrame::OnPaint(){
	CPaintDC cdc(this);
	cdc.TextOutW(100,100,TEXT("你好MFC"));//x轴,y轴,文字
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值