xoblite™ / Blackbox for Windows bb5 | RC6 preview | 0.25.2.14
http://xoblite.net/
MessageManager Class Reference

#include <MessageManager.h>

Public Member Functions

 MessageManager ()
 
 ~MessageManager ()
 
void AddMessage (UINT message, HWND window)
 
void RemoveMessage (UINT message, HWND window)
 
void ClearMessages ()
 
bool HandlerExists (UINT message)
 
bool SendMessage (UINT message, WPARAM wParam, LPARAM lParam, LRESULT *result)
 
void PostMessage (UINT message, WPARAM wParam, LPARAM lParam)
 

Public Attributes

MsgMap msgs
 

Constructor & Destructor Documentation

◆ MessageManager()

MessageManager::MessageManager ( )
36{
37}

◆ ~MessageManager()

MessageManager::~MessageManager ( )
40{
42}
void ClearMessages()
Definition MessageManager.cpp:80

Member Function Documentation

◆ AddMessage()

void MessageManager::AddMessage ( UINT message,
HWND window )
47{
48 WindowSet *winSet;
49 MsgMap::iterator iter = msgs.find(message);
50
51 if (iter == msgs.end())
52 {
53 winSet = new WindowSet();
54 msgs[message] = winSet;
55 }
56 else winSet = iter->second;
57
58 winSet->insert(window);
59}
set< HWND > WindowSet
Definition MessageManager.h:42
MsgMap msgs
Definition MessageManager.h:59

◆ RemoveMessage()

void MessageManager::RemoveMessage ( UINT message,
HWND window )
64{
65 MsgMap::iterator iter = msgs.find(message);
66
67 if (iter == msgs.end()) return;
68
69 iter->second->erase(window);
70
71 if (iter->second->size() == 0)
72 {
73 delete iter->second;
74 msgs.erase(iter);
75 }
76}

◆ ClearMessages()

void MessageManager::ClearMessages ( )
81{
82 MsgMap::iterator iter = msgs.begin();
83
84 while (iter != msgs.end())
85 {
86 if (iter->second) delete iter->second;
87 iter++;
88 }
89
90 msgs.clear();
91}

◆ HandlerExists()

bool MessageManager::HandlerExists ( UINT message)
152{
153 if (msgs.find(message) != msgs.end()) return true;
154
155 return false;
156}

◆ SendMessage()

bool MessageManager::SendMessage ( UINT message,
WPARAM wParam,
LPARAM lParam,
LRESULT * result )
96{
97 WindowSet *winSet;
98 MsgMap::iterator iter1 = msgs.find(message);
99
100 if (result) *result = 0;
101
102 if (iter1 == msgs.end()) return false;
103
104 winSet = iter1->second;
105
106 WindowSet::iterator iter2 = winSet->begin();
107
108 // Use the first one for the result...
109 if (iter2 != winSet->end())
110 {
111 if (result)
112 {
113 *result = ::SendMessage((HWND)*iter2, message, wParam, lParam);
114 iter2++;
115 }
116 }
117
118 while (iter2 != winSet->end())
119 {
120 ::SendMessage((HWND)*iter2, message, wParam, lParam);
121 iter2++;
122 }
123
124 return true;
125}
bool SendMessage(UINT message, WPARAM wParam, LPARAM lParam, LRESULT *result)
Definition MessageManager.cpp:95

◆ PostMessage()

void MessageManager::PostMessage ( UINT message,
WPARAM wParam,
LPARAM lParam )
130{
131 WindowSet *winSet;
132 MsgMap::iterator iter1;
133
134 iter1 = msgs.find(message);
135
136 if (iter1 == msgs.end()) return;
137
138 winSet = iter1->second;
139
140 WindowSet::iterator iter2 = winSet->begin();
141
142 while (iter2 != winSet->end())
143 {
144 ::PostMessage((HWND)*iter2, message, wParam, lParam);
145 iter2++;
146 }
147}
void PostMessage(UINT message, WPARAM wParam, LPARAM lParam)
Definition MessageManager.cpp:129

Member Data Documentation

◆ msgs

MsgMap MessageManager::msgs