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)>
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>
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>
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>
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>
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>
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>
243template <
class T, TMsgId MsgId, u
int NotificationCode,
template <TMsgId>
class D>
257template <u
int MessageID>
263#if OWL_EV_SIGNATURE_CHECK
269 template <
class T,
void (T::*M)(u
int,
bool, HWND)>
287#if OWL_EV_SIGNATURE_CHECK
293 template <
class T,
void (T::*M)(
bool, DWORD)>
311#if OWL_EV_SIGNATURE_CHECK
317 template <
class T,
void (T::*M)(u
int bufferSize, LPTSTR formatNameBuffer)>
335#if OWL_EV_SIGNATURE_CHECK
341 template <
class T,
void (T::*M)()>
362#if OWL_EV_SIGNATURE_CHECK
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
382 template <
class T,
void (T::*M)(HWND removed, HWND next)>
403#if OWL_EV_SIGNATURE_CHECK
409 template <
class T,
void (T::*M)(u
int ch, u
int repeatCount, u
int flags)>
427#if OWL_EV_SIGNATURE_CHECK
433 template <
class T,
int (T::*M)(u
int ch, HWND listBox,
int caretIndex)>
451#if OWL_EV_SIGNATURE_CHECK
457 template <
class T,
void (T::*M)()>
475#if OWL_EV_SIGNATURE_CHECK
481 template <
class T,
void (T::*M)()>
499#if OWL_EV_SIGNATURE_CHECK
505 template <
class T,
void (T::*M)(u
int compactRatio)>
523#if OWL_EV_SIGNATURE_CHECK
529 template <
class T,
int (T::*M)(u
int, const COMPAREITEMSTRUCT&)>
538 return c ? (
i_->*
M)(
c->CtlID, *
c) : 0;
553#if OWL_EV_SIGNATURE_CHECK
559 template <
class T,
void (T::*M)(HWND,
int,
int)>
581#if OWL_EV_SIGNATURE_CHECK
587 template <
class T,
bool (T::*M)(HWND sender, const COPYDATASTRUCT&)>
598#if OWL_EV_SIGNATURE_CHECK
604 template <
class T,
bool (T::*M)(CREATESTRUCT&)>
625#if OWL_EV_SIGNATURE_CHECK
631 template <
class T, HBRUSH (T::*M)(HDC, HWND, u
int)>
649#if OWL_EV_SIGNATURE_CHECK
655 template <
class T, HBRUSH (T::*M)(HDC, HWND, u
int)>
673#if OWL_EV_SIGNATURE_CHECK
679 template <
class T, HBRUSH (T::*M)(HDC, HWND, u
int)>
697#if OWL_EV_SIGNATURE_CHECK
703 template <
class T, HBRUSH (T::*M)(HDC, HWND, u
int)>
718#if defined(OWL5_COMPAT)
728#if OWL_EV_SIGNATURE_CHECK
734 template <
class T, HBRUSH (T::*M)(HDC, HWND, u
int)>
754#if OWL_EV_SIGNATURE_CHECK
760 template <
class T, HBRUSH (T::*M)(HDC, HWND, u
int)>
778#if OWL_EV_SIGNATURE_CHECK
784 template <
class T, HBRUSH (T::*M)(HDC, HWND, u
int)>
802#if OWL_EV_SIGNATURE_CHECK
808 template <
class T,
void (T::*M)()>
829#if OWL_EV_SIGNATURE_CHECK
835 template <
class T,
void (T::*M)(u
int deadKey, u
int repeatCount, u
int flags)>
853#if OWL_EV_SIGNATURE_CHECK
859 template <
class T,
void (T::*M)(u
int, const DELETEITEMSTRUCT&)>
868 if (
d) (
i_->*
M)(
d->CtlID, *
d);
880#if OWL_EV_SIGNATURE_CHECK
886 template <
class T,
void (T::*M)()>
904#if OWL_EV_SIGNATURE_CHECK
910 template <
class T,
void (T::*M)()>
938#if OWL_EV_SIGNATURE_CHECK
944 template <
class T, TResult (T::*M)(u
int event, PDEV_BROADCAST_HDR eventData)>
952#if OWL_EV_SIGNATURE_CHECK
958 template <
class T,
void (T::*M)(LPCTSTR deviceName)>
976#if OWL_EV_SIGNATURE_CHECK
982 template <
class T,
void (T::*M)(u
int bitsPerPixel, u
int screenResolutionW
idth, u
int screenResolutionHeight)>
1000#if OWL_EV_SIGNATURE_CHECK
1006 template <
class T,
void (T::*M)()>
1024#if OWL_EV_SIGNATURE_CHECK
1030 template <
class T,
void (T::*M)(u
int, const DRAWITEMSTRUCT&)>
1039 if (
d) (
i_->*
M)(
d->CtlID, *
d);
1051#if OWL_EV_SIGNATURE_CHECK
1057 template <
class T,
void (T::*M)(TDropInfo)>
1075#if OWL_EV_SIGNATURE_CHECK
1081 template <
class T,
void (T::*M)(
bool)>
1106#if OWL_EV_SIGNATURE_CHECK
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
1126 template <
class T,
void (T::*M)(u
int source, HWND)>
1147#if OWL_EV_SIGNATURE_CHECK
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
1167 template <
class T,
void (T::*M)()>
1185#if OWL_EV_SIGNATURE_CHECK
1191 template <
class T,
bool (T::*M)(HDC)>
1212#if OWL_EV_SIGNATURE_CHECK
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
1235 template <
class T,
void (T::*M)()>
1237 {
return (
static_cast<T*
>(
i)->*
M)(), 0;}
1243#if OWL_EV_SIGNATURE_CHECK
1249 template <
class T,
void (T::*M)()>
1267#if OWL_EV_SIGNATURE_CHECK
1273 template <
class T, u
int (T::*M)(const MSG*)>
1291#if OWL_EV_SIGNATURE_CHECK
1297 template <
class T, HFONT (T::*M)()>
1304 {
return (
i_->*
M)();}
1315#if OWL_EV_SIGNATURE_CHECK
1321 template <
class T, HICON (T::*M)(u
int iconType)>
1339#if OWL_EV_SIGNATURE_CHECK
1345 template <
class T,
void (T::*M)(MINMAXINFO&)>
1363#if defined(OWL5_COMPAT)
1374 template<
class T,
void (T::*M)(u
int textBufferSize, LPTSTR textBuffer)>
1391#if OWL_EV_SIGNATURE_CHECK
1397 template <
class T,
int (T::*M)(
int textBufferSize, LPTSTR textBuffer)>
1414#if defined(OWL5_COMPAT)
1422#if OWL_EV_SIGNATURE_CHECK
1424 template <
class T>
struct THandler {
typedef uint (T::*
type)();};
1428 template <
class T, u
int (T::*M)()>
1435 {
return static_cast<int>((
i_->*
M)());}
1448#if OWL_EV_SIGNATURE_CHECK
1454 template <
class T,
int (T::*M)()>
1461 {
return (
i_->*
M)();}
1483#if OWL_EV_SIGNATURE_CHECK
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)
1502#if OWL_EV_SIGNATURE_CHECK
1508 template <
class T,
void (T::*M)(
int idHotKey)>
1528#if OWL_EV_SIGNATURE_CHECK
1534 template <
class T,
void (T::*M)(
int idHotKey, u
int modifiers, u
int vk)>
1554#if OWL_EV_SIGNATURE_CHECK
1560 template <
class T,
void (T::*M)(u
int scrollCode, u
int pos, HWND hCtl)>
1578#if OWL_EV_SIGNATURE_CHECK
1584 template <
class T,
void (T::*M)(HWND cliboardViewer, u
int scrollCode, u
int pos)>
1602#if OWL_EV_SIGNATURE_CHECK
1608 template <
class T,
void (T::*M)(HMENU)>
1626#if OWL_EV_SIGNATURE_CHECK
1632 template <
class T,
void (T::*M)(HMENU, u
int index,
bool isSysMenu)>
1653#if OWL_EV_SIGNATURE_CHECK
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
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
1690 template <
class T,
void (T::*M)(u
int key, u
int repeatCount, u
int flags)>
1708#if OWL_EV_SIGNATURE_CHECK
1714 template <
class T,
void (T::*M)(u
int key, u
int repeatCount, u
int flags)>
1732#if OWL_EV_SIGNATURE_CHECK
1738 template <
class T,
void (T::*M)(HWND)>
1756#if OWL_EV_SIGNATURE_CHECK
1762 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
1780#if OWL_EV_SIGNATURE_CHECK
1786 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
1804#if OWL_EV_SIGNATURE_CHECK
1810 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
1828#if OWL_EV_SIGNATURE_CHECK
1834 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
1852#if OWL_EV_SIGNATURE_CHECK
1858 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
1876#if OWL_EV_SIGNATURE_CHECK
1882 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
1900#if OWL_EV_SIGNATURE_CHECK
1906 template <
class T,
void (T::*M)(HWND activated, HWND deactivated)>
1924#if OWL_EV_SIGNATURE_CHECK
1930 template <
class T,
bool (T::*M)(u
int cmd)>
1951#if OWL_EV_SIGNATURE_CHECK
1957 template <
class T, HWND (T::*M)(MDICREATESTRUCT&)>
1968#if OWL_EV_SIGNATURE_CHECK
1974 template <
class T,
void (T::*M)(HWND)>
1992#if OWL_EV_SIGNATURE_CHECK
1998 template <
class T,
void (T::*M)(u
int, MEASUREITEMSTRUCT&)>
2007 if (
m) (
i_->*
M)(
m->CtlID, *
m);
2019#if OWL_EV_SIGNATURE_CHECK
2025 template <
class T,
int32 (T::*M)(u
int, u
int, HMENU)>
2057#if OWL_EV_SIGNATURE_CHECK
2063 template <
class T,
void (T::*M)(u
int item, u
int flags, HMENU)>
2071#if OWL_EV_SIGNATURE_CHECK
2077 template <
class T, u
int (T::*M)(HWND topLevel, u
int codeHitTest, TMsgId)>
2095#if OWL_EV_SIGNATURE_CHECK
2101 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
2105 return (
static_cast<T*
>(
i)->*
M)(
static_cast<uint>(
p1), p), 0;
2112#if OWL_EV_SIGNATURE_CHECK
2118 template <
class T,
void (T::*M)(u
int modKeys,
int zDelta, const TPo
int&)>
2137#if OWL_EV_SIGNATURE_CHECK
2143 template <
class T,
void (T::*M)()>
2145 {
return (
static_cast<T*
>(
i)->*
M)(), 0;}
2151#if OWL_EV_SIGNATURE_CHECK
2157 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
2175#if OWL_EV_SIGNATURE_CHECK
2181 template <
class T,
void (T::*M)(u
int modKeys,
int zDelta, const TPo
int&)>
2199#if OWL_EV_SIGNATURE_CHECK
2205 template <
class T,
void (T::*M)(const TPo
int&)>
2226#if OWL_EV_SIGNATURE_CHECK
2232 template <
class T,
void (T::*M)(TRect&)>
2239 (
static_cast<T*
>(
i)->*
M)(
clone);
2248#if OWL_EV_SIGNATURE_CHECK
2254 template <
class T,
bool (T::*M)(
bool)>
2272#if OWL_EV_SIGNATURE_CHECK
2278 template <
class T, u
int (T::*M)(
bool calcVal
idRects, NCCALCSIZE_PARAMS&)>
2299#if OWL_EV_SIGNATURE_CHECK
2305 template <
class T,
bool (T::*M)(CREATESTRUCT&)>
2326#if OWL_EV_SIGNATURE_CHECK
2332 template <
class T,
void (T::*M)()>
2350#if OWL_EV_SIGNATURE_CHECK
2356 template <
class T, u
int (T::*M)(const TPo
int&)>
2374#if OWL_EV_SIGNATURE_CHECK
2380 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2398#if OWL_EV_SIGNATURE_CHECK
2404 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2422#if OWL_EV_SIGNATURE_CHECK
2428 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2446#if OWL_EV_SIGNATURE_CHECK
2452 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2470#if OWL_EV_SIGNATURE_CHECK
2476 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2494#if OWL_EV_SIGNATURE_CHECK
2500 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2521#if OWL_EV_SIGNATURE_CHECK
2527 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2531 return (
static_cast<T*
>(
i)->*
M)(
static_cast<uint>(
p1), p), 0;
2541#if OWL_EV_SIGNATURE_CHECK
2547 template <
class T,
void (T::*M)()>
2549 {
return (
static_cast<T*
>(
i)->*
M)(), 0;}
2555#if OWL_EV_SIGNATURE_CHECK
2561 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2579#if OWL_EV_SIGNATURE_CHECK
2585 template <
class T,
void (T::*M)(HRGN)>
2603#if OWL_EV_SIGNATURE_CHECK
2609 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2627#if OWL_EV_SIGNATURE_CHECK
2633 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2651#if OWL_EV_SIGNATURE_CHECK
2657 template <
class T,
void (T::*M)(u
int codeHitTest, const TPo
int&)>
2682#if OWL_EV_SIGNATURE_CHECK
2688 template <
class T,
void (T::*M)(TParam1 handleOrDirectionFlag,
bool isHandle)>
2712#if OWL_EV_SIGNATURE_CHECK
2718 template <
class T,
void (T::*M)(u
int key, MDINEXTMENU&)>
2731#if OWL_EV_SIGNATURE_CHECK
2737 template <
class T,
void (T::*M)()>
2760#if OWL_EV_SIGNATURE_CHECK
2766 template <
class T,
void (T::*M)(HWND clipboardViewer, const PAINTSTRUCT&)>
2787#if OWL_EV_SIGNATURE_CHECK
2793 template <
class T,
void (T::*M)(HWND paletteChange)>
2811#if OWL_EV_SIGNATURE_CHECK
2817 template <
class T,
void (T::*M)(HWND paletteChange)>
2848 struct TChildInfoArgs : TArgs
2860 struct TMouseInfoArgs : TArgs
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&)>
2901#if OWL_EV_SIGNATURE_CHECK
2907 template <
class T,
void (T::*M)()>
2922#if defined(OWL5_COMPAT)
2930template <>
struct TDispatch<
WM_POWER>
2933#if OWL_EV_SIGNATURE_CHECK
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)
2958#if OWL_EV_SIGNATURE_CHECK
2964 template <
class T,
bool (T::*M)(u
int event, TParam2)>
2980#if OWL_EV_SIGNATURE_CHECK
2986 template <
class T, TResult (T::*M)(u
int event, TParam2)>
2990 return (
static_cast<T*
>(
i)->*
M)(
event,
p2);
3002#if OWL_EV_SIGNATURE_CHECK
3008 template <
class T,
void (T::*M)(HDC dc, u
int options)>
3011 HDC dc =
reinterpret_cast<HDC>(
p1);
3013 return (
static_cast<T*
>(
i)->*
M)(dc,
options), 0;
3023#if OWL_EV_SIGNATURE_CHECK
3029 template <
class T,
void (T::*M)(HDC dc, u
int options)>
3032 HDC dc =
reinterpret_cast<HDC>(
p1);
3034 return (
static_cast<T*
>(
i)->*
M)(dc,
options), 0;
3048#if OWL_EV_SIGNATURE_CHECK
3054 template <
class T, HICON (T::*M)()>
3056 {
return reinterpret_cast<TResult>((
static_cast<T*
>(
i)->*
M)());}
3069#if OWL_EV_SIGNATURE_CHECK
3075 template <
class T,
bool (T::*M)(u
int flags)>
3083#if OWL_EV_SIGNATURE_CHECK
3089 template <
class T,
bool (T::*M)()>
3107#if OWL_EV_SIGNATURE_CHECK
3113 template <
class T,
bool (T::*M)()>
3131#if OWL_EV_SIGNATURE_CHECK
3137 template <
class T,
void (T::*M)()>
3155#if OWL_EV_SIGNATURE_CHECK
3161 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
3179#if OWL_EV_SIGNATURE_CHECK
3185 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
3203#if OWL_EV_SIGNATURE_CHECK
3209 template <
class T,
void (T::*M)(u
int modKeys, const TPo
int&)>
3227#if OWL_EV_SIGNATURE_CHECK
3233 template <
class T,
void (T::*M)()>
3256#if OWL_EV_SIGNATURE_CHECK
3262 template <
class T,
void (T::*M)(u
int format)>
3266 return (
static_cast<T*
>(
i)->*
M)(
format), 0;
3273#if OWL_EV_SIGNATURE_CHECK
3279 template <
class T,
bool (T::*M)(HWND hWndCursor, u
int codeHitTest, TMsgId mouseMsg)>
3300#if OWL_EV_SIGNATURE_CHECK
3306 template <
class T, HICON (T::*M)(
bool isBigIcon, HICON)>
3310 return reinterpret_cast<TResult>(
r);
3317#if OWL_EV_SIGNATURE_CHECK
3323 template <
class T,
void (T::*M)(HWND hwndLostFocus)>
3341#if OWL_EV_SIGNATURE_CHECK
3347 template <
class T,
void (T::*M)(HFONT,
bool redraw)>
3365#if OWL_EV_SIGNATURE_CHECK
3371 template <
class T,
void (T::*M)(
bool redraw)>
3389#if OWL_EV_SIGNATURE_CHECK
3395 template <
class T,
void (T::*M)(LPCTSTR)>
3416#if OWL_EV_SIGNATURE_CHECK
3422 template <
class T,
void (T::*M)(u
int flags, LPCTSTR section)>
3433#if OWL_EV_SIGNATURE_CHECK
3439 template <
class T,
void (T::*M)(
bool, u
int status)>
3457#if OWL_EV_SIGNATURE_CHECK
3463 template <
class T,
void (T::*M)(u
int, const TSize&)>
3486#if OWL_EV_SIGNATURE_CHECK
3492 template <
class T,
void (T::*M)(HWND clipboardViewer, const TRect& client)>
3520#if OWL_EV_SIGNATURE_CHECK
3526 template <
class T,
bool (T::*M)(u
int s
ide, TRect&)>
3533 bool result = (
static_cast<T*
>(
i)->*
M)(
static_cast<uint>(
p1),
clone);
3542#if OWL_EV_SIGNATURE_CHECK
3548 template <
class T,
void (T::*M)(u
int status,
int jobsLeft)>
3569#if OWL_EV_SIGNATURE_CHECK
3575 template <
class T,
void (T::*M)(
int styleType, const STYLESTRUCT& style)>
3592#if OWL_EV_SIGNATURE_CHECK
3598 template <
class T,
void (T::*M)(
int styleType, STYLESTRUCT& style)>
3615#if OWL_EV_SIGNATURE_CHECK
3621 template <
class T,
void (T::*M)(u
int key, u
int repeatCount, u
int flags)>
3639#if OWL_EV_SIGNATURE_CHECK
3645 template <
class T,
void (T::*M)()>
3663#if OWL_EV_SIGNATURE_CHECK
3669 template <
class T,
void (T::*M)(u
int cmd, const TPo
int&)>
3690#if OWL_EV_SIGNATURE_CHECK
3696 template <
class T,
void (T::*M)(u
int ch, u
int repeatCount, u
int flags)>
3714#if OWL_EV_SIGNATURE_CHECK
3720 template <
class T,
void (T::*M)(u
int key, u
int repeatCount, u
int flags)>
3738#if OWL_EV_SIGNATURE_CHECK
3744 template <
class T,
void (T::*M)(u
int key, u
int repeatCount, u
int flags)>
3768#if OWL_EV_SIGNATURE_CHECK
3774 template <
class T,
void (T::*M)(u
int idAction, ULONG_PTR data)>
3789#if OWL_EV_SIGNATURE_CHECK
3795 template <
class T,
void (T::*M)()>
3797 {
return (
static_cast<T*
>(
i)->*
M)(), 0;}
3803#if OWL_EV_SIGNATURE_CHECK
3809 template <
class T,
void (T::*M)()>
3827#if OWL_EV_SIGNATURE_CHECK
3833 template <
class T,
void (T::*M)(u
int)>
3851#if OWL_EV_SIGNATURE_CHECK
3857 template <
class T,
bool (T::*M)()>
3875#if OWL_EV_SIGNATURE_CHECK
3881 template <
class T,
void (T::*M)()>
3899#if OWL_EV_SIGNATURE_CHECK
3905 template <
class T,
int (T::*M)(u
int vk, HWND listBox,
int caretIndex)>
3923#if OWL_EV_SIGNATURE_CHECK
3929 template <
class T,
void (T::*M)(u
int scrollCode, u
int pos, HWND)>
3947#if OWL_EV_SIGNATURE_CHECK
3953 template <
class T,
void (T::*M)(HWND cliboardViewer, u
int scrollCode, u
int pos)>
3971#if OWL_EV_SIGNATURE_CHECK
3977 template <
class T,
void (T::*M)(const WINDOWPOS&)>
3998#if OWL_EV_SIGNATURE_CHECK
4004 template <
class T,
bool (T::*M)(WINDOWPOS&)>
4022#if defined(OWL5_COMPAT)
4030template <
class T,
void (T::*M)(LPCTSTR section)>
4052#if OWL_EV_SIGNATURE_CHECK
4058 template <
class T, u
int (T::*M)()>
4061 uint r = (
static_cast<T*
>(
i)->*
M)();
4069#if OWL_EV_SIGNATURE_CHECK
4075 template <
class T,
void (T::*M)()>
4077 {
return (
static_cast<T*
>(
i)->*
M)(), 0;}
4083#if OWL_EV_SIGNATURE_CHECK
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)
4127#if OWL_EV_SIGNATURE_CHECK
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
4151 template <
class T,
void (T::*M)(TCommandEnabler&)>
4166#if OWL_EV_SIGNATURE_CHECK
4172 template <
class T,
bool (T::*M)()>
4174 {
return (
static_cast<T*
>(
i)->*
M)() ?
TRUE :
FALSE;}
4184#if OWL_EV_SIGNATURE_CHECK
4190 template <
class T,
void (T::*M)()>
4192 {
return (
static_cast<T*
>(
i)->*
M)(), 0;}
4202#if OWL_EV_SIGNATURE_CHECK
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
4229 template <
class T,
void (T::*M)(const THelpHitInfo&)>
4244#if OWL_EV_SIGNATURE_CHECK
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
4268 template <
class T,
void (T::*M)()>
4270 {
return (
static_cast<T*
>(
i)->*
M)(), 0;}
4280#if OWL_EV_SIGNATURE_CHECK
4286 template <
class T,
void (T::*M)(u
int pos, const TDockingSlip&)>
#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.
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.
TRect is a mathematical class derived from tagRect.
The tagSIZE struct is defined as.
#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)
void(TGeneric::* TAnyPMF)()
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)
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)
TChildInfoArgs(UINT e, HWND c, UINT i)
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.