|
@@ -26,6 +26,9 @@ void CMainWnd::Init()
|
|
|
//启动消息推送
|
|
//启动消息推送
|
|
|
CMessagePushWorker::GetInstance()->Start();
|
|
CMessagePushWorker::GetInstance()->Start();
|
|
|
|
|
|
|
|
|
|
+ //初始化所有页面,先创建页面对象,避免切换页面的时候被释放了
|
|
|
|
|
+ CreatePages();
|
|
|
|
|
+
|
|
|
//默认选择点单页面
|
|
//默认选择点单页面
|
|
|
m_curOptionName = L"main_diandan";
|
|
m_curOptionName = L"main_diandan";
|
|
|
m_curOption = static_cast<CControlUI*>(m_pm.FindControl(_T("main_diandan")));
|
|
m_curOption = static_cast<CControlUI*>(m_pm.FindControl(_T("main_diandan")));
|
|
@@ -44,6 +47,12 @@ void CMainWnd::Init()
|
|
|
std::thread(&CMainWnd::UpdateFoodImage, this).detach();
|
|
std::thread(&CMainWnd::UpdateFoodImage, this).detach();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+void CMainWnd::End()
|
|
|
|
|
+{
|
|
|
|
|
+ //停止消息推送
|
|
|
|
|
+ CMessagePushWorker::GetInstance()->Stop();
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
void CMainWnd::UpdateFoodImage()
|
|
void CMainWnd::UpdateFoodImage()
|
|
|
{
|
|
{
|
|
|
//先判断并创建临时目录
|
|
//先判断并创建临时目录
|
|
@@ -129,66 +138,33 @@ void CMainWnd::SwitchPage(MainPageName name)
|
|
|
|
|
|
|
|
//先删除现在的子对象
|
|
//先删除现在的子对象
|
|
|
CContainerUI* pMainContentLayout = static_cast<CContainerUI*>(m_pm.FindControl(_T("main_content_layout")));
|
|
CContainerUI* pMainContentLayout = static_cast<CContainerUI*>(m_pm.FindControl(_T("main_content_layout")));
|
|
|
- pMainContentLayout->RemoveAll();
|
|
|
|
|
|
|
+ if (m_curPageName != NOPAGE)
|
|
|
|
|
+ {
|
|
|
|
|
+ //这个是之前已经有一个页面了,切换页面,不能销毁之前的页面,否则容易崩溃
|
|
|
|
|
+ pMainContentLayout->Remove(m_curPageUI, true);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- //再创建一个对象
|
|
|
|
|
- CDialogBuilder builder;
|
|
|
|
|
- CDialogBuilderCallbackEx cb;
|
|
|
|
|
|
|
+ CBasePageUI* pChildContainer = m_pages[name];
|
|
|
|
|
|
|
|
- CBasePageUI* pChildContainer = NULL;
|
|
|
|
|
|
|
+ pChildContainer->SetMainWnd(this);
|
|
|
|
|
+ pMainContentLayout->Add(pChildContainer);
|
|
|
|
|
|
|
|
- //注意事项:所有的子页面中的option不能带有selected="true"属性,如果带有这个属性,在下面的Create调用的时候就直接会生成一个selectchanged事件,但是这个时候
|
|
|
|
|
- //页面才刚刚Create,还没加入到窗口中,相关的变量对应关系也还没设置成功,会导致事件处理对象出现问题
|
|
|
|
|
- if (name == DIANDAN)
|
|
|
|
|
- {
|
|
|
|
|
- pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("diandan_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
- }
|
|
|
|
|
- else if (name == DINGDAN)
|
|
|
|
|
- {
|
|
|
|
|
- pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("waimaiorder_list_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
- }
|
|
|
|
|
- else if (name == SHEZHI)
|
|
|
|
|
- {
|
|
|
|
|
- pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("setting_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
- }
|
|
|
|
|
- else if (name == HUIYUAN)
|
|
|
|
|
- {
|
|
|
|
|
- pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("huiyuan_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
- }
|
|
|
|
|
- else if (name == WAIMAIINFO)
|
|
|
|
|
- {
|
|
|
|
|
- pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("waimaiorder_info_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
|
|
+ m_curPageName = name;
|
|
|
|
|
+ m_curPageUI = pChildContainer;
|
|
|
|
|
|
|
|
|
|
+ //对一些参数进行初始化
|
|
|
|
|
+ if (name == WAIMAIINFO)
|
|
|
|
|
+ {
|
|
|
CWaimaiOrderInfoPageUI* pInfoPage = static_cast<CWaimaiOrderInfoPageUI*>(pChildContainer);
|
|
CWaimaiOrderInfoPageUI* pInfoPage = static_cast<CWaimaiOrderInfoPageUI*>(pChildContainer);
|
|
|
pInfoPage->m_order_id = m_infopage_waimaiorder_id;
|
|
pInfoPage->m_order_id = m_infopage_waimaiorder_id;
|
|
|
pInfoPage->m_order_no = m_infopage_waimaiorder_no;
|
|
pInfoPage->m_order_no = m_infopage_waimaiorder_no;
|
|
|
}
|
|
}
|
|
|
- else if (name == DIANNEIDINGDAN)
|
|
|
|
|
- {
|
|
|
|
|
- pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("dianneiorder_list_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
- }
|
|
|
|
|
else if (name == DIANNEIINFO)
|
|
else if (name == DIANNEIINFO)
|
|
|
{
|
|
{
|
|
|
- pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("dianneiorder_info_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
-
|
|
|
|
|
CDianneiOrderInfoPageUI* pInfoPage = static_cast<CDianneiOrderInfoPageUI*>(pChildContainer);
|
|
CDianneiOrderInfoPageUI* pInfoPage = static_cast<CDianneiOrderInfoPageUI*>(pChildContainer);
|
|
|
pInfoPage->m_order_id = m_infopage_dianneiorder_id;
|
|
pInfoPage->m_order_id = m_infopage_dianneiorder_id;
|
|
|
}
|
|
}
|
|
|
- else if (name == BAOBIAO)
|
|
|
|
|
- {
|
|
|
|
|
- pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("baobiao_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
- }
|
|
|
|
|
- else if (name == JIAOBAN)
|
|
|
|
|
- {
|
|
|
|
|
- pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("jiaoban_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
- pChildContainer->SetMainWnd(this);
|
|
|
|
|
- pMainContentLayout->Add(pChildContainer);
|
|
|
|
|
-
|
|
|
|
|
- m_curPageName = name;
|
|
|
|
|
- m_curPageUI = pChildContainer;
|
|
|
|
|
-
|
|
|
|
|
pChildContainer->InitShow();
|
|
pChildContainer->InitShow();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -340,8 +316,11 @@ void CMainWnd::HandleSelectChangeMsg(TNotifyUI& msg)
|
|
|
}
|
|
}
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
- //除了主界面固定区域的事件,其他的事件全部分发给子页面
|
|
|
|
|
- this->m_curPageUI->HandleSelectChangeMsg(msg);
|
|
|
|
|
|
|
+ if (this->m_curPageUI != NULL)
|
|
|
|
|
+ {
|
|
|
|
|
+ //除了主界面固定区域的事件,其他的事件全部分发给子页面
|
|
|
|
|
+ this->m_curPageUI->HandleSelectChangeMsg(msg);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -575,14 +554,21 @@ LRESULT CMainWnd::OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandle
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+void CMainWnd::OnFinalMessage(HWND /*hWnd*/)
|
|
|
|
|
+{
|
|
|
|
|
+ //执行一些销毁操作
|
|
|
|
|
+ this->End();
|
|
|
|
|
+
|
|
|
|
|
+ m_pm.RemovePreMessageFilter(this);
|
|
|
|
|
+
|
|
|
|
|
+ delete this;
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
/*
|
|
/*
|
|
|
*这个是窗口被销毁的时候调用的
|
|
*这个是窗口被销毁的时候调用的
|
|
|
**/
|
|
**/
|
|
|
LRESULT CMainWnd::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
LRESULT CMainWnd::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
|
|
{
|
|
{
|
|
|
- //停止消息推送
|
|
|
|
|
- CMessagePushWorker::GetInstance()->Stop();
|
|
|
|
|
-
|
|
|
|
|
bHandled = FALSE;
|
|
bHandled = FALSE;
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|
|
@@ -1008,3 +994,91 @@ void CMainWnd::RegKeyboardRawInput()
|
|
|
printf("RegisterRawInputDevices failed");
|
|
printf("RegisterRawInputDevices failed");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+void CMainWnd::CreatePages()
|
|
|
|
|
+{
|
|
|
|
|
+ m_pages.clear();
|
|
|
|
|
+
|
|
|
|
|
+ CBasePageUI* pChildContainer = NULL;
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ CDialogBuilder builder;
|
|
|
|
|
+ CDialogBuilderCallbackEx cb;
|
|
|
|
|
+ pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("diandan_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
+ m_pages[DIANDAN] = pChildContainer;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ CDialogBuilder builder;
|
|
|
|
|
+ CDialogBuilderCallbackEx cb;
|
|
|
|
|
+ pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("waimaiorder_list_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
+ m_pages[DINGDAN] = pChildContainer;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ CDialogBuilder builder;
|
|
|
|
|
+ CDialogBuilderCallbackEx cb;
|
|
|
|
|
+ pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("setting_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
+ m_pages[SHEZHI] = pChildContainer;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ CDialogBuilder builder;
|
|
|
|
|
+ CDialogBuilderCallbackEx cb;
|
|
|
|
|
+ pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("huiyuan_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
+ m_pages[HUIYUAN] = pChildContainer;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ CDialogBuilder builder;
|
|
|
|
|
+ CDialogBuilderCallbackEx cb;
|
|
|
|
|
+ pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("waimaiorder_info_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
+ m_pages[WAIMAIINFO] = pChildContainer;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ CDialogBuilder builder;
|
|
|
|
|
+ CDialogBuilderCallbackEx cb;
|
|
|
|
|
+ pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("dianneiorder_list_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
+ m_pages[DIANNEIDINGDAN] = pChildContainer;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ CDialogBuilder builder;
|
|
|
|
|
+ CDialogBuilderCallbackEx cb;
|
|
|
|
|
+ pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("dianneiorder_info_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
+ m_pages[DIANNEIINFO] = pChildContainer;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ CDialogBuilder builder;
|
|
|
|
|
+ CDialogBuilderCallbackEx cb;
|
|
|
|
|
+ pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("baobiao_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
+ m_pages[BAOBIAO] = pChildContainer;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ {
|
|
|
|
|
+ CDialogBuilder builder;
|
|
|
|
|
+ CDialogBuilderCallbackEx cb;
|
|
|
|
|
+ pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("jiaoban_page.xml"), (UINT)0, &cb, &m_pm));
|
|
|
|
|
+ m_pages[JIAOBAN] = pChildContainer;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //这里纯粹只是创建对象,不做任何初始化等处理
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void CMainWnd::DestoryPages()
|
|
|
|
|
+{
|
|
|
|
|
+ //先把当前页面对象移出来,不销毁
|
|
|
|
|
+ CContainerUI* pMainContentLayout = static_cast<CContainerUI*>(m_pm.FindControl(_T("main_content_layout")));
|
|
|
|
|
+ if (m_curPageName != NOPAGE)
|
|
|
|
|
+ {
|
|
|
|
|
+ pMainContentLayout->Remove(m_curPageUI, true);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //销毁所有页面对象
|
|
|
|
|
+ for (std::map<int, CBasePageUI*>::iterator it = m_pages.begin(); it != m_pages.end(); it++)
|
|
|
|
|
+ {
|
|
|
|
|
+ delete it->second;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|