游戏.消息管理器

news/2024/11/21 1:34:43/

/**************************************************
WinMain.cpp
堆栈式的函数管理器
http://blog.csdn.net/chinayaosir
**************************************************/

//0.头文件
#include <windows.h>
#include <stdio.h>

//1.管理器类定义
class cProcessManager
{
  // A structure that stores a function pointer and linked list
  typedef struct sProcess {
    void  (*Function)();
    sProcess *Next;
  } sProcess;

  protected:
    sProcess *m_ProcessParent; // The top state in the stack
                               // (the head of the stack)
  public:
    cProcessManager() { m_ProcessParent = NULL; }

    ~cProcessManager() {
      sProcess *ProcessPtr;
      // Remove all processes from the stack
      while((ProcessPtr = m_ProcessParent) != NULL) {
        m_ProcessParent = ProcessPtr->Next;
        delete ProcessPtr;
      }
    }

    // Add function on to the stack
    void Add(void (*Process)())
    {
      // Don't push a NULL value
      if(Process != NULL) {
        // Allocate a new process and push it on stack
        sProcess *ProcessPtr = new sProcess;
        ProcessPtr->Next = m_ProcessParent;
        m_ProcessParent = ProcessPtr;
        ProcessPtr->Function = Process;
      }
    }

    // Process all functions
    void Process()
    {
      sProcess *ProcessPtr = m_ProcessParent;

      while(ProcessPtr != NULL) {
        ProcessPtr->Function();
        ProcessPtr = ProcessPtr->Next;
      }
    }
};

//3.生成此类的一个对象g_ProcessManager
cProcessManager g_ProcessManager;

//4.WinMain主函数
int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int nCmdShow);

// Macro to ease the use of MessageBox function
#define MB(s) MessageBox(NULL, s, s, MB_OK);

// Processfunction prototypes - must follow this prototype!
void Func1() { MB("function1"); }
void Func2() { MB("function2"); }
void Func3() { MB("function3"); }

int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int nCmdShow)
{
  g_ProcessManager.Add(Func1);//函数压入堆栈
  g_ProcessManager.Add(Func2);//函数压入堆栈
  g_ProcessManager.Add(Func3);//函数压入堆栈

  g_ProcessManager.Process();//依次遍历堆栈中的函数

  return 0;
}


http://www.ppmy.cn/news/803555.html

相关文章

QQ管理器

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient;namespace QQ信息管理系统 {class UserManager{public void Login(){int count 0;do{string strUserName string.Empty;//初始化管…

android 消息管理器,腾讯TIM消息管理器在哪 腾讯TIM打开消息管理器的教程

腾讯TIM最新简介 tim最新版主要是在“日程”方面进行了改进&#xff0c;比如在聊天界面点击日程时&#xff0c;可以新建日程和分享我的日程、日程界面支持周视图展示等。另外&#xff0c;更新还精简代码&#xff0c;缩减安装包大小&#xff0c;屏蔽了送礼物等功能和动画。 腾讯…

Debezium日常分享系列之:Debezium 信号发送和通知 - 第 1 部分

Debezium日常分享系列之&#xff1a;Debezium 信号发送和通知 - 第 1 部分 一、背景二、Debezium 中的信号发送三、Debezium 中的通知四、结论 一、背景 本系列文章将介绍 Debezium 提供的信号和通知功能&#xff0c;并讨论与平台交互的可用渠道。在本系列的后续部分中&#x…

学习推荐

编程类 类Unix系统的编程书籍里&#xff0c;最经典的莫过于简称为APUE的《Advanced Programming in the UNIX Environment》&#xff08;中译名是“Unix环境高级编程”&#xff09;&#xff0c;这本书被广大Unix程序员&#xff08;包括Linux&#xff09;捧为“圣经”。借用葛大…

js的数组解构

数组解构&#xff08;Array Destructuring&#xff09;时&#xff0c;有几个重要的概念需要了解&#xff1a; 基本数组解构&#xff1a; 可以使用方括号&#xff08;[]&#xff09;来定义解构模式。解构模式将数组中的值分配给对应的变量。解构是基于位置的&#xff0c;变量的…

推荐一款Python 代码自动补全神器

是时候跟你说说这个能让你撸代码撸得舒服得不要不要的神器了——kite。 简单来说&#xff0c;它是一款 IDE 的插件&#xff0c;能做到代码自动补全&#xff0c;可能你会说了&#xff0c;这有什么牛逼的&#xff1f;一般的编辑器不都有这个功能么&#xff1f; 它虽然是一个插件&…

【推荐架构day9】推荐领域的基本问题:什么是信息茧房

什么是信息茧房 信息茧房其实是现在社会一个很可怕的现象&#xff0c;从字面意思来看的话其实比喻的是信息被虫茧一般封锁住。这个问题反映了现在随着个性化推荐的普及衍射的一个社会问题。 平时在浏览新闻或者淘宝的时候&#xff0c;平台会自动根据用户的浏览记录获取用户的偏…

王欣回应微信封禁,解释为何取名叫马桶MT

1月15日&#xff0c;真是个“黄道吉日”&#xff1a;快播创始人王欣宣布上线马桶MT、罗永浩站台快如科技、字节跳动张一鸣发布社交新品。3款APP宣战微信&#xff0c;成为今天互联网上最热的话题。 要知道&#xff0c;距离张小龙4小时的微信公开课逆天演讲才仅仅过去整整一周时…