簡單的消息映射表

模範MFC的消息映射表基礎,建立一個針對不用命令動作的消息模型
當然,這個只是最基本的應用,真正MFC的映射表比這可複雜多了...
但是,以此爲基礎就能開發出適用自己的消息模型,希望對大家有用

===================================================

#include <iostream>

class MyClass{
public:
 // 定義一張結構表 表示命令與對應的處理函數
 struct iCommandMap{
  // 命令
  int command;
  // 處理命令的函數指針
  void (MyClass::*pfn)(int param);
 };

 // 定義一個2個命令的表
 const static iCommandMap iCmd[2];


 // 對應命令的處理函數
 void OnVoid1(int param) { std::cout << "I am void1 : param is " << param; }
 void OnVoid2(int param) { std::cout << "I am void2 : param is " << param; }
};

// 將命令與處理函數存入結構數組中
const MyClass::iCommandMap MyClass::iCmd[] = {
 0x01,  OnVoid1,
 0x02,  OnVoid2,
};

// 簡化計算數組長度的宏
#define dim(x) (sizeof(x) / sizeof(x[0]))

 

int _tmain(int argc, _TCHAR* argv[])
{
 // 聲明對象
 MyClass mc;

 // 命令
 int command = 0x01;  //改成 2 試試?
 int param = 1234; //傳入函數的參數

 // 遍歷命令表 調用與命令對應的函數指針
 for(int i = 0; i < dim(mc.iCmd); i ++){
  if(mc.iCmd[i].command == command)
   (mc.*MyClass::iCmd[i].pfn)(param);
 }

 return 0;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章