Sync to trunk (r44371)
[reactos.git] / reactos / lib / atl / atlwin.h
index 08bdbdd..c1a212b 100644 (file)
@@ -172,8 +172,39 @@ public:
        }
 };
 
+#elif _AMD64_ //WARNING: NOT VERIFIED
+#pragma pack(push,1)
+struct thunkCode
+{
+       DWORD_PTR                                                               m_mov;
+       DWORD_PTR                                                               m_this;
+       BYTE                                                                    m_jmp;
+       DWORD_PTR                                                               m_relproc;
+};
+#pragma pack(pop)
+
+class CWndProcThunk
+{
+public:
+       thunkCode                                                               m_thunk;
+       _AtlCreateWndData                                               cd;
+public:
+       BOOL Init(WNDPROC proc, void *pThis)
+       {
+               m_thunk.m_mov = 0xffff8000042444C7LL;
+               m_thunk.m_this = (DWORD_PTR)pThis;
+               m_thunk.m_jmp = 0xe9;
+               m_thunk.m_relproc = DWORD_PTR(reinterpret_cast<char *>(proc) - (reinterpret_cast<char *>(this) + sizeof(thunkCode)));
+               return TRUE;
+       }
+
+       WNDPROC GetWNDPROC()
+       {
+               return reinterpret_cast<WNDPROC>(&m_thunk);
+       }
+};
 #else
-#error Only X86 supported
+#error ARCH not supported
 #endif
 
 class CMessageMap