这是主窗口中 根据你的需要 创建对话框代码 相信模态和非模态对话框的区别大家应该知道,这里不做论述
CReturnDialog pReturnDialog ();
pReturnDialog.Create(m_hWnd, _T(""), UI_WNDSTYLE_DIALOG, 0, 0, 0, 0, 0, NULL);
pReturnDialog.CenterWindow();
pReturnDialog.ShowModal(); //模态对话框
这是主窗体 消息接受代码 很简单 接收到对话框传过来的消息 你需要做的操作
LRESULT CMainWindowWnd::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
LRESULT lRes = 0;
BOOL bHandled = TRUE;
switch (uMsg)
{
case WM_CREATE: lRes = OnCreate(uMsg, wParam, lParam, bHandled); break;
case WM_CLOSE: lRes = OnClose(uMsg, wParam, lParam, bHandled); break;
case WM_DESTROY: lRes = OnDestroy(uMsg, wParam, lParam, bHandled); break;
case WM_USER_RETURN_HOME: //由对话框发送来的消息
{
您需要做的操作 建议封装成函数 像上面的OnCreate 一样
}
if (bHandled) return lRes;
if (m_pm.MessageHandler(uMsg, wParam, lParam, lRes)) return lRes;
return CWindowWnd::HandleMessage(uMsg, wParam, lParam);
}
WM_USER_RETURN_HOME 为自定义消息 可以写在一个头文件中 定义如下:
#ifndef MSGDEFINE_H_
#define MSGDEFINE_H_
#define WM_USER_RETURN_HOME WM_USER + 2 //这里定义的自定义窗口类消息
#endif
0 ~ WM_USER – 1 为 系统消息
WM_USER ~ 0x7FFF 为自定义窗口类整数消息
WM_APP ~ 0xBFFF 应用程序自定义消息
0xC000 ~ 0xFFFF 应用程序字符串消息
> 0xFFFF 为以后系统应用保留
对话框向主窗口传递消息
::PostMessage(::GetParent(m_hWnd),WM_USER_RETURN_HOME, NULL, NULL);
或者是 (两个都可以 看自己选择)
::SendMessage(::GetParent(m_hWnd),WM_USER_RETURN_HOME, NULL, NULL);
一定要加 :: 这里注意
Duilib 中的PostMessage 是向自己发送消息