14#if !defined(OWL_DISPATCH_H)
18#if defined(BI_HAS_PRAGMA_ONCE)
64template <
class T1,
class T2>
74#if !defined(OWL5_COMPAT)
75#define OWL_NEW_RESPONSE_TABLE 1
78#if OWL_NEW_RESPONSE_TABLE
94#define OWL_DISPATCH(dispatch, method)\
95 &dispatch<TMyClass, &TMyClass::method>
127template <TResult (*F)(
void*, TParam1, TParam2)>
129{
return F(&obj, p1, p2);}
131#define OWL_DISPATCH(dispatch, method)\
132 &owl::AnyDispatch<&dispatch<TMyClass, &TMyClass::method> >
138#if !defined(OWL_EV_SIGNATURE_CHECK)
139#define OWL_EV_SIGNATURE_CHECK 1
142#if OWL_EV_SIGNATURE_CHECK
146template <TMsgId MsgId>
147struct TDispatchRawArguments
149 template <
class T>
struct THandler {
typedef TResult (T::*type)(TParam1, TParam2);};
151 template <
class T, TResult (T::*M)(TParam1, TParam2)>
152 static TResult Decode(
void* i, TParam1 p1, TParam2 p2)
153 {
return (
static_cast<T*
>(i)->*M)(p1, p2);}
156template <TMsgId MsgId>
157struct TDispatchChildNotify;
159template <>
struct TDispatchChildNotify<WM_COMMAND>
161 template <
class T>
struct THandler {
typedef void (T::*type)();};
163 template <
class T,
void (T::*M)()>
164 static TResult Decode(
void* i, TParam1, TParam2)
165 {
return (
static_cast<T*
>(i)->*M)(), 0;}
168template <TMsgId MsgId>
169struct TDispatchChildNotifyWithCode;
171template <>
struct TDispatchChildNotifyWithCode<WM_COMMAND>
173 template <
class T>
struct THandler {
typedef void (T::*type)(
uint);};
175 template <
class T,
void (T::*M)(u
int)>
176 static TResult Decode(
void* i, TParam1 p1, TParam2)
177 {
return (
static_cast<T*
>(i)->*M)(
static_cast<uint>(p1)), 0;}
180template <TMsgId MsgId>
181struct TDispatchCommand;
183template <>
struct TDispatchCommand<WM_COMMAND>
185 template <
class T>
struct THandler {
typedef void (T::*type)();};
187 template <
class T,
void (T::*M)()>
188 static TResult Decode(
void* i, TParam1, TParam2)
189 {
return (
static_cast<T*
>(i)->*M)(), 0;}
192template <TMsgId MsgId>
193struct TDispatchCommandWithId;
195template <>
struct TDispatchCommandWithId<WM_COMMAND>
197 template <
class T>
struct THandler {
typedef void (T::*type)(
uint);};
199 template <
class T,
void (T::*M)(u
int)>
200 static TResult Decode(
void* i, TParam1 p1, TParam2)
201 {
return (
static_cast<T*
>(i)->*M)(
static_cast<uint>(p1)), 0;}
208template <
class T, TResult (T::*M)(TParam1, TParam2)>
210{
return (
static_cast<T*
>(i)->*M)(p1, p2);}
212template <
class T,
void (T::*M)()>
214{
return (
static_cast<T*
>(i)->*M)(), 0;}
216template <
class T,
void (T::*M)(u
int)>
218{
return (
static_cast<T*
>(i)->*M)(
static_cast<uint>(p1)), 0;}
220template <
class T,
void (T::*M)()>
222{
return (
static_cast<T*
>(i)->*M)(), 0;}
224template <
class T,
void (T::*M)(u
int)>
226{
return (
static_cast<T*
>(i)->*M)(
static_cast<uint>(p1)), 0;}
230#if OWL_EV_SIGNATURE_CHECK
235template <
class T, TMsgId MsgId,
template <TMsgId>
class D>
236constexpr auto CheckSignature(
typename D<MsgId>::template THandler<T>::type)
noexcept ->
bool
243template <
class T, TMsgId MsgId, u
int NotificationCode,
template <TMsgId>
class D>
244constexpr auto CheckSignature(
typename D<MsgId>::template TNotificationDispatch<NotificationCode>::template THandler<T>::type)
noexcept ->
bool
257template <u
int MessageID>
263#if OWL_EV_SIGNATURE_CHECK
265 template <
class T>
struct THandler {
typedef void (T::*type)(
uint, bool, HWND);};
269 template <
class T,
void (T::*M)(u
int,
bool, HWND)>
275 void operator ()(HWND, UINT active, HWND other, BOOL minimized)
276 {(i_->*M)(active, minimized, other);}
278 forwarder = {
static_cast<T*
>(i)};
280 return HANDLE_WM_ACTIVATE(
nullptr, p1, p2, forwarder);
287#if OWL_EV_SIGNATURE_CHECK
289 template <
class T>
struct THandler {
typedef void (T::*type)(bool, DWORD);};
293 template <
class T,
void (T::*M)(
bool, DWORD)>
299 void operator ()(HWND, BOOL active, DWORD threadId)
300 {(i_->*M)(active, threadId);}
302 forwarder = {
static_cast<T*
>(i)};
304 return HANDLE_WM_ACTIVATEAPP(
nullptr, p1, p2, forwarder);
311#if OWL_EV_SIGNATURE_CHECK
313 template <
class T>
struct THandler {
typedef void (T::*type)(
uint bufferSize, LPTSTR formatNameBuffer);};
317 template <
class T,
void (T::*M)(u
int bufferSize, LPTSTR formatNameBuffer)>
323 void operator ()(HWND,
int cchMax, LPTSTR rgchName)
324 {(i_->*M)(
static_cast<uint>(cchMax), rgchName);}
326 forwarder = {
static_cast<T*
>(i)};
328 return HANDLE_WM_ASKCBFORMATNAME(0, p1, p2, forwarder);
335#if OWL_EV_SIGNATURE_CHECK
337 template <
class T>
struct THandler {
typedef void (T::*type)();};
341 template <
class T,
void (T::*M)()>
347 void operator ()(HWND)
350 forwarder = {
static_cast<T*
>(i)};
352 return HANDLE_WM_CANCELMODE(
nullptr, p1, p2, forwarder);
362#if OWL_EV_SIGNATURE_CHECK
364 template <
class T>
struct THandler {
typedef void (T::*type)(HWND capture);};
368 template <
class T,
void (T::*M)(HWND capture)>
370 {
return (
static_cast<T*
>(i)->*M)(
reinterpret_cast<HWND
>(p2)), 0;}
376#if OWL_EV_SIGNATURE_CHECK
378 template <
class T>
struct THandler {
typedef void (T::*type)(HWND removed, HWND next);};
382 template <
class T,
void (T::*M)(HWND removed, HWND next)>
388 void operator ()(HWND, HWND hwndRemove, HWND hwndNext)
389 {(i_->*M)(hwndRemove, hwndNext);}
391 forwarder = {
static_cast<T*
>(i)};
393 return HANDLE_WM_CHANGECBCHAIN(
nullptr, p1, p2, forwarder);
403#if OWL_EV_SIGNATURE_CHECK
405 template <
class T>
struct THandler {
typedef void (T::*type)(
uint ch,
uint repeatCount,
uint flags);};
409 template <
class T,
void (T::*M)(u
int ch, u
int repeatCount, u
int flags)>
415 void operator ()(HWND,
TCHAR ch,
int cRepeat)
416 {(i_->*M)(
static_cast<uint>(ch),
static_cast<uint>(cRepeat), 0);}
418 forwarder = {
static_cast<T*
>(i)};
420 return HANDLE_WM_CHAR(
nullptr, p1, p2, forwarder);
427#if OWL_EV_SIGNATURE_CHECK
429 template <
class T>
struct THandler {
typedef int (T::*type)(
uint ch, HWND listBox,
int caretIndex);};
433 template <
class T,
int (T::*M)(u
int ch, HWND listBox,
int caretIndex)>
439 int operator ()(HWND, UINT ch, HWND hwndListbox,
int iCaret)
440 {
return (i_->*M)(ch, hwndListbox, iCaret);}
442 forwarder = {
static_cast<T*
>(i)};
444 return HANDLE_WM_CHARTOITEM(0, p1, p2, forwarder);
451#if OWL_EV_SIGNATURE_CHECK
453 template <
class T>
struct THandler {
typedef void (T::*type)();};
457 template <
class T,
void (T::*M)()>
463 void operator ()(HWND)
466 forwarder = {
static_cast<T*
>(i)};
468 return HANDLE_WM_CHILDACTIVATE(0, p1, p2, forwarder);
475#if OWL_EV_SIGNATURE_CHECK
477 template <
class T>
struct THandler {
typedef void (T::*type)();};
481 template <
class T,
void (T::*M)()>
487 void operator ()(HWND)
490 forwarder = {
static_cast<T*
>(i)};
492 return HANDLE_WM_CLOSE(
nullptr, p1, p2, forwarder);
499#if OWL_EV_SIGNATURE_CHECK
501 template <
class T>
struct THandler {
typedef void (T::*type)(
uint compactRatio);};
505 template <
class T,
void (T::*M)(u
int compactRatio)>
511 void operator ()(HWND, UINT compactRatio)
512 {(i_->*M)(compactRatio);}
514 forwarder = {
static_cast<T*
>(i)};
516 return HANDLE_WM_COMPACTING(0, p1, p2, forwarder);
523#if OWL_EV_SIGNATURE_CHECK
525 template <
class T>
struct THandler {
typedef int (T::*type)(
uint,
const COMPAREITEMSTRUCT&);};
529 template <
class T,
int (T::*M)(u
int, const COMPAREITEMSTRUCT&)>
535 int operator ()(HWND,
const COMPAREITEMSTRUCT* c)
538 return c ? (i_->*M)(c->CtlID, *c) : 0;
541 forwarder = {
static_cast<T*
>(i)};
543 return HANDLE_WM_COMPAREITEM(
nullptr, p1, p2, forwarder);
553#if OWL_EV_SIGNATURE_CHECK
555 template <
class T>
struct THandler {
typedef void (T::*type)(HWND, int, int);};
559 template <
class T,
void (T::*M)(HWND,
int,
int)>
565 void operator ()(HWND, HWND w,
int x,
int y)
568 forwarder = {
static_cast<T*
>(i)};
570 return HANDLE_WM_CONTEXTMENU(
nullptr, p1, p2, forwarder);
581#if OWL_EV_SIGNATURE_CHECK
583 template <
class T>
struct THandler {
typedef bool (T::*type)(HWND sender,
const COPYDATASTRUCT&);};
587 template <
class T,
bool (T::*M)(HWND sender, const COPYDATASTRUCT&)>
591 return (p2 != 0 && (
static_cast<T*
>(i)->*M)(
reinterpret_cast<HWND
>(p1), *
reinterpret_cast<PCOPYDATASTRUCT
>(p2))) ? TRUE : FALSE;
598#if OWL_EV_SIGNATURE_CHECK
600 template <
class T>
struct THandler {
typedef bool (T::*type)(CREATESTRUCT&);};
604 template <
class T,
bool (T::*M)(CREATESTRUCT&)>
610 BOOL operator ()(HWND, LPCREATESTRUCT c)
613 return (c && (i_->*M)(*c)) ? TRUE : FALSE;
616 forwarder = {
static_cast<T*
>(i)};
618 return HANDLE_WM_CREATE(
nullptr, p1, p2, forwarder);
625#if OWL_EV_SIGNATURE_CHECK
627 template <
class T>
struct THandler {
typedef HBRUSH (T::*type)(HDC, HWND,
uint);};
631 template <
class T, HBRUSH (T::*M)(HDC, HWND, u
int)>
637 HBRUSH operator ()(HWND, HDC d, HWND w, UINT ctlType)
638 {
return (i_->*M)(d, w, ctlType);}
640 forwarder = {
static_cast<T*
>(i)};
642 return HANDLE_WM_CTLCOLORBTN(
nullptr, p1, p2, forwarder);
649#if OWL_EV_SIGNATURE_CHECK
651 template <
class T>
struct THandler {
typedef HBRUSH (T::*type)(HDC, HWND,
uint);};
655 template <
class T, HBRUSH (T::*M)(HDC, HWND, u
int)>
661 HBRUSH operator ()(HWND, HDC d, HWND w, UINT ctlType)
662 {
return (i_->*M)(d, w, ctlType);}
664 forwarder = {
static_cast<T*
>(i)};
666 return HANDLE_WM_CTLCOLOREDIT(
nullptr, p1, p2, forwarder);
673#if OWL_EV_SIGNATURE_CHECK
675 template <
class T>
struct THandler {
typedef HBRUSH (T::*type)(HDC, HWND,
uint);};
679 template <
class T, HBRUSH (T::*M)(HDC, HWND, u
int)>
685 HBRUSH operator ()(HWND, HDC d, HWND w, UINT ctlType)
686 {
return (i_->*M)(d, w, ctlType);}
688 forwarder = {
static_cast<T*
>(i)};
690 return HANDLE_WM_CTLCOLORDLG(
nullptr, p1, p2, forwarder);
697#if OWL_EV_SIGNATURE_CHECK
699 template <
class T>
struct THandler {
typedef HBRUSH (T::*type)(HDC, HWND,
uint);};
703 template <
class T, HBRUSH (T::*M)(HDC, HWND, u
int)>
709 HBRUSH operator ()(HWND, HDC d, HWND w, UINT ctlType)
710 {
return (i_->*M)(d, w, ctlType);}
712 forwarder = {
static_cast<T*
>(i)};
714 return HANDLE_WM_CTLCOLORLISTBOX(
nullptr, p1, p2, forwarder);
718#if defined(OWL5_COMPAT)
725template <>
struct TDispatch<WM_CTLCOLORMSGBOX>
728#if OWL_EV_SIGNATURE_CHECK
730 template <
class T>
struct THandler {
typedef HBRUSH (T::*type)(HDC, HWND, uint);};
734 template <
class T, HBRUSH (T::*M)(HDC, HWND, u
int)>
740 HBRUSH operator ()(HWND, HDC d, HWND w, UINT ctlType)
741 {
return (i_->*M)(d, w, ctlType);}
743 forwarder = {
static_cast<T*
>(i)};
745 return HANDLE_WM_CTLCOLORMSGBOX(0, p1, p2, forwarder);
754#if OWL_EV_SIGNATURE_CHECK
756 template <
class T>
struct THandler {
typedef HBRUSH (T::*type)(HDC, HWND,
uint);};
760 template <
class T, HBRUSH (T::*M)(HDC, HWND, u
int)>
766 HBRUSH operator ()(HWND, HDC d, HWND w, UINT ctlType)
767 {
return (i_->*M)(d, w, ctlType);}
769 forwarder = {
static_cast<T*
>(i)};
771 return HANDLE_WM_CTLCOLORSCROLLBAR(
nullptr, p1, p2, forwarder);
778#if OWL_EV_SIGNATURE_CHECK
780 template <
class T>
struct THandler {
typedef HBRUSH (T::*type)(HDC, HWND,
uint);};
784 template <
class T, HBRUSH (T::*M)(HDC, HWND, u
int)>
790 HBRUSH operator ()(HWND, HDC d, HWND w, UINT ctlType)
791 {
return (i_->*M)(d, w, ctlType);}
793 forwarder = {
static_cast<T*
>(i)};
795 return HANDLE_WM_CTLCOLORSTATIC(
nullptr, p1, p2, forwarder);
802#if OWL_EV_SIGNATURE_CHECK
804 template <
class T>
struct THandler {
typedef void (T::*type)();};
808 template <
class T,
void (T::*M)()>
814 void operator ()(HWND)
817 forwarder = {
static_cast<T*
>(i)};
819 return HANDLE_WM_CUT(0, p1, p2, forwarder);
829#if OWL_EV_SIGNATURE_CHECK
831 template <
class T>
struct THandler {
typedef void (T::*type)(
uint deadKey,
uint repeatCount,
uint flags);};
835 template <
class T,
void (T::*M)(u
int deadKey, u
int repeatCount, u
int flags)>
841 void operator ()(HWND,
TCHAR ch,
int cRepeat)
842 {(i_->*M)(
static_cast<uint>(ch),
static_cast<uint>(cRepeat), 0);}
844 forwarder = {
static_cast<T*
>(i)};
846 return HANDLE_WM_DEADCHAR(0, p1, p2, forwarder);
853#if OWL_EV_SIGNATURE_CHECK
855 template <
class T>
struct THandler {
typedef void (T::*type)(
uint,
const DELETEITEMSTRUCT&);};
859 template <
class T,
void (T::*M)(u
int, const DELETEITEMSTRUCT&)>
865 void operator ()(HWND,
const DELETEITEMSTRUCT* d)
868 if (d) (i_->*M)(d->CtlID, *d);
871 forwarder = {
static_cast<T*
>(i)};
873 return HANDLE_WM_DELETEITEM(
nullptr, p1, p2, forwarder);
880#if OWL_EV_SIGNATURE_CHECK
882 template <
class T>
struct THandler {
typedef void (T::*type)();};
886 template <
class T,
void (T::*M)()>
892 void operator ()(HWND)
895 forwarder = {
static_cast<T*
>(i)};
897 return HANDLE_WM_DESTROY(
nullptr, p1, p2, forwarder);
904#if OWL_EV_SIGNATURE_CHECK
906 template <
class T>
struct THandler {
typedef void (T::*type)();};
910 template <
class T,
void (T::*M)()>
916 void operator ()(HWND)
919 forwarder = {
static_cast<T*
>(i)};
921 return HANDLE_WM_DESTROYCLIPBOARD(0, p1, p2, forwarder);
938#if OWL_EV_SIGNATURE_CHECK
940 template <
class T>
struct THandler {
typedef TResult (T::*type)(
uint event, PDEV_BROADCAST_HDR eventData);};
944 template <
class T, TResult (T::*M)(u
int event, PDEV_BROADCAST_HDR eventData)>
946 {
return (
static_cast<T*
>(i)->*M)(
static_cast<uint>(p1),
reinterpret_cast<PDEV_BROADCAST_HDR
>(p2));}
952#if OWL_EV_SIGNATURE_CHECK
954 template <
class T>
struct THandler {
typedef void (T::*type)(LPCTSTR deviceName);};
958 template <
class T,
void (T::*M)(LPCTSTR deviceName)>
964 void operator ()(HWND, LPCTSTR lpszDeviceName)
965 {(i_->*M)(lpszDeviceName);}
967 forwarder = {
static_cast<T*
>(i)};
969 return HANDLE_WM_DEVMODECHANGE(0, p1, p2, forwarder);
976#if OWL_EV_SIGNATURE_CHECK
978 template <
class T>
struct THandler {
typedef void (T::*type)(
uint bitsPerPixel,
uint screenResolutionWidth,
uint screenResolutionHeight);};
982 template <
class T,
void (T::*M)(u
int bitsPerPixel, u
int screenResolutionW
idth, u
int screenResolutionHeight)>
988 void operator ()(HWND, UINT bitsPerPixel, UINT cxScreen, UINT cyScreen)
989 {(i_->*M)(bitsPerPixel, cxScreen, cyScreen);}
991 forwarder = {
static_cast<T*
>(i)};
993 return HANDLE_WM_DISPLAYCHANGE(0, p1, p2, forwarder);
1000#if OWL_EV_SIGNATURE_CHECK
1002 template <
class T>
struct THandler {
typedef void (T::*type)();};
1006 template <
class T,
void (T::*M)()>
1012 void operator ()(HWND)
1015 forwarder = {
static_cast<T*
>(i)};
1017 return HANDLE_WM_DRAWCLIPBOARD(
nullptr, p1, p2, forwarder);
1024#if OWL_EV_SIGNATURE_CHECK
1026 template <
class T>
struct THandler {
typedef void (T::*type)(
uint,
const DRAWITEMSTRUCT&);};
1030 template <
class T,
void (T::*M)(u
int, const DRAWITEMSTRUCT&)>
1036 void operator ()(HWND,
const DRAWITEMSTRUCT* d)
1039 if (d) (i_->*M)(d->CtlID, *d);
1042 forwarder = {
static_cast<T*
>(i)};
1044 return HANDLE_WM_DRAWITEM(
nullptr, p1, p2, forwarder);
1051#if OWL_EV_SIGNATURE_CHECK
1053 template <
class T>
struct THandler {
typedef void (T::*type)(
TDropInfo);};
1057 template <
class T,
void (T::*M)(TDropInfo)>
1063 void operator ()(HWND, HDROP hdrop)
1066 forwarder = {
static_cast<T*
>(i)};
1068 return HANDLE_WM_DROPFILES(
nullptr, p1, p2, forwarder);
1075#if OWL_EV_SIGNATURE_CHECK
1077 template <
class T>
struct THandler {
typedef void (T::*type)(bool);};
1081 template <
class T,
void (T::*M)(
bool)>
1087 void operator ()(HWND, BOOL fEnable)
1088 {(i_->*M)(fEnable);}
1090 forwarder = {
static_cast<T*
>(i)};
1092 return HANDLE_WM_ENABLE(0, p1, p2, forwarder);
1102 static void Encode(F sendMessage, HWND wnd,
bool endSession,
uint flags)
1103 {sendMessage(wnd, WM_ENDSESSION, endSession ? TRUE : FALSE,
static_cast<TParam2>(flags));}
1106#if OWL_EV_SIGNATURE_CHECK
1108 template <
class T>
struct THandler {
typedef void (T::*type)(
bool endSession,
uint flags);};
1112 template <
class T,
void (T::*M)(
bool endSession, u
int flags)>
1114 {
return (
static_cast<T*
>(i)->*M)(
static_cast<bool>(p1),
static_cast<uint>(p2)), 0;}
1120#if OWL_EV_SIGNATURE_CHECK
1122 template <
class T>
struct THandler {
typedef void (T::*type)(
uint source, HWND);};
1126 template <
class T,
void (T::*M)(u
int source, HWND)>
1132 void operator ()(HWND, UINT source, HWND hWndDlg)
1133 {(i_->*M)(source, hWndDlg);}
1135 forwarder = {
static_cast<T*
>(i)};
1137 return HANDLE_WM_ENTERIDLE(
nullptr, p1, p2, forwarder);
1147#if OWL_EV_SIGNATURE_CHECK
1149 template <
class T>
struct THandler {
typedef void (T::*type)(
bool isTrackPopupMenu);};
1153 template <
class T,
void (T::*M)(
bool isTrackPopupMenu)>
1155 {
return (
static_cast<T*
>(i)->*M)(
static_cast<BOOL
>(p1) == TRUE), 0;}
1161#if OWL_EV_SIGNATURE_CHECK
1163 template <
class T>
struct THandler {
typedef void (T::*type)();};
1167 template <
class T,
void (T::*M)()>
1173 void operator ()(HWND)
1176 forwarder = {
static_cast<T*
>(i)};
1178 return HANDLE_WM_ENTERSIZEMOVE(0, p1, p2, forwarder);
1185#if OWL_EV_SIGNATURE_CHECK
1187 template <
class T>
struct THandler {
typedef bool (T::*type)(HDC);};
1191 template <
class T,
bool (T::*M)(HDC)>
1197 BOOL operator ()(HWND, HDC h)
1198 {
return (i_->*M)(h) ? TRUE : FALSE;}
1200 forwarder = {
static_cast<T*
>(i)};
1202 return HANDLE_WM_ERASEBKGND(
nullptr, p1, p2, forwarder);
1212#if OWL_EV_SIGNATURE_CHECK
1214 template <
class T>
struct THandler {
typedef void (T::*type)(
bool isTrackPopupMenu);};
1218 template <
class T,
void (T::*M)(
bool isTrackPopupMenu)>
1220 {
return (
static_cast<T*
>(i)->*M)(
static_cast<BOOL
>(p1) == TRUE), 0;}
1229#if OWL_EV_SIGNATURE_CHECK
1231 template <
class T>
struct THandler {
typedef void (T::*type)();};
1235 template <
class T,
void (T::*M)()>
1237 {
return (
static_cast<T*
>(i)->*M)(), 0;}
1243#if OWL_EV_SIGNATURE_CHECK
1245 template <
class T>
struct THandler {
typedef void (T::*type)();};
1249 template <
class T,
void (T::*M)()>
1255 void operator ()(HWND)
1258 forwarder = {
static_cast<T*
>(i)};
1260 return HANDLE_WM_FONTCHANGE(0, p1, p2, forwarder);
1267#if OWL_EV_SIGNATURE_CHECK
1269 template <
class T>
struct THandler {
typedef uint (T::*type)(
const MSG*);};
1273 template <
class T, u
int (T::*M)(const MSG*)>
1279 uint operator ()(HWND, LPMSG msg)
1280 {
return (i_->*M)(msg);}
1282 forwarder = {
static_cast<T*
>(i)};
1284 return HANDLE_WM_GETDLGCODE(
nullptr, p1, p2, forwarder);
1291#if OWL_EV_SIGNATURE_CHECK
1293 template <
class T>
struct THandler {
typedef HFONT (T::*type)();};
1297 template <
class T, HFONT (T::*M)()>
1303 HFONT operator ()(HWND)
1304 {
return (i_->*M)();}
1306 forwarder = {
static_cast<T*
>(i)};
1308 return HANDLE_WM_GETFONT(
nullptr, p1, p2, forwarder);
1315#if OWL_EV_SIGNATURE_CHECK
1317 template <
class T>
struct THandler {
typedef HICON (T::*type)(
uint iconType);};
1321 template <
class T, HICON (T::*M)(u
int iconType)>
1327 HICON operator ()(HWND, UINT iconType)
1328 {
return (i_->*M)(iconType);}
1330 forwarder = {
static_cast<T*
>(i)};
1332 return HANDLE_WM_GETICON(0, p1, p2, forwarder);
1339#if OWL_EV_SIGNATURE_CHECK
1341 template <
class T>
struct THandler {
typedef void (T::*type)(MINMAXINFO&);};
1345 template <
class T,
void (T::*M)(MINMAXINFO&)>
1351 void operator ()(HWND, LPMINMAXINFO lpMinMaxInfo)
1354 if (lpMinMaxInfo) (i_->*M)(*lpMinMaxInfo);
1357 forwarder = {
static_cast<T*
>(i)};
1359 return HANDLE_WM_GETMINMAXINFO(
nullptr, p1, p2, forwarder);
1363#if defined(OWL5_COMPAT)
1372template <>
struct TDispatch<WM_GETTEXT>
1374 template<
class T,
void (T::*M)(u
int textBufferSize, LPTSTR textBuffer)>
1377 int textBufferSize =
static_cast<int>(p1);
1378 CHECK(textBufferSize > 0);
1379 (
static_cast<T*
>(i)->*M)(
static_cast<uint>(textBufferSize),
reinterpret_cast<LPTSTR
>(p2));
1380 int length =
static_cast<int>(
static_cast<T*
>(i)->HandleMessage(WM_GETTEXTLENGTH));
1382 return static_cast<TResult>(length >= textBufferSize ? textBufferSize - 1 : length);
1391#if OWL_EV_SIGNATURE_CHECK
1393 template <
class T>
struct THandler {
typedef int (T::*type)(
int textBufferSize, LPTSTR textBuffer);};
1397 template <
class T,
int (T::*M)(
int textBufferSize, LPTSTR textBuffer)>
1403 int operator ()(HWND,
int cchTextMax, LPTSTR lpszText)
1404 {
return (i_->*M)(cchTextMax, lpszText);}
1406 forwarder = {
static_cast<T*
>(i)};
1408 return HANDLE_WM_GETTEXT(0, p1, p2, forwarder);
1414#if defined(OWL5_COMPAT)
1419template <>
struct TDispatch<WM_GETTEXTLENGTH>
1422#if OWL_EV_SIGNATURE_CHECK
1424 template <
class T>
struct THandler {
typedef uint (T::*type)();};
1428 template <
class T, u
int (T::*M)()>
1434 int operator ()(HWND)
1435 {
return static_cast<int>((i_->*M)());}
1437 forwarder = {
static_cast<T*
>(i)};
1439 return HANDLE_WM_GETTEXTLENGTH(0, p1, p2, forwarder);
1448#if OWL_EV_SIGNATURE_CHECK
1450 template <
class T>
struct THandler {
typedef int (T::*type)();};
1454 template <
class T,
int (T::*M)()>
1460 int operator ()(HWND)
1461 {
return (i_->*M)();}
1463 forwarder = {
static_cast<T*
>(i)};
1465 return HANDLE_WM_GETTEXTLENGTH(0, p1, p2, forwarder);
1477 static void Encode(F sendMessage, HWND wnd,
const HELPINFO& i)
1480 sendMessage(wnd, WM_HELP, 0,
reinterpret_cast<TParam2>(&iCopy));
1483#if OWL_EV_SIGNATURE_CHECK
1485 template <
class T>
struct THandler {
typedef void (T::*type)(
const HELPINFO&);};
1489 template <
class T,
void (T::*M)(const HELPINFO&)>
1493 return p2 != 0 ? ((
static_cast<T*
>(i)->*M)(*
reinterpret_cast<HELPINFO*
>(p2)), 0) : 0;
1497#if defined(OWL5_COMPAT)
1499template <>
struct TDispatch<WM_HOTKEY>
1502#if OWL_EV_SIGNATURE_CHECK
1504 template <
class T>
struct THandler {
typedef void (T::*type)(
int idHotKey);};
1508 template <
class T,
void (T::*M)(
int idHotKey)>
1514 void operator ()(HWND,
int idHotKey, UINT , UINT )
1515 {(i_->*M)(idHotKey);}
1517 forwarder = {
static_cast<T*
>(i)};
1519 return HANDLE_WM_HOTKEY(0, p1, p2, forwarder);
1528#if OWL_EV_SIGNATURE_CHECK
1530 template <
class T>
struct THandler {
typedef void (T::*type)(
int idHotKey,
uint modifiers,
uint vk);};
1534 template <
class T,
void (T::*M)(
int idHotKey, u
int modifiers, u
int vk)>
1540 void operator ()(HWND,
int idHotKey, UINT fuModifiers, UINT vk)
1541 {(i_->*M)(idHotKey, fuModifiers, vk);}
1543 forwarder = {
static_cast<T*
>(i)};
1545 return HANDLE_WM_HOTKEY(0, p1, p2, forwarder);
1554#if OWL_EV_SIGNATURE_CHECK
1556 template <
class T>
struct THandler {
typedef void (T::*type)(
uint scrollCode,
uint pos, HWND hCtl);};
1560 template <
class T,
void (T::*M)(u
int scrollCode, u
int pos, HWND hCtl)>
1566 void operator ()(HWND, HWND hwndCtl, UINT code,
int pos)
1567 {(i_->*M)(code,
static_cast<uint>(pos), hwndCtl);}
1569 forwarder = {
static_cast<T*
>(i)};
1571 return HANDLE_WM_HSCROLL(
nullptr, p1, p2, forwarder);
1578#if OWL_EV_SIGNATURE_CHECK
1580 template <
class T>
struct THandler {
typedef void (T::*type)(HWND cliboardViewer,
uint scrollCode,
uint pos);};
1584 template <
class T,
void (T::*M)(HWND cliboardViewer, u
int scrollCode, u
int pos)>
1590 void operator ()(HWND, HWND hwndCBViewer, UINT code,
int pos)
1591 {(i_->*M)(hwndCBViewer, code,
static_cast<uint>(pos));}
1593 forwarder = {
static_cast<T*
>(i)};
1595 return HANDLE_WM_HSCROLLCLIPBOARD(0, p1, p2, forwarder);
1602#if OWL_EV_SIGNATURE_CHECK
1604 template <
class T>
struct THandler {
typedef void (T::*type)(HMENU);};
1608 template <
class T,
void (T::*M)(HMENU)>
1614 void operator ()(HWND, HMENU hMenu)
1617 forwarder = {
static_cast<T*
>(i)};
1619 return HANDLE_WM_INITMENU(0, p1, p2, forwarder);
1626#if OWL_EV_SIGNATURE_CHECK
1628 template <
class T>
struct THandler {
typedef void (T::*type)(HMENU,
uint index,
bool isSysMenu);};
1632 template <
class T,
void (T::*M)(HMENU, u
int index,
bool isSysMenu)>
1638 void operator ()(HWND, HMENU hMenu, UINT item, BOOL fSystemMenu)
1639 {(i_->*M)(hMenu, item, fSystemMenu);}
1641 forwarder = {
static_cast<T*
>(i)};
1643 return HANDLE_WM_INITMENUPOPUP(
nullptr, p1, p2, forwarder);
1653#if OWL_EV_SIGNATURE_CHECK
1655 template <
class T>
struct THandler {
typedef void (T::*type)(
uint charSet,
uint localeId);};
1659 template <
class T,
void (T::*M)(u
int charSet, u
int localeId)>
1661 {
return (
static_cast<T*
>(i)->*M)(
static_cast<uint>(p1),
static_cast<uint>(p2)), 0;}
1670#if OWL_EV_SIGNATURE_CHECK
1672 template <
class T>
struct THandler {
typedef void (T::*type)(
uint flags,
uint localeId);};
1676 template <
class T,
void (T::*M)(u
int flags, u
int localeId)>
1678 {
return (
static_cast<T*
>(i)->*M)(
static_cast<uint>(p1),
static_cast<uint>(p2)), 0;}
1684#if OWL_EV_SIGNATURE_CHECK
1686 template <
class T>
struct THandler {
typedef void (T::*type)(
uint key,
uint repeatCount,
uint flags);};
1690 template <
class T,
void (T::*M)(u
int key, u
int repeatCount, u
int flags)>
1696 void operator ()(HWND, UINT vk, BOOL,
int cRepeat, UINT flags)
1697 {(i_->*M)(vk,
static_cast<uint>(cRepeat), flags);}
1699 forwarder = {
static_cast<T*
>(i)};
1701 return HANDLE_WM_KEYDOWN(
nullptr, p1, p2, forwarder);
1708#if OWL_EV_SIGNATURE_CHECK
1710 template <
class T>
struct THandler {
typedef void (T::*type)(
uint key,
uint repeatCount,
uint flags);};
1714 template <
class T,
void (T::*M)(u
int key, u
int repeatCount, u
int flags)>
1720 void operator ()(HWND, UINT vk, BOOL,
int cRepeat, UINT flags)
1721 {(i_->*M)(vk,
static_cast<uint>(cRepeat), flags);}
1723 forwarder = {
static_cast<T*
>(i)};
1725 return HANDLE_WM_KEYUP(
nullptr, p1, p2, forwarder);
1732#if OWL_EV_SIGNATURE_CHECK
1734 template <
class T>
struct THandler {
typedef void (T::*type)(HWND);};
1738 template <
class T,
void (T::*M)(HWND)>
1744 void operator ()(HWND, HWND hwndNewFocus)
1745 {(i_->*M)(hwndNewFocus);}
1747 forwarder = {
static_cast<T*
>(i)};
1749 return HANDLE_WM_KILLFOCUS(
nullptr, p1, p2, forwarder);
1756#if OWL_EV_SIGNATURE_CHECK
1758 template <
class T>
struct THandler {
typedef void (T::*type)(
uint modKeys,
const TPoint&);};
1762 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
1768 void operator ()(HWND, BOOL,
int x,
int y, UINT modKeys)
1769 {(i_->*M)(modKeys,
TPoint(x, y));}
1771 forwarder = {
static_cast<T*
>(i)};
1773 return HANDLE_WM_LBUTTONDBLCLK(
nullptr, p1, p2, forwarder);
1780#if OWL_EV_SIGNATURE_CHECK
1782 template <
class T>
struct THandler {
typedef void (T::*type)(
uint modKeys,
const TPoint&);};
1786 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
1792 void operator ()(HWND, BOOL,
int x,
int y, UINT modKeys)
1793 {(i_->*M)(modKeys,
TPoint(x, y));}
1795 forwarder = {
static_cast<T*
>(i)};
1797 return HANDLE_WM_LBUTTONDOWN(
nullptr, p1, p2, forwarder);
1804#if OWL_EV_SIGNATURE_CHECK
1806 template <
class T>
struct THandler {
typedef void (T::*type)(
uint modKeys,
const TPoint&);};
1810 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
1816 void operator ()(HWND,
int x,
int y, UINT modKeys)
1817 {(i_->*M)(modKeys,
TPoint(x, y));}
1819 forwarder = {
static_cast<T*
>(i)};
1821 return HANDLE_WM_LBUTTONUP(
nullptr, p1, p2, forwarder);
1828#if OWL_EV_SIGNATURE_CHECK
1830 template <
class T>
struct THandler {
typedef void (T::*type)(
uint modKeys,
const TPoint&);};
1834 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
1840 void operator ()(HWND, BOOL,
int x,
int y, UINT modKeys)
1841 {(i_->*M)(modKeys,
TPoint(x, y));}
1843 forwarder = {
static_cast<T*
>(i)};
1845 return HANDLE_WM_MBUTTONDBLCLK(0, p1, p2, forwarder);
1852#if OWL_EV_SIGNATURE_CHECK
1854 template <
class T>
struct THandler {
typedef void (T::*type)(
uint modKeys,
const TPoint&);};
1858 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
1864 void operator ()(HWND, BOOL,
int x,
int y, UINT modKeys)
1865 {(i_->*M)(modKeys,
TPoint(x, y));}
1867 forwarder = {
static_cast<T*
>(i)};
1869 return HANDLE_WM_MBUTTONDOWN(0, p1, p2, forwarder);
1876#if OWL_EV_SIGNATURE_CHECK
1878 template <
class T>
struct THandler {
typedef void (T::*type)(
uint modKeys,
const TPoint&);};
1882 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
1888 void operator ()(HWND,
int x,
int y, UINT modKeys)
1889 {(i_->*M)(modKeys,
TPoint(x, y));}
1891 forwarder = {
static_cast<T*
>(i)};
1893 return HANDLE_WM_MBUTTONUP(0, p1, p2, forwarder);
1900#if OWL_EV_SIGNATURE_CHECK
1902 template <
class T>
struct THandler {
typedef void (T::*type)(HWND activated, HWND deactivated);};
1906 template <
class T,
void (T::*M)(HWND activated, HWND deactivated)>
1912 void operator ()(HWND, BOOL, HWND activated, HWND deactivated)
1913 {(i_->*M)(activated, deactivated);}
1915 forwarder = {
static_cast<T*
>(i)};
1917 return HANDLE_WM_MDIACTIVATE(
nullptr, p1, p2, forwarder);
1924#if OWL_EV_SIGNATURE_CHECK
1926 template <
class T>
struct THandler {
typedef bool (T::*type)(
uint cmd);};
1930 template <
class T,
bool (T::*M)(u
int cmd)>
1936 BOOL operator ()(HWND, UINT cmd)
1937 {
return (i_->*M)(cmd) ? TRUE : FALSE;}
1939 forwarder = {
static_cast<T*
>(i)};
1941 return HANDLE_WM_MDICASCADE(0, p1, p2, forwarder);
1951#if OWL_EV_SIGNATURE_CHECK
1953 template <
class T>
struct THandler {
typedef HWND (T::*type)(MDICREATESTRUCT&);};
1957 template <
class T, HWND (T::*M)(MDICREATESTRUCT&)>
1961 return p2 != 0 ?
reinterpret_cast<TResult>((
static_cast<T*
>(i)->*M)(*
reinterpret_cast<LPMDICREATESTRUCT
>(p2))) : 0;
1968#if OWL_EV_SIGNATURE_CHECK
1970 template <
class T>
struct THandler {
typedef void (T::*type)(HWND);};
1974 template <
class T,
void (T::*M)(HWND)>
1980 void operator ()(HWND, HWND hwndDestroy)
1981 {(i_->*M)(hwndDestroy);}
1983 forwarder = {
static_cast<T*
>(i)};
1985 return HANDLE_WM_MDIDESTROY(
nullptr, p1, p2, forwarder);
1992#if OWL_EV_SIGNATURE_CHECK
1994 template <
class T>
struct THandler {
typedef void (T::*type)(
uint, MEASUREITEMSTRUCT&);};
1998 template <
class T,
void (T::*M)(u
int, MEASUREITEMSTRUCT&)>
2004 void operator ()(HWND, MEASUREITEMSTRUCT* m)
2007 if (m) (i_->*M)(m->CtlID, *m);
2010 forwarder = {
static_cast<T*
>(i)};
2012 return HANDLE_WM_MEASUREITEM(
nullptr, p1, p2, forwarder);
2019#if OWL_EV_SIGNATURE_CHECK
2021 template <
class T>
struct THandler {
typedef int32 (T::*type)(
uint,
uint, HMENU);};
2025 template <
class T,
int32 (T::*M)(u
int, u
int, HMENU)>
2031 int32 operator ()(HWND, UINT nChar, UINT menuType, HMENU hmenu)
2032 {
return (i_->*M)(nChar, menuType, hmenu);}
2034 forwarder = {
static_cast<T*
>(i)};
2036 return HANDLE_WM_MENUCHAR(0, p1, p2, forwarder);
2054 {sendMessage(wnd, WM_MENUSELECT,
MkParam1(item, flags),
reinterpret_cast<TParam2>(hMenu));}
2057#if OWL_EV_SIGNATURE_CHECK
2059 template <
class T>
struct THandler {
typedef void (T::*type)(
uint item,
uint flags, HMENU);};
2063 template <
class T,
void (T::*M)(u
int item, u
int flags, HMENU)>
2065 {
return (
static_cast<T*
>(i)->*M)(LOWORD(p1), HIWORD(p1),
reinterpret_cast<HMENU
>(p2)), 0;}
2071#if OWL_EV_SIGNATURE_CHECK
2073 template <
class T>
struct THandler {
typedef uint (T::*type)(HWND topLevel,
uint codeHitTest,
TMsgId);};
2077 template <
class T, u
int (T::*M)(HWND topLevel, u
int codeHitTest, TMsgId)>
2083 uint operator ()(HWND, HWND hwndTopLevel, UINT codeHitTest, UINT msg)
2084 {
return (i_->*M)(hwndTopLevel, codeHitTest,
static_cast<TMsgId>(msg));}
2086 forwarder = {
static_cast<T*
>(i)};
2088 return HANDLE_WM_MOUSEACTIVATE(
nullptr, p1, p2, forwarder);
2095#if OWL_EV_SIGNATURE_CHECK
2097 template <
class T>
struct THandler {
typedef void (T::*type)(
uint modKeys,
const TPoint&);};
2101 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
2104 TPoint p(GET_X_LPARAM(p2), GET_Y_LPARAM(p2));
2105 return (
static_cast<T*
>(i)->*M)(
static_cast<uint>(p1), p), 0;
2112#if OWL_EV_SIGNATURE_CHECK
2114 template <
class T>
struct THandler {
typedef void (T::*type)(
uint modKeys,
int zDelta,
const TPoint&);};
2118 template <
class T,
void (T::*M)(u
int modKeys,
int zDelta, const TPo
int&)>
2124 void operator ()(HWND,
int x,
int y,
int zDelta, UINT modKeys)
2125 {(i_->*M)(modKeys, zDelta,
TPoint(x, y));}
2127 forwarder = {
static_cast<T*
>(i)};
2129 return HANDLE_WM_MOUSEWHEEL(
nullptr, p1, p2, forwarder);
2137#if OWL_EV_SIGNATURE_CHECK
2139 template <
class T>
struct THandler {
typedef void (T::*type)();};
2143 template <
class T,
void (T::*M)()>
2145 {
return (
static_cast<T*
>(i)->*M)(), 0;}
2151#if OWL_EV_SIGNATURE_CHECK
2153 template <
class T>
struct THandler {
typedef void (T::*type)(
uint modKeys,
const TPoint&);};
2157 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
2163 void operator ()(HWND,
int x,
int y, UINT modKeys)
2164 {(i_->*M)(modKeys,
TPoint(x, y));}
2166 forwarder = {
static_cast<T*
>(i)};
2168 return HANDLE_WM_MOUSEMOVE(
nullptr, p1, p2, forwarder);
2175#if OWL_EV_SIGNATURE_CHECK
2177 template <
class T>
struct THandler {
typedef void (T::*type)(
uint modKeys,
int zDelta,
const TPoint&);};
2181 template <
class T,
void (T::*M)(u
int modKeys,
int zDelta, const TPo
int&)>
2187 void operator ()(HWND,
int x,
int y,
int zDelta, UINT modKeys)
2188 {(i_->*M)(modKeys, zDelta,
TPoint(x, y));}
2190 forwarder = {
static_cast<T*
>(i)};
2192 return HANDLE_WM_MOUSEWHEEL(
nullptr, p1, p2, forwarder);
2199#if OWL_EV_SIGNATURE_CHECK
2201 template <
class T>
struct THandler {
typedef void (T::*type)(
const TPoint&);};
2205 template <
class T,
void (T::*M)(const TPo
int&)>
2211 void operator ()(HWND,
int x,
int y)
2212 {(i_->*M)(
TPoint(x, y));}
2214 forwarder = {
static_cast<T*
>(i)};
2216 return HANDLE_WM_MOVE(
nullptr, p1, p2, forwarder);
2226#if OWL_EV_SIGNATURE_CHECK
2228 template <
class T>
struct THandler {
typedef void (T::*type)(
TRect&);};
2232 template <
class T,
void (T::*M)(TRect&)>
2235 LPRECT rect =
reinterpret_cast<LPRECT
>(p2);
2237 if (!rect)
return FALSE;
2239 (
static_cast<T*
>(i)->*M)(clone);
2248#if OWL_EV_SIGNATURE_CHECK
2250 template <
class T>
struct THandler {
typedef bool (T::*type)(bool);};
2254 template <
class T,
bool (T::*M)(
bool)>
2260 BOOL operator ()(HWND, BOOL fActive, HWND, BOOL)
2261 {
return (i_->*M)(fActive) ? TRUE : FALSE;}
2263 forwarder = {
static_cast<T*
>(i)};
2265 return HANDLE_WM_NCACTIVATE(
nullptr, p1, p2, forwarder);
2272#if OWL_EV_SIGNATURE_CHECK
2274 template <
class T>
struct THandler {
typedef uint (T::*type)(
bool calcValidRects, NCCALCSIZE_PARAMS&);};
2278 template <
class T, u
int (T::*M)(
bool calcVal
idRects, NCCALCSIZE_PARAMS&)>
2284 uint operator ()(HWND, BOOL fCalcValidRects, NCCALCSIZE_PARAMS* lpcsp)
2287 return lpcsp ? (i_->*M)(fCalcValidRects, *lpcsp) : 0;
2290 forwarder = {
static_cast<T*
>(i)};
2292 return HANDLE_WM_NCCALCSIZE(
nullptr, p1, p2, forwarder);
2299#if OWL_EV_SIGNATURE_CHECK
2301 template <
class T>
struct THandler {
typedef bool (T::*type)(CREATESTRUCT&);};
2305 template <
class T,
bool (T::*M)(CREATESTRUCT&)>
2311 BOOL operator ()(HWND, LPCREATESTRUCT lpCreateStruct)
2314 return (lpCreateStruct && (i_->*M)(*lpCreateStruct)) ? TRUE : FALSE;
2317 forwarder = {
static_cast<T*
>(i)};
2319 return HANDLE_WM_NCCREATE(0, p1, p2, forwarder);
2326#if OWL_EV_SIGNATURE_CHECK
2328 template <
class T>
struct THandler {
typedef void (T::*type)();};
2332 template <
class T,
void (T::*M)()>
2338 void operator ()(HWND)
2341 forwarder = {
static_cast<T*
>(i)};
2343 return HANDLE_WM_NCDESTROY(
nullptr, p1, p2, forwarder);
2350#if OWL_EV_SIGNATURE_CHECK
2352 template <
class T>
struct THandler {
typedef uint (T::*type)(
const TPoint&);};
2356 template <
class T, u
int (T::*M)(const TPo
int&)>
2362 uint operator ()(HWND,
int x,
int y)
2363 {
return (i_->*M)(
TPoint(x, y));}
2365 forwarder = {
static_cast<T*
>(i)};
2367 return HANDLE_WM_NCHITTEST(
nullptr, p1, p2, forwarder);
2374#if OWL_EV_SIGNATURE_CHECK
2376 template <
class T>
struct THandler {
typedef void (T::*type)(
uint codeHitTest,
const TPoint&);};
2380 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2386 void operator ()(HWND, BOOL,
int x,
int y, UINT codeHitTest)
2387 {(i_->*M)(codeHitTest,
TPoint(x, y));}
2389 forwarder = {
static_cast<T*
>(i)};
2391 return HANDLE_WM_NCLBUTTONDBLCLK(0, p1, p2, forwarder);
2398#if OWL_EV_SIGNATURE_CHECK
2400 template <
class T>
struct THandler {
typedef void (T::*type)(
uint codeHitTest,
const TPoint&);};
2404 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2410 void operator ()(HWND, BOOL,
int x,
int y, UINT codeHitTest)
2411 {(i_->*M)(codeHitTest,
TPoint(x, y));}
2413 forwarder = {
static_cast<T*
>(i)};
2415 return HANDLE_WM_NCLBUTTONDOWN(
nullptr, p1, p2, forwarder);
2422#if OWL_EV_SIGNATURE_CHECK
2424 template <
class T>
struct THandler {
typedef void (T::*type)(
uint codeHitTest,
const TPoint&);};
2428 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2434 void operator ()(HWND,
int x,
int y, UINT codeHitTest)
2435 {(i_->*M)(codeHitTest,
TPoint(x, y));}
2437 forwarder = {
static_cast<T*
>(i)};
2439 return HANDLE_WM_NCLBUTTONUP(0, p1, p2, forwarder);
2446#if OWL_EV_SIGNATURE_CHECK
2448 template <
class T>
struct THandler {
typedef void (T::*type)(
uint codeHitTest,
const TPoint&);};
2452 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2458 void operator ()(HWND, BOOL,
int x,
int y, UINT codeHitTest)
2459 {(i_->*M)(codeHitTest,
TPoint(x, y));}
2461 forwarder = {
static_cast<T*
>(i)};
2463 return HANDLE_WM_NCMBUTTONDBLCLK(0, p1, p2, forwarder);
2470#if OWL_EV_SIGNATURE_CHECK
2472 template <
class T>
struct THandler {
typedef void (T::*type)(
uint codeHitTest,
const TPoint&);};
2476 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2482 void operator ()(HWND, BOOL,
int x,
int y, UINT codeHitTest)
2483 {(i_->*M)(codeHitTest,
TPoint(x, y));}
2485 forwarder = {
static_cast<T*
>(i)};
2487 return HANDLE_WM_NCMBUTTONDOWN(0, p1, p2, forwarder);
2494#if OWL_EV_SIGNATURE_CHECK
2496 template <
class T>
struct THandler {
typedef void (T::*type)(
uint codeHitTest,
const TPoint&);};
2500 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2506 void operator ()(HWND,
int x,
int y, UINT codeHitTest)
2507 {(i_->*M)(codeHitTest,
TPoint(x, y));}
2509 forwarder = {
static_cast<T*
>(i)};
2511 return HANDLE_WM_NCMBUTTONUP(0, p1, p2, forwarder);
2521#if OWL_EV_SIGNATURE_CHECK
2523 template <
class T>
struct THandler {
typedef void (T::*type)(
uint codeHitTest,
const TPoint&);};
2527 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2530 TPoint p(GET_X_LPARAM(p2), GET_Y_LPARAM(p2));
2531 return (
static_cast<T*
>(i)->*M)(
static_cast<uint>(p1), p), 0;
2541#if OWL_EV_SIGNATURE_CHECK
2543 template <
class T>
struct THandler {
typedef void (T::*type)();};
2547 template <
class T,
void (T::*M)()>
2549 {
return (
static_cast<T*
>(i)->*M)(), 0;}
2555#if OWL_EV_SIGNATURE_CHECK
2557 template <
class T>
struct THandler {
typedef void (T::*type)(
uint codeHitTest,
const TPoint&);};
2561 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2567 void operator ()(HWND,
int x,
int y, UINT codeHitTest)
2568 {(i_->*M)(codeHitTest,
TPoint(x, y));}
2570 forwarder = {
static_cast<T*
>(i)};
2572 return HANDLE_WM_NCMOUSEMOVE(0, p1, p2, forwarder);
2579#if OWL_EV_SIGNATURE_CHECK
2581 template <
class T>
struct THandler {
typedef void (T::*type)(HRGN);};
2585 template <
class T,
void (T::*M)(HRGN)>
2591 void operator ()(HWND, HRGN hrgn)
2594 forwarder = {
static_cast<T*
>(i)};
2596 return HANDLE_WM_NCPAINT(
nullptr, p1, p2, forwarder);
2603#if OWL_EV_SIGNATURE_CHECK
2605 template <
class T>
struct THandler {
typedef void (T::*type)(
uint codeHitTest,
const TPoint&);};
2609 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2615 void operator ()(HWND, BOOL,
int x,
int y, UINT codeHitTest)
2616 {(i_->*M)(codeHitTest,
TPoint(x, y));}
2618 forwarder = {
static_cast<T*
>(i)};
2620 return HANDLE_WM_NCRBUTTONDBLCLK(0, p1, p2, forwarder);
2627#if OWL_EV_SIGNATURE_CHECK
2629 template <
class T>
struct THandler {
typedef void (T::*type)(
uint codeHitTest,
const TPoint&);};
2633 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2639 void operator ()(HWND, BOOL,
int x,
int y, UINT codeHitTest)
2640 {(i_->*M)(codeHitTest,
TPoint(x, y));}
2642 forwarder = {
static_cast<T*
>(i)};
2644 return HANDLE_WM_NCRBUTTONDOWN(0, p1, p2, forwarder);
2651#if OWL_EV_SIGNATURE_CHECK
2653 template <
class T>
struct THandler {
typedef void (T::*type)(
uint codeHitTest,
const TPoint&);};
2657 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2663 void operator ()(HWND,
int x,
int y, UINT codeHitTest)
2664 {(i_->*M)(codeHitTest,
TPoint(x, y));}
2666 forwarder = {
static_cast<T*
>(i)};
2668 return HANDLE_WM_NCRBUTTONUP(0, p1, p2, forwarder);
2682#if OWL_EV_SIGNATURE_CHECK
2684 template <
class T>
struct THandler {
typedef void (T::*type)(
TParam1 handleOrDirectionFlag,
bool isHandle);};
2688 template <
class T,
void (T::*M)(TParam1 handleOrDirectionFlag,
bool isHandle)>
2694 HWND operator ()(HWND, HWND hwndSetFocus, BOOL fNext)
2695 {
return (i_->*M)(
reinterpret_cast<TParam1>(hwndSetFocus), !!fNext), 0;}
2697 forwarder = {
static_cast<T*
>(i)};
2699 return HANDLE_WM_NEXTDLGCTL(0, p1, p2, forwarder);
2712#if OWL_EV_SIGNATURE_CHECK
2714 template <
class T>
struct THandler {
typedef void (T::*type)(
uint key, MDINEXTMENU&);};
2718 template <
class T,
void (T::*M)(u
int key, MDINEXTMENU&)>
2722 LPMDINEXTMENU lpMdiNextMenu =
reinterpret_cast<LPMDINEXTMENU
>(p2);
2723 CHECK(lpMdiNextMenu);
2724 if (lpMdiNextMenu) (
static_cast<T*
>(i)->*M)(nKey, *lpMdiNextMenu);
2731#if OWL_EV_SIGNATURE_CHECK
2733 template <
class T>
struct THandler {
typedef void (T::*type)();};
2737 template <
class T,
void (T::*M)()>
2743 void operator ()(HWND)
2746 forwarder = {
static_cast<T*
>(i)};
2748 return HANDLE_WM_PAINT(
nullptr, p1, p2, forwarder);
2760#if OWL_EV_SIGNATURE_CHECK
2762 template <
class T>
struct THandler {
typedef void (T::*type)(HWND clipboardViewer,
const PAINTSTRUCT&);};
2766 template <
class T,
void (T::*M)(HWND clipboardViewer, const PAINTSTRUCT&)>
2772 void operator ()(HWND, HWND hwndCBViewer,
const PAINTSTRUCT* lpPaintStruct)
2775 if (lpPaintStruct) (i_->*M)(hwndCBViewer, *lpPaintStruct);
2778 forwarder = {
static_cast<T*
>(i)};
2780 return HANDLE_WM_PAINTCLIPBOARD(0, p1, p2, forwarder);
2787#if OWL_EV_SIGNATURE_CHECK
2789 template <
class T>
struct THandler {
typedef void (T::*type)(HWND paletteChange);};
2793 template <
class T,
void (T::*M)(HWND paletteChange)>
2799 void operator ()(HWND, HWND hWndPalChg)
2800 {(i_->*M)(hWndPalChg);}
2802 forwarder = {
static_cast<T*
>(i)};
2804 return HANDLE_WM_PALETTECHANGED(
nullptr, p1, p2, forwarder);
2811#if OWL_EV_SIGNATURE_CHECK
2813 template <
class T>
struct THandler {
typedef void (T::*type)(HWND paletteChange);};
2817 template <
class T,
void (T::*M)(HWND paletteChange)>
2823 void operator ()(HWND, HWND hwndPaletteChange)
2824 {(i_->*M)(hwndPaletteChange);}
2826 forwarder = {
static_cast<T*
>(i)};
2828 return HANDLE_WM_PALETTEISCHANGING(0, p1, p2, forwarder);
2868#if OWL_EV_SIGNATURE_CHECK
2870 template <
class T>
struct THandler {
typedef void (T::*type)(
const TArgs&);};
2881 template <
class T,
void (T::*M)(const TArgs&)>
2884 UINT
event = LOWORD(p1);
2885 if (event >= WM_MOUSEFIRST && event <= WM_MOUSELAST)
2886 (
static_cast<T*
>(i)->*M)(
TMouseInfoArgs(event,
TPoint(GET_X_LPARAM(p2), GET_Y_LPARAM(p2)), HIWORD(p1)));
2888 (
static_cast<T*
>(i)->*M)(
TChildInfoArgs(event,
reinterpret_cast<HWND
>(p2), HIWORD(p1)));
2901#if OWL_EV_SIGNATURE_CHECK
2903 template <
class T>
struct THandler {
typedef void (T::*type)();};
2907 template <
class T,
void (T::*M)()>
2913 void operator ()(HWND)
2916 forwarder = {
static_cast<T*
>(i)};
2918 return HANDLE_WM_PASTE(0, p1, p2, forwarder);
2922#if defined(OWL5_COMPAT)
2930template <>
struct TDispatch<WM_POWER>
2933#if OWL_EV_SIGNATURE_CHECK
2935 template <
class T>
struct THandler {
typedef int (T::*type)(uint event);};
2939 template <
class T,
int (T::*M)(u
int event)>
2941 {
return (
static_cast<T*
>(i)->*M)(
static_cast<uint>(p1));}
2946#if defined(OWL5_COMPAT)
2955template <>
struct TDispatch<WM_POWERBROADCAST>
2958#if OWL_EV_SIGNATURE_CHECK
2960 template <
class T>
struct THandler {
typedef bool (T::*type)(
uint event,
TParam2);};
2964 template <
class T,
bool (T::*M)(u
int event, TParam2)>
2967 uint event =
static_cast<uint>(p1);
2968 return (
static_cast<T*
>(i)->*M)(event, p2) ? TRUE : BROADCAST_QUERY_DENY;
2980#if OWL_EV_SIGNATURE_CHECK
2982 template <
class T>
struct THandler {
typedef TResult (T::*type)(
uint event,
TParam2);};
2986 template <
class T, TResult (T::*M)(u
int event, TParam2)>
2989 uint event =
static_cast<uint>(p1);
2990 return (
static_cast<T*
>(i)->*M)(event, p2);
3002#if OWL_EV_SIGNATURE_CHECK
3004 template <
class T>
struct THandler {
typedef void (T::*type)(HDC dc,
uint options);};
3008 template <
class T,
void (T::*M)(HDC dc, u
int options)>
3011 HDC dc =
reinterpret_cast<HDC
>(p1);
3012 uint options =
static_cast<uint>(p2);
3013 return (
static_cast<T*
>(i)->*M)(dc, options), 0;
3023#if OWL_EV_SIGNATURE_CHECK
3025 template <
class T>
struct THandler {
typedef void (T::*type)(HDC dc,
uint options);};
3029 template <
class T,
void (T::*M)(HDC dc, u
int options)>
3032 HDC dc =
reinterpret_cast<HDC
>(p1);
3033 uint options =
static_cast<uint>(p2);
3034 return (
static_cast<T*
>(i)->*M)(dc, options), 0;
3045 {
return reinterpret_cast<HICON
>(sendMessage(wnd, WM_QUERYDRAGICON, 0, 0));}
3048#if OWL_EV_SIGNATURE_CHECK
3050 template <
class T>
struct THandler {
typedef HICON (T::*type)();};
3054 template <
class T, HICON (T::*M)()>
3056 {
return reinterpret_cast<TResult>((
static_cast<T*
>(i)->*M)());}
3066 {
return sendMessage(wnd, WM_QUERYENDSESSION, 0,
static_cast<TParam2>(flags)) == TRUE;}
3069#if OWL_EV_SIGNATURE_CHECK
3071 template <
class T>
struct THandler {
typedef bool (T::*type)(
uint flags);};
3075 template <
class T,
bool (T::*M)(u
int flags)>
3077 {
return (
static_cast<T*
>(i)->*M)(
static_cast<uint>(p2)) ? TRUE : FALSE;}
3083#if OWL_EV_SIGNATURE_CHECK
3085 template <
class T>
struct THandler {
typedef bool (T::*type)();};
3089 template <
class T,
bool (T::*M)()>
3095 BOOL operator ()(HWND)
3096 {
return (i_->*M)() ? TRUE : FALSE;}
3098 forwarder = {
static_cast<T*
>(i)};
3100 return HANDLE_WM_QUERYNEWPALETTE(
nullptr, p1, p2, forwarder);
3107#if OWL_EV_SIGNATURE_CHECK
3109 template <
class T>
struct THandler {
typedef bool (T::*type)();};
3113 template <
class T,
bool (T::*M)()>
3119 BOOL operator ()(HWND)
3120 {
return (i_->*M)() ? TRUE : FALSE;}
3122 forwarder = {
static_cast<T*
>(i)};
3124 return HANDLE_WM_QUERYOPEN(0, p1, p2, forwarder);
3131#if OWL_EV_SIGNATURE_CHECK
3133 template <
class T>
struct THandler {
typedef void (T::*type)();};
3137 template <
class T,
void (T::*M)()>
3143 void operator ()(HWND)
3146 forwarder = {
static_cast<T*
>(i)};
3148 return HANDLE_WM_QUEUESYNC(0, p1, p2, forwarder);
3155#if OWL_EV_SIGNATURE_CHECK
3157 template <
class T>
struct THandler {
typedef void (T::*type)(
uint modKeys,
const TPoint&);};
3161 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
3167 void operator ()(HWND, BOOL,
int x,
int y, UINT modKeys)
3168 {(i_->*M)(modKeys,
TPoint(x, y));}
3170 forwarder = {
static_cast<T*
>(i)};
3172 return HANDLE_WM_RBUTTONDBLCLK(0, p1, p2, forwarder);
3179#if OWL_EV_SIGNATURE_CHECK
3181 template <
class T>
struct THandler {
typedef void (T::*type)(
uint modKeys,
const TPoint&);};
3185 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
3191 void operator ()(HWND, BOOL,
int x,
int y, UINT modKeys)
3192 {(i_->*M)(modKeys,
TPoint(x, y));}
3194 forwarder = {
static_cast<T*
>(i)};
3196 return HANDLE_WM_RBUTTONDOWN(
nullptr, p1, p2, forwarder);
3203#if OWL_EV_SIGNATURE_CHECK
3205 template <
class T>
struct THandler {
typedef void (T::*type)(
uint modKeys,
const TPoint&);};
3209 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
3215 void operator ()(HWND,
int x,
int y, UINT modKeys)
3216 {(i_->*M)(modKeys,
TPoint(x, y));}
3218 forwarder = {
static_cast<T*
>(i)};
3220 return HANDLE_WM_RBUTTONUP(
nullptr, p1, p2, forwarder);
3227#if OWL_EV_SIGNATURE_CHECK
3229 template <
class T>
struct THandler {
typedef void (T::*type)();};
3233 template <
class T,
void (T::*M)()>
3239 void operator ()(HWND)
3242 forwarder = {
static_cast<T*
>(i)};
3244 return HANDLE_WM_RENDERALLFORMATS(0, p1, p2, forwarder);
3256#if OWL_EV_SIGNATURE_CHECK
3258 template <
class T>
struct THandler {
typedef void (T::*type)(
uint format);};
3262 template <
class T,
void (T::*M)(u
int format)>
3265 uint format =
static_cast<UINT
>(p1);
3266 return (
static_cast<T*
>(i)->*M)(format), 0;
3273#if OWL_EV_SIGNATURE_CHECK
3275 template <
class T>
struct THandler {
typedef bool (T::*type)(HWND hWndCursor,
uint codeHitTest,
TMsgId mouseMsg);};
3279 template <
class T,
bool (T::*M)(HWND hWndCursor, u
int codeHitTest, TMsgId mouseMsg)>
3285 BOOL operator ()(HWND, HWND hwndCursor, UINT codeHitTest, UINT msg)
3286 {
return (i_->*M)(hwndCursor, codeHitTest,
static_cast<TMsgId>(msg)) ? TRUE : FALSE;}
3288 forwarder = {
static_cast<T*
>(i)};
3290 return HANDLE_WM_SETCURSOR(
nullptr, p1, p2, forwarder);
3300#if OWL_EV_SIGNATURE_CHECK
3302 template <
class T>
struct THandler {
typedef HICON (T::*type)(
bool isBigIcon, HICON);};
3306 template <
class T, HICON (T::*M)(
bool isBigIcon, HICON)>
3309 HICON r = (
static_cast<T*
>(i)->*M)(p1 == ICON_BIG,
reinterpret_cast<HICON
>(p2));
3310 return reinterpret_cast<TResult>(r);
3317#if OWL_EV_SIGNATURE_CHECK
3319 template <
class T>
struct THandler {
typedef void (T::*type)(HWND hwndLostFocus);};
3323 template <
class T,
void (T::*M)(HWND hwndLostFocus)>
3329 void operator ()(HWND, HWND hWndLostFocus)
3330 {(i_->*M)(hWndLostFocus);}
3332 forwarder = {
static_cast<T*
>(i)};
3334 return HANDLE_WM_SETFOCUS(
nullptr, p1, p2, forwarder);
3341#if OWL_EV_SIGNATURE_CHECK
3343 template <
class T>
struct THandler {
typedef void (T::*type)(HFONT,
bool redraw);};
3347 template <
class T,
void (T::*M)(HFONT,
bool redraw)>
3353 void operator ()(HWND, HFONT hfont, BOOL fRedraw)
3354 {(i_->*M)(hfont, fRedraw);}
3356 forwarder = {
static_cast<T*
>(i)};
3358 return HANDLE_WM_SETFONT(
nullptr, p1, p2, forwarder);
3365#if OWL_EV_SIGNATURE_CHECK
3367 template <
class T>
struct THandler {
typedef void (T::*type)(
bool redraw);};
3371 template <
class T,
void (T::*M)(
bool redraw)>
3377 void operator ()(HWND, BOOL fRedraw)
3378 {(i_->*M)(!!fRedraw);}
3380 forwarder = {
static_cast<T*
>(i)};
3382 return HANDLE_WM_SETREDRAW(0, p1, p2, forwarder);
3389#if OWL_EV_SIGNATURE_CHECK
3391 template <
class T>
struct THandler {
typedef void (T::*type)(LPCTSTR);};
3395 template <
class T,
void (T::*M)(LPCTSTR)>
3401 void operator ()(HWND, LPCTSTR lpszText)
3402 {(i_->*M)(lpszText);}
3404 forwarder = {
static_cast<T*
>(i)};
3406 return HANDLE_WM_SETTEXT(0, p1, p2, forwarder);
3416#if OWL_EV_SIGNATURE_CHECK
3418 template <
class T>
struct THandler {
typedef void (T::*type)(
uint flags, LPCTSTR section);};
3422 template <
class T,
void (T::*M)(u
int flags, LPCTSTR section)>
3425 (
static_cast<T*
>(i)->*M)(
static_cast<uint>(p1),
reinterpret_cast<LPCTSTR
>(p2));
3433#if OWL_EV_SIGNATURE_CHECK
3435 template <
class T>
struct THandler {
typedef void (T::*type)(bool,
uint status);};
3439 template <
class T,
void (T::*M)(
bool, u
int status)>
3445 void operator ()(HWND, BOOL fShow, UINT status)
3446 {(i_->*M)(fShow, status);}
3448 forwarder = {
static_cast<T*
>(i)};
3450 return HANDLE_WM_SHOWWINDOW(0, p1, p2, forwarder);
3457#if OWL_EV_SIGNATURE_CHECK
3459 template <
class T>
struct THandler {
typedef void (T::*type)(
uint,
const TSize&);};
3463 template <
class T,
void (T::*M)(u
int, const TSize&)>
3469 void operator ()(HWND, UINT sizeType,
int cx,
int cy)
3470 {(i_->*M)(sizeType,
TSize(cx, cy));}
3472 forwarder = {
static_cast<T*
>(i)};
3474 return HANDLE_WM_SIZE(
nullptr, p1, p2, forwarder);
3486#if OWL_EV_SIGNATURE_CHECK
3488 template <
class T>
struct THandler {
typedef void (T::*type)(HWND clipboardViewer,
const TRect& client);};
3492 template <
class T,
void (T::*M)(HWND clipboardViewer, const TRect& client)>
3498 void operator ()(HWND, HWND hwndCBViewer,
const LPRECT lprc)
3501 if (lprc) (i_->*M)(hwndCBViewer,
TRect(*lprc));
3504 forwarder = {
static_cast<T*
>(i)};
3506 return HANDLE_WM_SIZECLIPBOARD(0, p1, p2, forwarder);
3517 {
return static_cast<bool>(sendMessage(wnd,
WM_SIZING,
static_cast<TParam1>(side),
reinterpret_cast<TParam2>(&r)));}
3520#if OWL_EV_SIGNATURE_CHECK
3522 template <
class T>
struct THandler {
typedef bool (T::*type)(
uint side,
TRect&);};
3526 template <
class T,
bool (T::*M)(u
int s
ide, TRect&)>
3530 LPRECT r =
reinterpret_cast<LPRECT
>(p2);
3533 bool result = (
static_cast<T*
>(i)->*M)(
static_cast<uint>(p1), clone);
3535 return result ? TRUE : FALSE;
3542#if OWL_EV_SIGNATURE_CHECK
3544 template <
class T>
struct THandler {
typedef void (T::*type)(
uint status,
int jobsLeft);};
3548 template <
class T,
void (T::*M)(u
int status,
int jobsLeft)>
3554 void operator ()(HWND, UINT status,
int cJobInQueue)
3555 {(i_->*M)(status, cJobInQueue);}
3557 forwarder = {
static_cast<T*
>(i)};
3559 return HANDLE_WM_SPOOLERSTATUS(0, p1, p2, forwarder);
3569#if OWL_EV_SIGNATURE_CHECK
3571 template <
class T>
struct THandler {
typedef void (T::*type)(
int styleType,
const STYLESTRUCT& style);};
3575 template <
class T,
void (T::*M)(
int styleType, const STYLESTRUCT& style)>
3578 int styleType =
static_cast<int>(p1);
3579 const STYLESTRUCT* lpStyleStruct =
reinterpret_cast<LPSTYLESTRUCT
>(p2);
3580 CHECK(lpStyleStruct);
3581 if (lpStyleStruct) (
static_cast<T*
>(i)->*M)(styleType, *lpStyleStruct);
3592#if OWL_EV_SIGNATURE_CHECK
3594 template <
class T>
struct THandler {
typedef void (T::*type)(
int styleType, STYLESTRUCT& style);};
3598 template <
class T,
void (T::*M)(
int styleType, STYLESTRUCT& style)>
3601 int styleType =
static_cast<int>(p1);
3602 LPSTYLESTRUCT lpStyleStruct =
reinterpret_cast<LPSTYLESTRUCT
>(p2);
3603 CHECK(lpStyleStruct);
3604 if (lpStyleStruct) (
static_cast<T*
>(i)->*M)(styleType, *lpStyleStruct);
3615#if OWL_EV_SIGNATURE_CHECK
3617 template <
class T>
struct THandler {
typedef void (T::*type)(
uint key,
uint repeatCount,
uint flags);};
3621 template <
class T,
void (T::*M)(u
int key, u
int repeatCount, u
int flags)>
3627 void operator ()(HWND,
TCHAR ch,
int cRepeat)
3628 {(i_->*M)(
static_cast<uint>(ch),
static_cast<uint>(cRepeat), 0);}
3630 forwarder = {
static_cast<T*
>(i)};
3632 return HANDLE_WM_SYSCHAR(0, p1, p2, forwarder);
3639#if OWL_EV_SIGNATURE_CHECK
3641 template <
class T>
struct THandler {
typedef void (T::*type)();};
3645 template <
class T,
void (T::*M)()>
3651 void operator ()(HWND)
3654 forwarder = {
static_cast<T*
>(i)};
3656 return HANDLE_WM_SYSCOLORCHANGE(
nullptr, p1, p2, forwarder);
3663#if OWL_EV_SIGNATURE_CHECK
3665 template <
class T>
struct THandler {
typedef void (T::*type)(
uint cmd,
const TPoint&);};
3669 template <
class T,
void (T::*M)(u
int cmd, const TPo
int&)>
3675 void operator ()(HWND, UINT cmd,
int x,
int y)
3676 {(i_->*M)(cmd,
TPoint(x, y));}
3678 forwarder = {
static_cast<T*
>(i)};
3680 return HANDLE_WM_SYSCOMMAND(
nullptr, p1, p2, forwarder);
3690#if OWL_EV_SIGNATURE_CHECK
3692 template <
class T>
struct THandler {
typedef void (T::*type)(
uint ch,
uint repeatCount,
uint flags);};
3696 template <
class T,
void (T::*M)(u
int ch, u
int repeatCount, u
int flags)>
3702 void operator ()(HWND,
TCHAR ch,
int cRepeat)
3703 {(i_->*M)(
static_cast<uint>(ch),
static_cast<uint>(cRepeat), 0);}
3705 forwarder = {
static_cast<T*
>(i)};
3707 return HANDLE_WM_SYSDEADCHAR(0, p1, p2, forwarder);
3714#if OWL_EV_SIGNATURE_CHECK
3716 template <
class T>
struct THandler {
typedef void (T::*type)(
uint key,
uint repeatCount,
uint flags);};
3720 template <
class T,
void (T::*M)(u
int key, u
int repeatCount, u
int flags)>
3726 void operator ()(HWND, UINT vk, BOOL,
int cRepeat, UINT flags)
3727 {(i_->*M)(vk,
static_cast<uint>(cRepeat), flags);}
3729 forwarder = {
static_cast<T*
>(i)};
3731 return HANDLE_WM_SYSKEYDOWN(
nullptr, p1, p2, forwarder);
3738#if OWL_EV_SIGNATURE_CHECK
3740 template <
class T>
struct THandler {
typedef void (T::*type)(
uint key,
uint repeatCount,
uint flags);};
3744 template <
class T,
void (T::*M)(u
int key, u
int repeatCount, u
int flags)>
3750 void operator ()(HWND, UINT vk, BOOL,
int cRepeat, UINT flags)
3751 {(i_->*M)(vk,
static_cast<uint>(cRepeat), flags);}
3753 forwarder = {
static_cast<T*
>(i)};
3755 return HANDLE_WM_SYSKEYUP(0, p1, p2, forwarder);
3768#if OWL_EV_SIGNATURE_CHECK
3770 template <
class T>
struct THandler {
typedef void (T::*type)(
uint idAction, ULONG_PTR data);};
3774 template <
class T,
void (T::*M)(u
int idAction, ULONG_PTR data)>
3777 uint idAction =
static_cast<UINT
>(p1);
3778 ULONG_PTR data =
static_cast<ULONG_PTR
>(p2);
3779 return (
static_cast<T*
>(i)->*M)(idAction, data), 0;
3789#if OWL_EV_SIGNATURE_CHECK
3791 template <
class T>
struct THandler {
typedef void (T::*type)();};
3795 template <
class T,
void (T::*M)()>
3797 {
return (
static_cast<T*
>(i)->*M)(), 0;}
3803#if OWL_EV_SIGNATURE_CHECK
3805 template <
class T>
struct THandler {
typedef void (T::*type)();};
3809 template <
class T,
void (T::*M)()>
3815 void operator ()(HWND)
3818 forwarder = {
static_cast<T*
>(i)};
3820 return HANDLE_WM_TIMECHANGE(0, p1, p2, forwarder);
3827#if OWL_EV_SIGNATURE_CHECK
3829 template <
class T>
struct THandler {
typedef void (T::*type)(
uint);};
3833 template <
class T,
void (T::*M)(u
int)>
3839 void operator ()(HWND, UINT
id)
3842 forwarder = {
static_cast<T*
>(i)};
3844 return HANDLE_WM_TIMER(
nullptr, p1, p2, forwarder);
3851#if OWL_EV_SIGNATURE_CHECK
3853 template <
class T>
struct THandler {
typedef bool (T::*type)();};
3857 template <
class T,
bool (T::*M)()>
3863 BOOL operator ()(HWND)
3864 {
return (i_->*M)() ? TRUE : FALSE;}
3866 forwarder = {
static_cast<T*
>(i)};
3868 return HANDLE_WM_UNDO(0, p1, p2, forwarder);
3875#if OWL_EV_SIGNATURE_CHECK
3877 template <
class T>
struct THandler {
typedef void (T::*type)();};
3881 template <
class T,
void (T::*M)()>
3887 void operator ()(HWND)
3890 forwarder = {
static_cast<T*
>(i)};
3892 return HANDLE_WM_USERCHANGED(0, p1, p2, forwarder);
3899#if OWL_EV_SIGNATURE_CHECK
3901 template <
class T>
struct THandler {
typedef int (T::*type)(
uint vk, HWND listBox,
int caretIndex);};
3905 template <
class T,
int (T::*M)(u
int vk, HWND listBox,
int caretIndex)>
3911 int operator ()(HWND, UINT vk, HWND hwndListbox,
int iCaret)
3912 {
return (i_->*M)(vk, hwndListbox, iCaret);}
3914 forwarder = {
static_cast<T*
>(i)};
3916 return HANDLE_WM_VKEYTOITEM(0, p1, p2, forwarder);
3923#if OWL_EV_SIGNATURE_CHECK
3925 template <
class T>
struct THandler {
typedef void (T::*type)(
uint scrollCode,
uint pos, HWND);};
3929 template <
class T,
void (T::*M)(u
int scrollCode, u
int pos, HWND)>
3935 void operator ()(HWND, HWND hwndCtl, UINT code,
int pos)
3936 {(i_->*M)(code,
static_cast<uint>(pos), hwndCtl);}
3938 forwarder = {
static_cast<T*
>(i)};
3940 return HANDLE_WM_VSCROLL(
nullptr, p1, p2, forwarder);
3947#if OWL_EV_SIGNATURE_CHECK
3949 template <
class T>
struct THandler {
typedef void (T::*type)(HWND cliboardViewer,
uint scrollCode,
uint pos);};
3953 template <
class T,
void (T::*M)(HWND cliboardViewer, u
int scrollCode, u
int pos)>
3959 void operator ()(HWND, HWND hwndCBViewer, UINT code,
int pos)
3960 {(i_->*M)(hwndCBViewer, code,
static_cast<uint>(pos));}
3962 forwarder = {
static_cast<T*
>(i)};
3964 return HANDLE_WM_VSCROLLCLIPBOARD(0, p1, p2, forwarder);
3971#if OWL_EV_SIGNATURE_CHECK
3973 template <
class T>
struct THandler {
typedef void (T::*type)(
const WINDOWPOS&);};
3977 template <
class T,
void (T::*M)(const WINDOWPOS&)>
3983 void operator ()(HWND,
const LPWINDOWPOS lpwpos)
3986 if (lpwpos) (i_->*M)(*lpwpos);
3989 forwarder = {
static_cast<T*
>(i)};
3991 return HANDLE_WM_WINDOWPOSCHANGED(
nullptr, p1, p2, forwarder);
3998#if OWL_EV_SIGNATURE_CHECK
4000 template <
class T>
struct THandler {
typedef bool (T::*type)(WINDOWPOS&);};
4004 template <
class T,
bool (T::*M)(WINDOWPOS&)>
4010 BOOL operator ()(HWND, LPWINDOWPOS lpwpos)
4013 return (lpwpos && (i_->*M)(*lpwpos)) ? TRUE : FALSE;
4016 forwarder = {
static_cast<T*
>(i)};
4018 return HANDLE_WM_WINDOWPOSCHANGING(
nullptr, p1, p2, forwarder);
4022#if defined(OWL5_COMPAT)
4030template <
class T,
void (T::*M)(LPCTSTR section)>
4036 void operator ()(HWND, LPCTSTR lpszSectionName)
4037 {(i_->*M)(lpszSectionName);}
4039 forwarder = {
static_cast<T*
>(i)};
4041 return HANDLE_WM_WININICHANGE(0, p1, p2, forwarder);
4052#if OWL_EV_SIGNATURE_CHECK
4054 template <
class T>
struct THandler {
typedef uint (T::*type)();};
4058 template <
class T, u
int (T::*M)()>
4061 uint r = (
static_cast<T*
>(i)->*M)();
4069#if OWL_EV_SIGNATURE_CHECK
4071 template <
class T>
struct THandler {
typedef void (T::*type)();};
4075 template <
class T,
void (T::*M)()>
4077 {
return (
static_cast<T*
>(i)->*M)(), 0;}
4083#if OWL_EV_SIGNATURE_CHECK
4085 template <
class T>
struct THandler {
typedef bool (T::*type)(int);};
4089 template <
class T,
bool (T::*M)(
int)>
4091 {
return (
static_cast<T*
>(i)->*M)(
static_cast<int>(p1)) ? TRUE : FALSE;}
4100#define WM_OWLLAST 0x7FFF
4101#define WM_OWLFIRST (WM_OWLLAST - 0x03FF)
4103#define WM_COMMAND_ENABLE (WM_OWLLAST - 0)
4104#define WM_CHILDINVALID (WM_OWLLAST - 1)
4105#define WM_OWLDOCUMENT (WM_OWLLAST - 2)
4106#define WM_OWLVIEW (WM_OWLLAST - 3)
4107#define WM_OWLNOTIFY (WM_OWLLAST - 4)
4108#define WM_OWLPREPROCMENU (WM_OWLLAST - 5)
4109#define WM_OWLCANCLOSE (WM_OWLLAST - 6)
4110#define WM_VBXINITFORM (WM_OWLLAST - 7)
4111#define WM_VBXNAME (WM_OWLLAST - 8)
4112#define WM_VBXBASE (WM_OWLLAST - 8 - 256)
4113#define WM_OWLWAKEUP (WM_VBXBASE - 1)
4114#define WM_OWLFRAMESIZE (WM_VBXBASE - 2)
4115#define WM_OWLSLIPDBLCLK (WM_VBXBASE - 3)
4116#define WM_OWLWINDOWDOCKED (WM_VBXBASE - 4)
4117#define WM_OWLCREATETTIP (WM_VBXBASE - 5)
4118#define WM_OWLHELPHIT (WM_VBXBASE - 6)
4123 static void Encode(F sendMessage, HWND wnd, HWND invalidChild)
4127#if OWL_EV_SIGNATURE_CHECK
4129 template <
class T>
struct THandler {
typedef void (T::*type)(HWND);};
4133 template <
class T,
void (T::*M)(HWND)>
4135 {
return (
static_cast<T*
>(i)->*M)(
reinterpret_cast<HWND
>(p1)), 0;}
4145#if OWL_EV_SIGNATURE_CHECK
4147 template <
class T>
struct THandler {
typedef void (T::*type)(
TCommandEnabler&);};
4151 template <
class T,
void (T::*M)(TCommandEnabler&)>
4155 return p2 ? ((
static_cast<T*
>(i)->*M)(*
reinterpret_cast<TCommandEnabler*
>(p2)), 0) : 0;
4166#if OWL_EV_SIGNATURE_CHECK
4168 template <
class T>
struct THandler {
typedef bool (T::*type)();};
4172 template <
class T,
bool (T::*M)()>
4174 {
return (
static_cast<T*
>(i)->*M)() ? TRUE : FALSE;}
4184#if OWL_EV_SIGNATURE_CHECK
4186 template <
class T>
struct THandler {
typedef void (T::*type)();};
4190 template <
class T,
void (T::*M)()>
4192 {
return (
static_cast<T*
>(i)->*M)(), 0;}
4202#if OWL_EV_SIGNATURE_CHECK
4204 template <
class T>
struct THandler {
typedef void (T::*type)(
uint sizeType,
const TSize&);};
4208 template <
class T,
void (T::*M)(u
int sizeType, const TSize&)>
4212 return p2 ? ((
static_cast<T*
>(i)->*M)(
static_cast<uint>(p1), *
reinterpret_cast<TSize*
>(p2)), 0) : 0;
4223#if OWL_EV_SIGNATURE_CHECK
4225 template <
class T>
struct THandler {
typedef void (T::*type)(
const THelpHitInfo&);};
4229 template <
class T,
void (T::*M)(const THelpHitInfo&)>
4233 return p2 ? ((
static_cast<T*
>(i)->*M)(*
reinterpret_cast<THelpHitInfo*
>(p2)), 0) : 0;
4240 static void Encode(F sendMessage, HWND wnd, HMENU menu)
4244#if OWL_EV_SIGNATURE_CHECK
4246 template <
class T>
struct THandler {
typedef void (T::*type)(HMENU);};
4250 template <
class T,
void (T::*M)(HMENU)>
4252 {
return (
static_cast<T*
>(i)->*M)(
reinterpret_cast<HMENU
>(p1)), 0;}
4262#if OWL_EV_SIGNATURE_CHECK
4264 template <
class T>
struct THandler {
typedef void (T::*type)();};
4268 template <
class T,
void (T::*M)()>
4270 {
return (
static_cast<T*
>(i)->*M)(), 0;}
4280#if OWL_EV_SIGNATURE_CHECK
4282 template <
class T>
struct THandler {
typedef void (T::*type)(
uint pos,
const TDockingSlip&);};
4286 template <
class T,
void (T::*M)(u
int pos, const TDockingSlip&)>
4290 return p2 ? ((
static_cast<T*
>(i)->*M)(
static_cast<uint>(p1), *
reinterpret_cast<const TDockingSlip*
>(p2)), 0) : 0;
#define PRECONDITION(condition)
Base class for an extensible interface for auto enabling/disabling of commands (menu items,...
TDockingSlip is an abstract base class for windows which accepts and holds dockable windows.
An abstract base class, TDocument is the base class for all document objects and serves as an interfa...
TDropInfo is a simple class that supports file-name drag-and-drop operations using the WM_DROPFILES m...
TPoint is a support class, derived from tagPOINT.
TPoint()
Constructs an uninitialized point.
TRect is a mathematical class derived from tagRect.
The tagSIZE struct is defined as.
Abstract base class for view access from document.
TWindow, derived from TEventHandler and TStreamableBase, provides window-specific behavior and encaps...
#define WM_OWLWINDOWDOCKED
Notify window it was [un]docked/reparented.
#define WM_OWLFRAMESIZE
Notify children of frame resizing.
#define WM_COMMAND_ENABLE
#define WM_OWLHELPHIT
Notify Help manager with hit point.
#define WM_OWLCREATETTIP
Notify gadget window to create tooltips.
#define WM_OWLPREPROCMENU
Classes for window system geometry.
Object Windows Library (OWLNext Core).
UINT TMsgId
Message ID type.
TResult DispatchChildNotifyWithCode(void *i, TParam1 p1, TParam2)
uint32 MkUint32(uint16 lo, uint16 hi)
TDispatch< WM_PARENTNOTIFY >::TMouseInfoArgs TParentNotifyMouseInfo
Alias for convenience.
void InUse(const T &arg)
Handy utility to avoid compiler warnings about unused parameters.
LPARAM TParam2
Second parameter type.
WPARAM TParam1
First parameter type.
TDispatch< WM_PARENTNOTIFY >::TArgs TParentNotify
Alias for convenience.
TParam2 MkParam2(const T1 &lo, const T2 &hi)
TResult DispatchRawArguments(void *i, TParam1 p1, TParam2 p2)
void(TGeneric::*) TAnyPMF()
TResult DispatchCommand(void *i, TParam1, TParam2)
TParam1 MkParam1(uint lo, uint hi)
LRESULT TResult
Result type.
TDispatch< WM_PARENTNOTIFY >::TChildInfoArgs TParentNotifyChildInfo
Alias for convenience.
TResult AnyDispatch(TGeneric &obj, TAnyPMF, TParam1 p1, TParam2 p2)
TResult DispatchCommandWithId(void *i, TParam1 p1, TParam2)
TResult DispatchChildNotify(void *i, TParam1, TParam2)
General definitions used by all ObjectWindows programs.
#define OWL_DISABLE_WARNING_POP
#define OWL_DISABLE_WARNING_ZERO_AS_NULL_POINTER
#define OWL_DISABLE_WARNING_PUSH
static TResult Decode(void *i, TParam1, TParam2)
static TResult Decode(void *i, TParam1, TParam2)
static TResult Decode(void *i, TParam1 p1, TParam2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static void Encode(F sendMessage, HWND wnd, HWND invalidChild)
static TResult Decode(void *i, TParam1 p1, TParam2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1, TParam2 p2)
static void Encode(F sendMessage, HWND wnd, TCommandEnabler &enabler)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static void Encode(F sendMessage, HWND wnd, bool endSession, uint flags)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2)
static TResult Decode(void *i, TParam1, TParam2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static void Encode(F sendMessage, HWND wnd, const HELPINFO &i)
static TResult Decode(void *i, TParam1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(T *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static void Encode(F sendMessage, HWND wnd, uint item, uint flags, HMENU hMenu)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1, TParam2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1, TParam2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static bool Encode(F sendMessage, HWND wnd)
static TResult Decode(void *i, TParam1, TParam2)
static TResult Decode(void *i, TParam1, TParam2)
static void Encode(F sendMessage, HWND wnd)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static void Encode(F sendMessage, HWND wnd, uint sizeType, const TSize &size)
static TResult Decode(void *i, TParam1, TParam2 p2)
static void Encode(F sendMessage, HWND wnd, const THelpHitInfo &i)
static void Encode(F sendMessage, HWND wnd, HMENU menu)
static TResult Decode(void *i, TParam1 p1, TParam2)
static TResult Decode(void *i, TParam1, TParam2)
static void Encode(F sendMessage, HWND wnd)
static void Encode(F sendMessage, HWND wnd, uint pos, const TDockingSlip &d)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
Parameter package for the WM_PARENTNOTIFY handler.
TChildInfoArgs(UINT e, HWND c, UINT i)
Parameter package for the WM_PARENTNOTIFY handler.
TMouseInfoArgs(UINT e, TPoint c, UINT b)
UINT Button
Only valid for WM_XBUTTONDOWN.
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
The handler should static_cast the TParentNotify argument to the specific derived type,...
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1, TParam2)
static HICON Encode(F sendMessage, HWND wnd)
static bool Encode(F sendMessage, HWND wnd, uint flags)
static TResult Decode(void *i, TParam1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static bool Encode(F sendMessage, HWND wnd, uint side, TRect &r)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1, TParam2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
static TResult Decode(void *i, TParam1 p1, TParam2 p2)
Undefined default template for dispatchers Template specialization is used to allow the compiler to l...
Classes for window system structure and type encapsulation.