#ifndef _COMMON_CALLBACKDATA_HPP_ #define _COMMON_CALLBACKDATA_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_WINDOWSX_HPP_ #include #endif #ifndef _COMMON_RECTANGLE_HPP_ #include #endif class PureDevice; class PaintInformation : public PAINTSTRUCT { public: PaintInformation(const PureDevice &somePureDevice); ~PaintInformation(); operator PureDevice&(void)const; Rect paintRect(void)const; private: PureDevice *mlpPaintDevice; }; inline Rect PaintInformation::paintRect(void)const { return Rect(PAINTSTRUCT::rcPaint.left,PAINTSTRUCT::rcPaint.top,PAINTSTRUCT::rcPaint.right,PAINTSTRUCT::rcPaint.bottom); } class CallbackData { public: typedef LONG ReturnType; CallbackData(void); CallbackData(const CallbackData &someCallbackData); CallbackData(WPARAM wParam,LPARAM lParam,HWND hWndFrom=0); virtual ~CallbackData(); CallbackData &operator=(const CallbackData &someCallbackData); WORD operator==(const CallbackData &someCallbackData)const; HWND hwndFrom(void)const; void hwndFrom(HWND hwndFrom); WPARAM wParam(void)const; void wParam(WPARAM wParam); LPARAM lParam(void)const; void lParam(LPARAM lParam); WORD loWord(void)const; WORD hiWord(void)const; WPARAM wmCommandID(void)const; // specialized WM_COMMAND interpreter HWND wmCommandWindow(void)const; // "" WORD wmCommandCommand(void)const; // "" WPARAM menuSelectID(void)const; // specialized WM_MENUSELECT interpreter WPARAM menuSelectFlags(void)const; // "" HMENU menuSelectMenu(void)const; // "" HMENU menuSelectIDPopup(void)const; // "" UINT controlID(void)const; // specialized control handling HWND controlWindow(void)const; // "" WORD controlNotification(void)const; // "" private: WPARAM mwParam; LPARAM mlParam; HWND mhWndFrom; }; inline CallbackData::CallbackData(void) : mwParam(0), mlParam(0), mhWndFrom(0) { } inline CallbackData::CallbackData(WPARAM wParam,LPARAM lParam,HWND hWndFrom) : mwParam(wParam), mlParam(lParam), mhWndFrom(hWndFrom) { } inline CallbackData::CallbackData(const CallbackData &someCallbackData) { *this=someCallbackData; } inline CallbackData::~CallbackData() { } inline CallbackData &CallbackData::operator=(const CallbackData &someCallbackData) { wParam(someCallbackData.wParam()); lParam(someCallbackData.lParam()); hwndFrom(someCallbackData.hwndFrom()); return *this; } inline WORD CallbackData::operator==(const CallbackData &someCallbackData)const { return (wParam()==someCallbackData.wParam()&& lParam()==someCallbackData.lParam()&& hwndFrom()==someCallbackData.hwndFrom()); } inline WPARAM CallbackData::wmCommandID(void)const { return (WPARAM)(GET_WM_COMMAND_ID(mwParam,mlParam)); } inline HWND CallbackData::wmCommandWindow(void)const { return GET_WM_COMMAND_HWND(mwParam,mlParam); } inline WORD CallbackData::wmCommandCommand(void)const { return GET_WM_COMMAND_CMD(mwParam,mlParam); } inline WPARAM CallbackData::menuSelectID(void)const { #ifdef __FLAT__ return LOWORD(mwParam); #else return mwParam; #endif } inline WPARAM CallbackData::menuSelectFlags(void)const { #ifdef __FLAT__ return HIWORD(mwParam); #else return LOWORD(mlParam); #endif } inline HMENU CallbackData::menuSelectMenu(void)const { #ifdef __FLAT__ return (HMENU)mlParam; #else return (HMENU)HIWORD(mlParam); #endif } inline HMENU CallbackData::menuSelectIDPopup(void)const { if(!(menuSelectFlags()&MF_POPUP))return (HMENU)0; #ifdef __FLAT__ return ::GetSubMenu(menuSelectMenu(),menuSelectID()); #else return (HMENU)menuSelectID(); #endif } inline UINT CallbackData::controlID(void)const { #ifdef __FLAT__ return LOWORD(mwParam); #else return mwParam; #endif } inline HWND CallbackData::controlWindow(void)const { #ifdef __FLAT__ return (HWND)mlParam; #else return (HWND)LOWORD(mlParam); #endif } inline WORD CallbackData::controlNotification(void)const { #ifdef __FLAT__ return HIWORD(mwParam); #else return HIWORD(mlParam); #endif } inline HWND CallbackData::hwndFrom(void)const { return mhWndFrom; } inline void CallbackData::hwndFrom(HWND hwndFrom) { mhWndFrom=hwndFrom; } inline WPARAM CallbackData::wParam(void)const { return mwParam; } inline void CallbackData::wParam(WPARAM wParam) { mwParam=wParam; } inline LPARAM CallbackData::lParam(void)const { return mlParam; } inline void CallbackData::lParam(LPARAM lParam) { mlParam=lParam; } inline WORD CallbackData::loWord(void)const { return LOWORD(mlParam); } inline WORD CallbackData::hiWord(void)const { return HIWORD(mlParam); } #endif