}
};
+#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