#define Unused(x) (x);
#endif // __GNUC__
+#if !defined(_WIN64)
#ifdef SetWindowLongPtr
#undef SetWindowLongPtr
inline LONG_PTR SetWindowLongPtr(HWND hWnd, int nIndex, LONG_PTR dwNewLong)
return (LONG_PTR)GetWindowLong(hWnd, nIndex);
}
#endif
+#endif // !_WIN64
#pragma push_macro("SubclassWindow")
#undef SubclassWindow
namespace ATL
{
+#ifndef GET_X_LPARAM
+#define GET_X_LPARAM(lp) ((int)(short)LOWORD(lp))
+#endif
+#ifndef GET_Y_LPARAM
+#define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp))
+#endif
+
+
+
struct _ATL_WNDCLASSINFOW;
typedef _ATL_WNDCLASSINFOW CWndClassInfo;
return ::GetDlgItemText(m_hWnd, nID, lpStr, nMaxCount);
}
+#ifdef __ATLSTR_H__
+ UINT GetDlgItemText(int nID, CSimpleString& string)
+ {
+ HWND item = GetDlgItem(nID);
+ int len = ::GetWindowTextLength(item);
+ len = GetDlgItemText(nID, string.GetBuffer(len+1), len+1);
+ string.ReleaseBuffer(len);
+ return len;
+ }
+#endif
+
BOOL GetDlgItemText(int nID, BSTR& bstrText) const
{
ATLASSERT(::IsWindow(m_hWnd));
return TRUE; \
}
+#define COMMAND_HANDLER(id, code, func) \
+ if (uMsg == WM_COMMAND && id == LOWORD(wParam) && code == HIWORD(wParam)) \
+ { \
+ bHandled = TRUE; \
+ lResult = func(HIWORD(wParam), LOWORD(wParam), (HWND)lParam, bHandled); \
+ if (bHandled) \
+ return TRUE; \
+ }
+
#define COMMAND_ID_HANDLER(id, func) \
if (uMsg == WM_COMMAND && id == LOWORD(wParam)) \
{ \
return TRUE; \
}
+#define COMMAND_CODE_HANDLER(code, func) \
+ if (uMsg == WM_COMMAND && code == HIWORD(wParam)) \
+ { \
+ bHandled = TRUE; \
+ lResult = func(HIWORD(wParam), LOWORD(wParam), (HWND)lParam, bHandled); \
+ if (bHandled) \
+ return TRUE; \
+ }
+
#define COMMAND_RANGE_HANDLER(idFirst, idLast, func) \
if (uMsg == WM_COMMAND && LOWORD(wParam) >= idFirst && LOWORD(wParam) <= idLast) \
{ \
LPCWSTR m_lpszCursorID;
BOOL m_bSystemCursor;
ATOM m_atom;
- WCHAR m_szAutoName[5 + sizeof(void *)];
+ WCHAR m_szAutoName[sizeof("ATL:") + sizeof(void *) * 2]; // == 4 characters + NULL + number of hexadecimal digits describing a pointer.
ATOM Register(WNDPROC *p)
{