message.h

来自「3D游戏展示程序」· C头文件 代码 · 共 70 行

H
70
字号
//--------------------------------------------------
//  Desc: 消息系统
//  Date: 2006.10.30 /update
//  Author: artsylee
//
//  Copyright (C) 2006 artsylee
//
//	扩展: 增加一个指针参数(2006_11_24)
//
//--------------------------------------------------

#ifndef _MESSAGE_
#define _MESSAGE_

#include <Windows.h>
#include <vector>

#define MESSAGE_DELAY	10000

// 系统消息类型
#define MSG_SYS_GUI			0xff000001L
#define MSG_SYS_LOSTDEVICE	0xff000002L 

class ASE_DLL CMessage
{
public:
	DWORD m_dwType;			// 类型
	DWORD m_dwSource;		// 来源
	DWORD m_dwDestination;  // 目的
	DWORD m_dwParam1;		// 参数1
	DWORD m_dwParam2;		// 参数2
	void* m_pParam3;		// 指针参数

	DWORD m_dwGenerate;		// 产生时间
	DWORD m_dwDelay;		// 执行时间(在此之后)
	DWORD m_dwAvail;		// 有效时间(在此之前)

	CMessage();
	CMessage(DWORD type, DWORD source = 0, DWORD dest = 0);
	~CMessage();
	void SetDelay(DWORD delay);
	void SetAvail(DWORD avail);
	void SetParameter(DWORD param1 = 0, DWORD param2 = 0, void* param3 = NULL);
};

class ASE_DLL CMessageManager
{
public:
	CMessageManager();
	~CMessageManager();

	void PostMessage(CMessage msg);
	void Begin();
	bool PeekMessage(CMessage &msg, bool bRemove = true);
	bool PeekMessage(int &index, CMessage &msg, bool bRemove = true);
	void DeleteMessage(DWORD type);
	void RemoveAll();

protected:
	std::vector<CMessage>				m_msgVector;
	std::vector<CMessage>::iterator		m_msgItor;
};

extern CMessageManager *g_pMessageManager;

ASE_DLL void __stdcall PostMessage(CMessage msg);
ASE_DLL bool __stdcall PeekMessage(int &index, CMessage &msg, bool bRemove = true);
ASE_DLL void __stdcall RemoveAllMessage();

#endif // _MESSAGE

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?