WIN_sdk的一种封装方式分析

一、基本数据结构分析

1、消息处理

typedef struct _MSD
{
    UINT uMessage;//消息值
    PFNMSG pfnmsg;//消息处理函数
}MSD;//消息分发结构
typef struct _MSDI//消息入口表
{
     int cmsd;//MSD数量
   MSD *rgmsd;//消息分发表指针
   EDWP edwp; //默认消息处理函数
}MSDI,FAR *LPMSDI; //消息分发结构表

做一张表,用一个指针保存MSD结构体数组的数据,就像MFC的消息Map一样。

2、命令消息

typedef struct _CMD
{
      WORD wCommand;//命令ID
      PFNCMD pfncmd;//命令处理函数列表
}CMD;//command命令
typedef struct _CMDI
{
   int ccmd;   //需要处理的命令数量
   CMD *rgcmd; //命令处理表
    EDWP  edwp;   //默认命名处理
}CMDI , FAR *LPCMDI;  //命令分发结构

跟上面是差不多的,也是做一张表

3、函数分析

原WinMain中消息处理函数Proc调用它,把表LPMSDI的指针传过来,其他的照旧,根据uMessage消息类型去找它对应的处理函数;没找到,就调用默认的函数。

这个是处理菜单命令。基本思路是通过wParam、lparam来获取菜单ID值,然后去查询命令表,找到匹配的ID,去调用其消息处理函数。

4、总结

该封装主要是建立一个表,然后遍历,调用相应的处理函数。

参考:1、WIN_sdk编程

2、MFC消息映射理解的简单化
3、核心编程_消息分流器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用C++代码封装win32操作类, 与MFC相似,对于学习SDK与C++是巨好的参考 Tutorials Menu of tutorials Tutorial 1: The Simplest Window Tutorial 2: Using Classes and Inheritance Tutorial 3: Using Messages to Create a Scribble Window Tutorial 4: Repainting the Window Tutorial 5: Wrapping a Frame around our Scribble Window Tutorial 6: Customising Window Creation Tutorial 7: Customising the Toolbar Tutorial 8: Loading and Saving Files Tutorial 9: Printing Tutorial 10: Finishing Touches Tutorial 1: The Simplest Window The following code uses Win32++ to create a window. This is all the code you need (in combination with Win32++) to create and display a simple window. Note that in order to add the Win32++ code to our program, we use an #include statement as shown below. #include "../Win32++/Wincore.h" INT WINAPI WinMain(HINSTANCE, HINSTANCE, LPTSTR, int) { //Start Win32++ CWinApp MyApp; //Create a CWnd object CWnd MyWindow; //Create (and display) the window MyWindow.Create(); //Run the application return MyApp.Run(); } This program has four key steps: Start Win32++. We do this here by creating a CWinApp object called MyApp. Create a CWnd object called MyWindow. Create a default window by calling the Create function. Start the message loop, by calling the Run function. If you compile and run this program, you'll find that the application doesn't end when the window is closed. This is behaviour is normal. An illustration of how to use messages to control the windows behaviour (including closing the application) will be left until tutorial 3.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值