61 lines
787 B
C++
61 lines
787 B
C++
#ifndef headerfilemessages
|
|
#define headerfilemessages
|
|
|
|
#include <map>
|
|
#include <windows.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Messages
|
|
{
|
|
public:
|
|
typedef BOOL (*MessageFunction)(HWND, UINT, WPARAM, LPARAM);
|
|
typedef std::map<UINT, MessageFunction> MessageTable;
|
|
|
|
|
|
void Associate(UINT message, MessageFunction message_function)
|
|
{
|
|
message_table.insert( std::make_pair(message, message_function) );
|
|
}
|
|
|
|
|
|
void Clear()
|
|
{
|
|
message_table.clear();
|
|
}
|
|
|
|
|
|
BOOL Call(UINT key, HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
MessageTable::iterator i = message_table.find(key);
|
|
|
|
if( i == message_table.end() )
|
|
return false;
|
|
|
|
return i->second(hWnd, message, wParam, lParam);
|
|
}
|
|
|
|
|
|
bool Empty() const
|
|
{
|
|
return message_table.empty();
|
|
}
|
|
|
|
|
|
private:
|
|
|
|
MessageTable message_table;
|
|
|
|
};
|
|
|
|
|
|
#endif
|