当前位置: 首页 > news >正文

MFC消息机制

1.消息映射

消息映射是一个将消息和成员函数相互关联的表。比如,框架窗口接收到一个鼠标左击消息,MFC将搜索该窗口的消息映射,如果存在一个处理WM_LBUTTTONDOWN消息的处理程序,然后就调用

OnButtonDown。

2.消息映射机制

2.1 声明宏 写到.h中

2.2 分界宏写到.cpp中

2.3 找消息宏 写到 分界宏 中间

2.4 把函数 原型声明 写到.h中

2.5 函数的实现 写到.cpp中

2.6 鼠标、键盘、绘图

mfc.h

#include<afxwin.h> //mfc头文件

class MyApp :public CWinApp //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();

};

mfc.cpp

#include "mfc.h"

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

BOOL MyApp::InitInstance()

{

//创建窗口

MyFrame *frame = new MyFrame;

//显示和更新

frame->ShowWindow(SW_SHOWNORMAL);

frame->UpdateWindow();

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

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

}

//分界宏

//参数:

//MyFrame 指定消息映射所属的类的名字。

//CFrameWnd 指定theClass的基类的名字。

BEGIN_MESSAGE_MAP(MyFrame,CFrameWnd)

ON_WM_LBUTTONDOWN() //鼠标左键按下

ON_WM_CHAR() //键盘

ON_WM_PAINT()//绘图宏

END_MESSAGE_MAP();

MyFrame::MyFrame()

{

Create(NULL, TEXT("fist 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.TextOutA(623, 550, TEXT("gogogogogo"));

//画椭圆

dc.Ellipse(100,100,150,150);

}

http://www.lryc.cn/news/9581.html

相关文章:

  • 全国计算机等级考试报名照片要求以及证件照制作教程
  • SQLSERVER 临时表和表变量到底有什么区别?
  • 技术生态异军突起,昇思MindSpore进入AI框架第一梯队
  • 审批流、工作流、业务流
  • 如何利用知识库加强内部管理?
  • 饕餮 NFT 作品集来袭!
  • C++中的内存分区、引用、函数
  • 关于angular表格total模板中一直为0
  • 多线程事务怎么回滚
  • 基于FPGA的时间数字转换(TDC)设计(五:基于Carry4的高精度TDC设计)
  • 【C++】二叉搜索树的实现(递归和非递归实现)
  • 春招来了,如何正确使用领英超高效招聘海外员工、挖掘人才?
  • Mysql中锁机制深入理解
  • 去中心化社交网络协议除了Nostr还有哪些?
  • 【FT2000/4+X100】调试记录
  • 我的Android启动优化—【黑白屏优化】
  • TongWeb8编码设置说明
  • 不同相机之间图片像素对应关系求解(单应性矩阵求解)
  • 远程管理时代,还得是智能化PDU才靠得住!
  • 通俗易懂理解——布隆过滤器
  • TypeScript 学习之类型推导
  • Android四大组件——Service详解
  • svg转png
  • 教你如何搭建人事OA-员工管理系统,demo可分享
  • C++递推基础知识
  • 【Python入门第十天】Python 布尔
  • WebDAV之π-Disk派盘+Piktures
  • Revit问题:Navisworks中导入的rvt模型角度不正确调整
  • 最全正则验证
  • 阿里云服务器入门使用流程 新手学习教程