[SDK:ATL] Fix the size of the ATL_WNDCLASSINFOW::m_szAutoName member according to...
[reactos.git] / sdk / lib / atl / atlwin.h
index 76b1073..c35c936 100644 (file)
@@ -28,6 +28,7 @@
 #define Unused(x)    (x);
 #endif // __GNUC__
 
+#if !defined(_WIN64)
 #ifdef SetWindowLongPtr
 #undef SetWindowLongPtr
 inline LONG_PTR SetWindowLongPtr(HWND hWnd, int nIndex, LONG_PTR dwNewLong)
@@ -43,6 +44,7 @@ inline LONG_PTR GetWindowLongPtr(HWND hWnd, int nIndex)
     return (LONG_PTR)GetWindowLong(hWnd, nIndex);
 }
 #endif
+#endif // !_WIN64
 
 #pragma push_macro("SubclassWindow")
 #undef SubclassWindow
@@ -50,6 +52,15 @@ inline LONG_PTR GetWindowLongPtr(HWND hWnd, int nIndex)
 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;
 
@@ -575,6 +586,17 @@ public:
         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));
@@ -1791,6 +1813,15 @@ public:
             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))                                                \
     {                                                                                            \
@@ -1800,6 +1831,15 @@ public:
             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)            \
     {                                                                                            \
@@ -1853,7 +1893,7 @@ struct _ATL_WNDCLASSINFOW
     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)
     {