回调函数调用非静态成员函数有关问题,请教怎么强制转化指针的类型

回调函数调用非静态成员函数问题,请问如何强制转化指针的类型?
本人菜鸟,近来在编程,出现一些小问题,烦请各位大牛能帮我看看有什么问题,不甚感激!

    对话框函数Func1中使用多媒体定时器timeSetEvent(),定时器的回调函数为TimeProc,回调函数调用对话框的另外一个非静态函数Func2,代码如下:
CMyDlg::myFunc1() 
{ ....
  DWORD_PTR  dwUser = this;  // 把CMyDlg的指针用dwUser传过去
  setTimeEvent ( uDelay, uResolution, CMyDlg::TimeProc,dwUser, fuEvent); 
  


在回调函数中:
void CALLBACK CMyDlg::TimeProc(UINT uID,UINT uMsg, DWORD dwUser,DWORD dw1,DWORD dw2)
{
CMyDlg * pDlg=(CACR9000Dlg *)(dwUser);   // 把dwUser再转为MyDlg
pDlg->func2();
}

编译时在此处
DWORD_PTR dwUser = this;  // 把myApp的指针用dwUser传过去 
出现编译错误rror C2440: 'initializing' : cannot convert from 'class CMyDlg *const ' to 'unsigned long'

请问应该如何强制类型转换呢。。。 

MFC 多媒体定时器 非静态函数

------解决方案--------------------
API的回调函数不能使用非静态的成员函数
------解决方案--------------------
CWnd不是线程安全的,可以传窗口句柄然后发消息来进行线程之间的同步
------解决方案--------------------
DWORD_PTR dwUser = (DWORD_PTR)(DWORD)this
------解决方案--------------------
如果传递给C的API,那应该是很难处理的。