由CWND派生的子类,如何就不能够是模态的?(可能小弟我提问的方式不如何正确,但基本就是这样的)

由CWND派生的子类,怎么就不能够是模态的?(可能我提问的方式不怎么正确,但基本就是这样的)
各位高手:
  我最近在网上搜到一个跳棋的程序,我想在自己的对话框中,暂时命名为Dialog1设置一个按钮,然后再调用这个程序,可是出现了一点小问题...
  在按钮的响应函数中,我是这样定义的:
  void   COkDlg::OnBnEnter()  
{
//   TODO:   Add   your   control   notification   handler   code   here
CTtqDlg   dlg;
MSG   msg;
CWnd*   m_pMainWnd;
m_pMainWnd   =   &dlg;
int   nResponse   =   dlg.CreateEx(0,
AfxRegisterWndClass(0), "跳子棋 ",
WS_POPUP|WS_SYSMENU,
CRect(0,0,453,504),NULL,NULL,NULL);
hBmp   =   (HBITMAP)LoadImage(AfxGetInstanceHandle(),   MAKEINTRESOURCE(IDB_BITMBK),   IMAGE_BITMAP,   0,   0,   LR_CREATEDIBSECTION);
hbmmp   =   (HBITMAP)LoadImage(AfxGetInstanceHandle(),   MAKEINTRESOURCE(IDB_BITMBK1),   IMAGE_BITMAP,   0,   0,   LR_CREATEDIBSECTION);

BITMAP   bm;
::GetObject(hBmp,   sizeof(bm),   &bm);
HRGN   h   =   BitmapToRegion(hBmp);
if   (h)
::SetWindowRgn(m_pMainWnd-> m_hWnd,   h,   TRUE);
dlg.ShowWindow(SW_SHOW);
dlg.UpdateWindow();
while(GetMessage(&msg,(HWND)NULL,0,0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}

}
其中CTtqDlg是由cwnd派生的.
  在CTtqDlg中有一个newgame()函数,用来显示一个模态的对话框,暂时取名为Dialog2.
  运行的时候,当我显示Dialog2的时候发现:Dialog2可以跟CTtqDlg的对象进行切换,对Dialog1不能够切换.而在这个游戏的源程序中,Dialog2对CTtqDlg的对象是不可以切换的.
  我要实现的是,Dialog2对以上这两个对象都不能够切换,该怎样实现的啊.如果需要的话,我可以把整个代码发给你帮我分析.拜托各位了!

------解决方案--------------------
应该用UI线程
------解决方案--------------------
创建模态对话框的话,至少应该是用DoModal(),而不是Create.这是一个很明显的问题.
------解决方案--------------------
RunModalLoop
不过怎么不用CDialog
------解决方案--------------------
解决了就值得恭喜下呢。