zoukankan      html  css  js  c++  java
  • 消息队列改写

    根据 博客园博主+石头+的原始代码,我修改为利用std::queue管理的消息队列:

    #include <iostream>
    #include <Windows.h>
    #include<queue>
    
    using namespace std;
    
    const int MAXMESSAGE = 1024;
    
    class CXMessageList
    {
    public:
    	CXMessageList();
    	~CXMessageList(){};
    public:
    	MSG* GetTopMessage();
    	MSG* WaitForMessage();
    	int GetMessageCount(){return m_MsgList.size();};
    	int InsertMessage(MSG *msg);
    private:
    	queue<MSG*> m_MsgList;
    	HANDLE mCS_Message;
    };
    int CXMessageList::InsertMessage( MSG *msg )
    {
    	if(GetMessageCount()>MAXMESSAGE)
    	{
    		return -1;
    	}
    	m_MsgList.push(msg);
    	SetEvent(mCS_Message);
    	return 1;
    }
    
    MSG* CXMessageList::GetTopMessage()
    {
    	MSG *pMsg = NULL;
    	//ZeroMemory(pMsg, sizeof(MSG));
    	if (!m_MsgList.empty())
    	{
    		pMsg = m_MsgList.front();
    		m_MsgList.pop();
    	}
    	if(m_MsgList.empty())
    	{
    		ResetEvent(mCS_Message);
    	}
    	return pMsg;
    }
    
    MSG * CXMessageList::WaitForMessage()
    {
    	if(!m_MsgList.empty())
    	{
    		return GetTopMessage();
    	}
    	else
    	{
    		WaitForSingleObject(mCS_Message, INFINITE);
    		return GetTopMessage();
    	}
    }
    
    CXMessageList::CXMessageList()
    {
    	char CSName[32];
    	DWORD ThreadID = GetCurrentThreadId();
    	sprintf_s(CSName, "MsList - %x", ThreadID);
    	mCS_Message = CreateEvent(NULL, FALSE, TRUE, (LPCWSTR)CSName);
    	cout << CSName << endl;
    }
    int main()
    {
    	CXMessageList lMessage;
    	
    }
    

      具体操作还待测试。因为我对windows消息编程还不熟悉。

  • 相关阅读:
    Nginx+Lua学习笔记-环境搭建
    Scala学习笔记-Servlet环境搭建
    Scala学习笔记-环境搭建以及简单语法
    Python v3.4 not found的解决方法
    【闲聊】最近一段时间的总结
    javassist初接触
    java调用cmd
    Flexpaper初接触
    Derby初接触
    LVS Keepalived 集群
  • 原文地址:https://www.cnblogs.com/xiangshancuizhu/p/2711870.html
Copyright © 2011-2022 走看看