mNum!=0 && NULL==pDlg->m_pWnd[m_AimNum-1])) { AfxMessageBox(\消息发送对象错误!\ return;
}
else if(\ { AfxMessageBox(\消息内容不能为空!\ return;
} else {
if(0 == m_AimNum) { m_MsgShowStr += \向主窗口发送消息:\ } else {
m_MsgShowStr += \向窗口\
m_MsgShowStr += m_AimNum+'0';
m_MsgShowStr += \发送消息:\ \ }
// 启动线程
AfxBeginThread((AFX_THREADPROC)SendMsgThreadFunc, NULL);
pDlg->m_MsgFrom = m_Num;
pDlg->m_AimNum = m_AimNum; pDlg->m_ReceiveMsgStr = m_MsgTextStr;
}
UpdateData(false);
}
4. 添加线程处理函数
a.在ChildDialog.h文件中添加线程处理函数声明:
\ 26
DWORD SendMsgThreadFunc(LPVOID pParam); b.在ChildDialog.cpp文件中添加线程处理函数: DWORD SendMsgThreadFunc(LPVOID pParam) { }
CCommunicationDlg *pDlg; //获得主窗口指针
pDlg = (CCommunicationDlg*)AfxGetApp()->m_pMainWnd; //向主窗口发送WM_CHILDDLG_SENDMSG自定义消息 pDlg->PostMessage(WM_CHILDDLG_SENDMSG,0,0); return 0;
3. 4 程序运行结果
程序编译运行后,弹出如图3-10所示的运行主界面。
图3-10 程序主界面
27
3. 4. 1 窗口的创建
a.点击“新建窗口”按钮,弹出如图3-11所示的子对话框窗口。
图3-11 子对话框窗口
b.继续点击“新建窗口”按钮,可继续创建子窗口,最多可创建6个子对话框窗口,如图3-12所示。
28
图3-12
c.此时若继续点击“新建窗口”按钮,则会弹出如图3-13所示的警告对话框。
图3-13
d.关闭子窗口是,在主窗口上显示的当前子窗口数也会随之变化。如图3-14所示。
图3-14
3. 4. 2 窗口的通信
( 1 ) 子窗口与主窗口间的通信
29
相关推荐: