在线程中获得一个对话框的句柄,再通过发送消息传递给一个主对话框有有关问题,大家帮忙啊

在线程中获得一个对话框的句柄,再通过发送消息传递给一个主对话框有问题,大家帮忙啊!
线程中发送的消息:
CChatDialog*   oldChatDialog   =   (CChatDialog*)lanCommDlg-> FromHandle(pWnd);
::PostMessage(lanCommDlg-> m_hWnd,WM_FRIENDMSG,(WPARAM)oldChatDialog,     (LPARAM)recvBuff);

消息处理函数:(前提,消息路由正确)
void   CLanCommunicationDlg::OnFriendMsg(WPARAM   wParam,LPARAM   lParam)
{
//创建新的聊天对话框
CChatDialog*   chatDialog   =   (CChatDialog*)wParam;
CString   recvData   =   (char*)   lParam;
if   (chatDialog-> m_exist   ==   false)  
{
chatDialog-> Create(IDD_MSG_HANDLE,this);
m_commTree.m_ipAll.Add(chatDialog-> m_chatIP);
m_commTree.m_nameAll.Add(chatDialog-> m_chatName);
CString   windowText   =   "您正在与 ";
windowText   +=   m_commTree.GetItemText(m_commTree.GetSelectedItem());
windowText   +=   "聊天中! ";
chatDialog-> SetWindowText(windowText);
chatDialog-> ShowWindow(SW_SHOW);             //非模态的对话框一定要自己显示
// chatDialog-> SetWindowPos(NULL,0,0,0,0,SWP_SHOWWINDOW);
chatDialog-> m_exist   =   true;
}
CString   editData;
chatDialog-> GetDlgItemText(IDC_RECV_MSG,editData);
editData   =   /*chatDialog-> m_chatIP   + "说 "   +*/     "\r\n "   +   recvData   +   "\r\n ";
chatDialog-> SetDlgItemText(IDC_RECV_MSG,editData);
m_commTree.Expand(m_root,TVE_EXPAND);
}
这样程序运行时就会死,不知道怎么回事!

------解决方案--------------------
CChatDialog* oldChatDialog = (CChatDialog*)lanCommDlg-> FromHandle(pWnd);
::PostMessage(lanCommDlg-> m_hWnd, WM_FRIENDMSG, (WPARAM)oldChatDialog, (LPARAM)recvBuff);

不觉得画蛇添足吗?