MFC消息映射-小白理解(4)

1 消息映射->不使用继承而使用宏定义的处理消息的函数on系列

消息映射好像一个子函数

 

 

逻辑过程是在类申明消息映射:

DECLARE_MESSAGE_MAP();//申明消息映射

申明之后当然是实现啦:

BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd);//处理哪一个窗口?继承谁

ON_WM_PAINT();

END_MESSAGE_MAP()

那处理处理哪一个消息??:例如绘制

WM_PAINT 消息 WM表示是表示系统传入消息,ON表示映射

当然接收一个消息,必须函数申明与定义:

afx_msg void OnPaint();

然后是对每一个消息进行申明处理

afx_msg void OnPaint();

DECLARE_MESSAGE_MAP();//申明消息映射

 

 

#include"myapp.h"
MyApp myapp;
BOOL MyApp::InitInstance()//::并且是继承的虚函数构造函数
{
this->m_pMainWnd = new MyFrame();//既然是指针就必须new 一段内存
//应用程序对象成员变量m_pMainWnd是一个窗口指针,即主窗口的指针。
//初始化实例时创建N多个窗口,而只有这个指针指向的才是主窗口
this->m_pMainWnd->ShowWindow(this->m_nCmdShow);//类似函数this Fun(this varibal)
//m表示CWinApp的数据成员变量,'_'是一个命名的规则,方便阅读,n表int型,Cmd表命令Show表示应用程序窗口
//的表现状态,如传递窗口的最大化或最小化...
this->m_pMainWnd->UpdateWindow();
return TRUE;//全大写的TRUE
}
 
BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd) //没有冒号
 
ON_WM_PAINT()
END_MESSAGE_MAP()
 
 
MyFrame::MyFrame()
{
this->Create(NULL, TEXT("my"));
  //http://heduoduo321.blog.163.com/blog/static/657211222011279282841/
}
 
void MyFrame::OnPaint()//记住函数必须有类型void
{
CPaintDC dc(this);//著名的DC,所有窗口都是绘制出来的
//把当前的窗口传进去绘制
//CPaintDC类是一个来自CDC的设备环境类。相当于显示器。
dc.Ellipse(100, 100, 200, 300);
//学习如何画椭圆与画文字
CRect crect; //申请一块方框
this->GetClientRect(&crect);//我的框架里面拿到这个窗口
//CPaintDC dc(this);通过this 与窗口框架关联,窗口内部客户区
//&是引用
 
dc.DrawText(TEXT("addddd"),-1, &crect,
DT_SINGLELINE|DT_CENTER|DT_VCENTER);//符号是|
//第一个是绘制内容,-1文字字数,绘制哪里,一行,左右居中,V居中
}
 

 

#include <afxwin.h> //MFC的头文件
class MyApp : public CWinApp //类的继承
{
public:
virtual BOOL InitInstance();//避免多层继承virtual
};//结束;BOOL是大写
 
class MyFrame : public CFrameWnd
{
public:
MyFrame();//构造函数与子类一样
protected:
afx_msg void OnPaint();
DECLARE_MESSAGE_MAP();//申明消息映射
};
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值