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

湛江市住房和城乡建设局网站赣州港招聘信息

湛江市住房和城乡建设局网站,赣州港招聘信息,石家庄个人谁做网站,深圳手机模板建站消息映射机制 Window消息分类消息映射机制的使用代码示例 MFC框架利用消息映射机制把消息、命令与它们的处理函数映射起来。具体实现方法是在每个能接收和处理消息的类中,定义一个消息和消息函数指针对照表,即消息映射表。 在不重写WindowProc虚函数的大…

消息映射机制

  • Window消息分类
  • 消息映射机制的使用
    • 代码示例

MFC框架利用消息映射机制把消息、命令与它们的处理函数映射起来。具体实现方法是在每个能接收和处理消息的类中,定义一个消息和消息函数指针对照表,即消息映射表。

在不重写WindowProc虚函数的大前提下,仍然可以处理消息。

Window消息分类

  1. 标准Windows消息:除WM_COMMAND外以WM_开头的消息都是标准消息。
  2. 命令消息:消息名为WM_COMMAND,消息中附带了标识符ID来区分来自哪个菜单、工具栏按钮或加速键的消息。
  3. 通知消息:通知消息一般由列表框等子窗口发送给父窗口,消息名也是WM_COMMAND,其中附带了控件通知码来区分控件。
  4. 用户自定义消息:用户定义一个宏作为消息,值大于WM_USER。

CWnd的派生类可以接收者四种消息,命令消息还可以由文档类接收。
命令消息的处理顺序:框架类(CFrameWnd派生类)优先于应用程序类(CWinApp派生类)。

消息映射可以通过VS2022的菜单项自动生成
项目-》类向导 选择你需要再哪个类中添加对应的消息。
如下图:
在这里插入图片描述

消息映射机制的使用

  1. 类内必须添加声明宏
    DECLARE_MESSAGE_MAP() 
    
  2. 类外必须添加实现宏
    BEGIN_MESSAGE_MAP(theClass,baseClass)
    END_MESSAGE_MAP()
    

当一个类具备上述两个条件,这个类就可以按照消息映射机制来处理消息。

代码示例

#include <afxwin.h>
#include "resource.h"//自定义消息
#define WM_MYMESSAGE WM_USER+1001//1.定义自己的框架类CMyFrameWnd,派生自CFrameWnd类
class CMyFrameWnd :public CFrameWnd {DECLARE_MESSAGE_MAP()public:afx_msg int OnCreate(LPCREATESTRUCT param);afx_msg void OnPaint(void);afx_msg void OnMouseMove(UINT nKey, CPoint pt);afx_msg LRESULT OnMyMessage(WPARAM wParam,LPARAM lParam);afx_msg void OnOpen();afx_msg void OnInitMenuPopup(CMenu* pPopup,UINT nPos, BOOL i);afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);int m_x;int m_y;CMenu menu;};BEGIN_MESSAGE_MAP(CMyFrameWnd,CFrameWnd)//使用标准消息实现WM_CREATE (窗口创建)消息的处理ON_WM_CREATE()//使用标准消息实现WM_PAINT(绘图)消息的处理ON_WM_PAINT()//使用标准消息实现鼠标移动消息ON_WM_MOUSEMOVE()//自定义消息ON_MESSAGE(WM_MYMESSAGE,OnMyMessage)//命令消息ON_COMMAND(ID_OPEN, &CMyFrameWnd::OnOpen)//标准消息ON_WM_INITMENUPOPUP()//标准消息ON_WM_CONTEXTMENU()
END_MESSAGE_MAP()//ON_WM_CREATE消息调用的函数
int CMyFrameWnd::OnCreate(LPCREATESTRUCT param) {//加载菜单方式二menu.LoadMenu(IDR_MENU1);this->SetMenu(&menu);AfxMessageBox("ON_WM_CREATE");//发送自己定义的消息::PostMessage(this->m_hWnd, WM_MYMESSAGE, 1, 2);return CFrameWnd::OnCreate(param);
}//ON_WM_PAINT消息调用的函数
void CMyFrameWnd::OnPaint(void) {PAINTSTRUCT ps = { 0 };HDC hdc = ::BeginPaint(this->m_hWnd, &ps);::TextOutA(hdc, m_x, m_y, "hello", 5);::EndPaint(m_hWnd, &ps);
}//OnMouseMove消息调用的函数
void CMyFrameWnd::OnMouseMove(UINT nKey, CPoint pt) {m_x = pt.x;m_y = pt.y;//hello 字符串跟着鼠标移动::InvalidateRect(this->m_hWnd, NULL, TRUE);}
//自定义消息
LRESULT CMyFrameWnd::OnMyMessage(WPARAM wParam, LPARAM lParam) {CString str;str.Format("wParam=%d, lParam=%d", wParam, lParam);AfxMessageBox(str);return 0;
}//命令消息 点击打开
void CMyFrameWnd::OnOpen()
{AfxMessageBox("ON_COMMAND");
}//设置菜单状态
void CMyFrameWnd::OnInitMenuPopup(CMenu* pPopup, UINT nPos, BOOL i) 
{//ID为ID_OPEN的菜单项前面打对号pPopup->CheckMenuItem(ID_OPEN,MF_CHECKED);
}//鼠标右键
void CMyFrameWnd::OnContextMenu(CWnd* pWnd, CPoint point)
{//HMENU hPopup = ::GetSubMenu(menu.m_hMenu,0);//展示菜单//::TrackPopupMenu(hPopup,TPM_LEFTALIGN|TPM_TOPALIGN,point.x,point.y,0,this->m_hWnd,NULL);//上下两种方式均可CMenu* pPopup = menu.GetSubMenu(0);//展示菜单pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_TOPALIGN, point.x, point.y,this);
}//定义自己应用程序类CMyWinApp,派生自CWinApp类,
//并定义构造以及重写InitInstance虚函数,在函数中创建并显示窗口
class CMyWinApp :public CWinApp {public :CMyWinApp() {}virtual BOOL InitInstance() {CMyFrameWnd* pFrame = new CMyFrameWnd;//最后一个参数 加载菜单方式一(常用)//pFrame->Create(NULL,"MFCBase",WS_OVERLAPPEDWINDOW,CFrameWnd::rectDefault,NULL,(CHAR*)IDR_MENU1);pFrame->Create(NULL, "MFCBase");m_pMainWnd = pFrame;pFrame->ShowWindow(SW_SHOW);pFrame->UpdateWindow();return TRUE;}
};//3.定义CMyWinApp类的对象(程序的爆破点)
CMyWinApp theApp;

文章转载自:

http://IUO8k4Ad.hqhLx.cn
http://wWyYiyb4.hqhLx.cn
http://gruhzs1l.hqhLx.cn
http://sERgrFNW.hqhLx.cn
http://Nj7hTjsD.hqhLx.cn
http://IpAf4qAj.hqhLx.cn
http://4bzfHVBt.hqhLx.cn
http://2K2yV5Li.hqhLx.cn
http://3uFkymex.hqhLx.cn
http://xc2fD828.hqhLx.cn
http://Q5G3vENP.hqhLx.cn
http://4MYI9jn4.hqhLx.cn
http://HhSI3CIs.hqhLx.cn
http://wrWDbADq.hqhLx.cn
http://hW6xUVf1.hqhLx.cn
http://crvz0eWH.hqhLx.cn
http://3Wba00Sa.hqhLx.cn
http://E6MD44mC.hqhLx.cn
http://rTdXMqOm.hqhLx.cn
http://pNnFR4o9.hqhLx.cn
http://oYExNjaY.hqhLx.cn
http://ziCRJvTw.hqhLx.cn
http://YOsGfNiG.hqhLx.cn
http://1AL7ipP3.hqhLx.cn
http://d1MCib4m.hqhLx.cn
http://wJ6PCIOs.hqhLx.cn
http://G3NY2p5Z.hqhLx.cn
http://vh7vq2cU.hqhLx.cn
http://uTxeYHsG.hqhLx.cn
http://Thbh2ZdO.hqhLx.cn
http://www.dtcms.com/wzjs/660476.html

相关文章:

  • 那个网站卖数据库百度代理推广
  • 怎么做网站多少钱广州集美组设计公司官网
  • 建站系统的应用场景图片外链工具
  • 放心的网站建设代理学做前端的网站
  • server2012做网站论述网站推广的方法与技巧
  • 横沥网站建设公司地域文化创意产网站建设规则
  • 厦门建行网站网络营销的基本方法
  • 网站后台密码修改网站关键词的选择
  • dedecms 英文网站深圳福田天气
  • 怎么让网站快速被收录局域网网站建设的步骤过程
  • 电子商务网站规划报告手机app制作费用
  • 有没有直接做网站的软件编程培训班学费是多少
  • 网站建设营销技巧购物网站建设推进表
  • 建站公司还有前途吗在电脑上建设网站
  • 新的网站的建设步骤电商平台怎么加入
  • 1元涨1000粉丝网站动感地带套餐
  • 福建有没有网站做一件代发安装wordpress 建立数据库连接时出错
  • 网站设计 html5网站关键词连接符
  • 手车做网课网站多少数字短链接生成
  • 大航母网站建设流程企业名录搜索软件免费
  • 国外建站工具番禺网站建设找哪家
  • 中国住房和城乡建设厅网站精通网站建设 全能建站密码pdf
  • 手机端网站开发建设内容广州网络营销服务公司
  • 与做机器人有关的网站网站开发服务税收编码
  • 网站开发软件开发流程图做自己的卡盟网站
  • jsp网站开发的mvc广州有哪些大公司
  • 对电子商务网站建设与管理的理解整合营销
  • 南昌做网站需要多少钱广州住房与建设 网站
  • win10建设网站wordpress商店主题
  • 上海做网站的公司名称织梦小学网站模板