张洋 4 rokov pred
rodič
commit
8aeba28f4d
28 zmenil súbory, kde vykonal 997 pridanie a 27 odobranie
  1. 19 0
      bin/Win32/Debug/zhipuzi_pos_windows/skin/gengduo_item.xml
  2. 29 0
      bin/Win32/Debug/zhipuzi_pos_windows/skin/gengduo_page.xml
  3. 14 11
      bin/Win32/Debug/zhipuzi_pos_windows/skin/main.xml
  4. BIN
      bin/Win32/Debug/zhipuzi_pos_windows/skin/main_caigou.png
  5. BIN
      bin/Win32/Debug/zhipuzi_pos_windows/skin/main_caigou_select.png
  6. BIN
      bin/Win32/Debug/zhipuzi_pos_windows/skin/main_dingdan.png
  7. BIN
      bin/Win32/Debug/zhipuzi_pos_windows/skin/main_dingdan_select.png
  8. BIN
      bin/Win32/Debug/zhipuzi_pos_windows/skin/main_kucun.png
  9. BIN
      bin/Win32/Debug/zhipuzi_pos_windows/skin/main_kucun_select.png
  10. BIN
      bin/Win32/Debug/zhipuzi_pos_windows/skin/main_saomashouyin.png
  11. BIN
      bin/Win32/Debug/zhipuzi_pos_windows/skin/main_saomashouyin_select.png
  12. BIN
      bin/Win32/Debug/zhipuzi_pos_windows/skin/main_shangpin.png
  13. BIN
      bin/Win32/Debug/zhipuzi_pos_windows/skin/main_shangpin_select.png
  14. BIN
      bin/Win32/Debug/zhipuzi_pos_windows/skin/main_zhengcan.png
  15. BIN
      bin/Win32/Debug/zhipuzi_pos_windows/skin/main_zhengcan_select.png
  16. 5 0
      zhipuzi_pos_windows/control/ControlEx.h
  17. 16 0
      zhipuzi_pos_windows/helper/CLewaimaiString.cpp
  18. 3 0
      zhipuzi_pos_windows/helper/CLewaimaiString.h
  19. 786 0
      zhipuzi_pos_windows/page/CGengduoPageUI.cpp
  20. 70 0
      zhipuzi_pos_windows/page/CGengduoPageUI.h
  21. 6 6
      zhipuzi_pos_windows/CAppEnv.cpp
  22. 0 0
      zhipuzi_pos_windows/tool/CAppEnv.h
  23. 13 0
      zhipuzi_pos_windows/tool/CSetting.cpp
  24. 16 1
      zhipuzi_pos_windows/wnd/CMainWnd.cpp
  25. 3 0
      zhipuzi_pos_windows/wnd/CMainWnd.h
  26. 1 1
      zhipuzi_pos_windows/zhipuzi_pos_windows.cpp
  27. 4 2
      zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj
  28. 12 6
      zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj.filters

+ 19 - 0
bin/Win32/Debug/zhipuzi_pos_windows/skin/gengduo_item.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Window>
+	<VerticalLayout width="120" height="120" float="true">
+		<VerticalLayout width="120" height="120" bkcolor="#FFECECEC">
+				<HorizontalLayout height="52" padding="0,19,0,0">
+				<Control></Control>
+				<Control name="image" width="52" height="52"></Control>
+				<Control></Control>
+			</HorizontalLayout>
+			<Label name="title" height="30" align="center"></Label>
+		</VerticalLayout>
+		
+		<HorizontalLayout height="40" padding="0,0,0,0">
+			<Button name="front" text="前移" font="14" heiht="25" width="36" padding="0,15,0,0" normalimage="" hotimage="" pushedimage="" bordersize="1" textcolor="#FF3CB371" bordercolor="#FF3CB371"></Button>
+			<Button name="back" text="后移" font="14" heiht="25" width="36" padding="6,15,6,0" normalimage="" hotimage="" pushedimage="" bordersize="1" textcolor="#FF3CB371" bordercolor="#FF3CB371"></Button>
+			<Button name="exchange" text="下移" font="14" heiht="25" width="36" padding="0,15,0,0" normalimage="" hotimage="" pushedimage="" bordersize="1" textcolor="#FF3CB371" bordercolor="#FF3CB371"></Button>
+		</HorizontalLayout>
+	</VerticalLayout>
+</Window>

+ 29 - 0
bin/Win32/Debug/zhipuzi_pos_windows/skin/gengduo_page.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Window>
+	<Font id="0" name="微软雅黑" size="26" />
+	<Font id="1" name="微软雅黑" size="32" />
+	<Font id="2" name="微软雅黑" size="20" />
+	<Font id="3" name="微软雅黑" size="18" />
+	
+	<GengduoPage>
+		<VerticalLayout>
+			<VerticalLayout>
+				<Label text="常用功能" height="30" font="2" padding="20,20,0,0"></Label>
+				
+				<HorizontalLayout name="gengduo_page_changyong_layout">					
+					
+				</HorizontalLayout>
+			</VerticalLayout>
+			
+			<VerticalLayout>
+				<Label text="更多功能" height="30" font="2" padding="20,20,0,0"></Label>
+				
+				<HorizontalLayout name="gengduo_page_gengduo_layout">					
+					
+				</HorizontalLayout>
+			</VerticalLayout>
+			
+			<Control></Control>
+		</VerticalLayout>
+	</GengduoPage>
+</Window>

+ 14 - 11
bin/Win32/Debug/zhipuzi_pos_windows/skin/main.xml

@@ -30,19 +30,22 @@
 		<HorizontalLayout>
 			<VerticalLayout width="101" bkcolor="#FFEDEDED">
 				<Control height="15"></Control>
-				<Option name="main_diandan" group="main_tab" selected="true" width="101" height="102" text="点单" bkcolor="#FF3CB371" textpadding="0,60,0,0" selectedtextcolor="#FFFFFFFF" normalimage="file='main_diandan.png' source='0,0,50,50' dest='25,13,75,63'" selectedimage="file='main_diandan_select.png' source='0,0,50,50' dest='25,13,75,63'"></Option>
 				
-				<Option name="main_dingdan" group="main_tab" width="101" height="102" text="订单" textpadding="0,60,0,0" selectedtextcolor="#FFFFFFFF" normalimage="file='main_waimai.png' source='0,0,50,50' dest='25,13,75,63'" selectedimage="file='main_waimai_select.png' source='0,0,50,50' dest='25,13,75,63'"></Option>
+				<VerticalLayout height="714">
+					<Option name="main_diandan" group="main_tab" selected="true" width="101" height="102" text="点单" bkcolor="#FF3CB371" textpadding="0,60,0,0" selectedtextcolor="#FFFFFFFF" normalimage="file='main_diandan.png' source='0,0,50,50' dest='25,13,75,63'" selectedimage="file='main_diandan_select.png' source='0,0,50,50' dest='25,13,75,63'"></Option>
 				
-				<Option name="main_huiyuan" group="main_tab" width="101" height="102" text="会员" textpadding="0,60,0,0" selectedtextcolor="#FFFFFFFF" normalimage="file='main_huiyuan.png' source='0,0,50,50' dest='25,13,75,63'" selectedimage="file='main_huiyuan_select.png' source='0,0,50,50' dest='25,13,75,63'"></Option>
-				
-				<Option name="main_baobiao" group="main_tab" width="101" height="102" text="报表" textpadding="0,60,0,0" selectedtextcolor="#FFFFFFFF" normalimage="file='main_baobiao.png' source='0,0,50,50' dest='25,13,75,63'" selectedimage="file='main_baobiao_select.png' source='0,0,50,50' dest='25,13,75,63'"></Option>
-				
-				<Option name="main_jiaoban" group="main_tab" width="101" height="102" text="交班" textpadding="0,60,0,0" selectedtextcolor="#FFFFFFFF" normalimage="file='main_jiaoban.png' source='0,0,50,50' dest='25,13,75,63'" selectedimage="file='main_jiaoban_select.png' source='0,0,50,50' dest='25,13,75,63'"></Option>
-				
-				<Option name="main_setting" group="main_tab" width="101" height="102" text="设置" textpadding="0,60,0,0" selectedtextcolor="#FFFFFFFF" normalimage="file='main_setting.png' source='0,0,50,50' dest='25,13,75,63'" selectedimage="file='main_setting_select.png' source='0,0,50,50' dest='25,13,75,63'"></Option>
-				
-				<Option name="main_gengduo" group="main_tab" width="101" height="102" text="更多" textpadding="0,60,0,0" selectedtextcolor="#FFFFFFFF" normalimage="file='main_gengduo.png' source='0,0,50,50' dest='25,13,75,63'" selectedimage="file='main_gengduo_select.png' source='0,0,50,50' dest='25,13,75,63'"></Option>
+					<Option name="main_dingdan" group="main_tab" width="101" height="102" text="订单" textpadding="0,60,0,0" selectedtextcolor="#FFFFFFFF" normalimage="file='main_waimai.png' source='0,0,50,50' dest='25,13,75,63'" selectedimage="file='main_waimai_select.png' source='0,0,50,50' dest='25,13,75,63'"></Option>
+					
+					<Option name="main_huiyuan" group="main_tab" width="101" height="102" text="会员" textpadding="0,60,0,0" selectedtextcolor="#FFFFFFFF" normalimage="file='main_huiyuan.png' source='0,0,50,50' dest='25,13,75,63'" selectedimage="file='main_huiyuan_select.png' source='0,0,50,50' dest='25,13,75,63'"></Option>
+					
+					<Option name="main_baobiao" group="main_tab" width="101" height="102" text="报表" textpadding="0,60,0,0" selectedtextcolor="#FFFFFFFF" normalimage="file='main_baobiao.png' source='0,0,50,50' dest='25,13,75,63'" selectedimage="file='main_baobiao_select.png' source='0,0,50,50' dest='25,13,75,63'"></Option>
+					
+					<Option name="main_jiaoban" group="main_tab" width="101" height="102" text="交班" textpadding="0,60,0,0" selectedtextcolor="#FFFFFFFF" normalimage="file='main_jiaoban.png' source='0,0,50,50' dest='25,13,75,63'" selectedimage="file='main_jiaoban_select.png' source='0,0,50,50' dest='25,13,75,63'"></Option>
+					
+					<Option name="main_setting" group="main_tab" width="101" height="102" text="设置" textpadding="0,60,0,0" selectedtextcolor="#FFFFFFFF" normalimage="file='main_setting.png' source='0,0,50,50' dest='25,13,75,63'" selectedimage="file='main_setting_select.png' source='0,0,50,50' dest='25,13,75,63'"></Option>
+					
+					<Option name="main_gengduo" group="main_tab" width="101" height="102" text="更多" textpadding="0,60,0,0" selectedtextcolor="#FFFFFFFF" normalimage="file='main_gengduo.png' source='0,0,50,50' dest='25,13,75,63'" selectedimage="file='main_gengduo_select.png' source='0,0,50,50' dest='25,13,75,63'"></Option>
+				</VerticalLayout>
 				
 				<Control></Control>
 				

BIN
bin/Win32/Debug/zhipuzi_pos_windows/skin/main_caigou.png


BIN
bin/Win32/Debug/zhipuzi_pos_windows/skin/main_caigou_select.png


BIN
bin/Win32/Debug/zhipuzi_pos_windows/skin/main_dingdan.png


BIN
bin/Win32/Debug/zhipuzi_pos_windows/skin/main_dingdan_select.png


BIN
bin/Win32/Debug/zhipuzi_pos_windows/skin/main_kucun.png


BIN
bin/Win32/Debug/zhipuzi_pos_windows/skin/main_kucun_select.png


BIN
bin/Win32/Debug/zhipuzi_pos_windows/skin/main_saomashouyin.png


BIN
bin/Win32/Debug/zhipuzi_pos_windows/skin/main_saomashouyin_select.png


BIN
bin/Win32/Debug/zhipuzi_pos_windows/skin/main_shangpin.png


BIN
bin/Win32/Debug/zhipuzi_pos_windows/skin/main_shangpin_select.png


BIN
bin/Win32/Debug/zhipuzi_pos_windows/skin/main_zhengcan.png


BIN
bin/Win32/Debug/zhipuzi_pos_windows/skin/main_zhengcan_select.png


+ 5 - 0
zhipuzi_pos_windows/control/ControlEx.h

@@ -11,6 +11,7 @@
 #include "../page/CHuiyuanPageUI.h"
 #include "../page/CBaobiaoPageUI.h"
 #include "../page/CJiaobanPageUI.h"
+#include "../page/CGengduoPageUI.h"
 
 #include "CWaimaiOrderItemUI.h"
 #include "CDianneiOrderItemUI.h"
@@ -60,6 +61,10 @@ public:
 		{
 			return new CJiaobanPageUI;
 		}
+		else if (_tcscmp(pstrClass, _T("GengduoPage")) == 0)
+		{
+			return new CGengduoPageUI;
+		}
 
 		//控件相关的
 		else if (_tcscmp(pstrClass, _T("WaimaiOrderItem")) == 0)

+ 16 - 0
zhipuzi_pos_windows/helper/CLewaimaiString.cpp

@@ -445,6 +445,22 @@ vector<string> CLewaimaiString::Split(const string& in, const string& delim)
     return ret;
 }
 
+string CLewaimaiString::Merge(const vector<string>& in, const string& delim)
+{
+	std::string ret = "";
+
+	for (size_t i = 0; i < in.size(); i++)
+	{
+		ret += in[i];
+		if (i < in.size() - 1)
+		{
+			ret += delim;
+		}
+	}
+
+	return ret;
+}
+
 /*
  *nNum是表示替换几个,默认为1表示替换第1个
  **/

+ 3 - 0
zhipuzi_pos_windows/helper/CLewaimaiString.h

@@ -46,6 +46,9 @@ public:
 	 */
 	static vector<string> Split(const string& in, const string& delim);
 
+	//把vector的所有字符串,用分隔符分开,返回一个整的字符串
+	static string Merge(const vector<string>& in, const string& delim);
+
 	/**
 	 * 把strContent内容中的strReplace替换为strDest,nNum表示替换几个
 	 */

+ 786 - 0
zhipuzi_pos_windows/page/CGengduoPageUI.cpp

@@ -0,0 +1,786 @@
+#include "../pch/pch.h"
+#include "CGengduoPageUI.h"
+
+#include "../control/ControlEx.h"
+
+#include "../wnd/CHuiyuanChongzhiWnd.h"
+#include "../wnd/CHuiyuanAddWnd.h"
+
+CGengduoPageUI::CGengduoPageUI()
+{
+
+}
+
+CGengduoPageUI::~CGengduoPageUI()
+{
+
+}
+
+//初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
+void CGengduoPageUI::InitShow()
+{
+	//根据当前数据库里面对功能的配置,来初始化显示
+	m_changyongString = CSetting::GetParam("setting_gongneng_changyong_string");
+
+	m_gengduoString = CSetting::GetParam("setting_gongneng_gengduo_string");
+
+	Refresh();
+}
+
+//处理按钮点击类事件
+void CGengduoPageUI::HandleClickMsg(TNotifyUI& msg)
+{
+	CDuiString name = msg.pSender->GetName();
+
+	if (name == L"front")
+	{
+		QianYi(msg.pSender);
+	}
+	else if (name == L"back")
+	{
+		HouYi(msg.pSender);
+	}
+	else if (name == L"exchange")
+	{
+		Jiaohuan(msg.pSender);
+	}
+	else if (name == L"gengduo_front")
+	{
+		GengduoQianYi(msg.pSender);
+	}
+	else if (name == L"gengduo_back")
+	{
+		GengduoHouYi(msg.pSender);
+	}
+	else if (name == L"gengduo_exchange")
+	{
+		GengduoJiaohuan(msg.pSender);
+	}
+}
+
+//处理option切换事件
+void CGengduoPageUI::HandleSelectChangeMsg(TNotifyUI& msg)
+{
+
+}
+
+//处理下拉框、radio的切换事件
+void CGengduoPageUI::HandleItemSelectMsg(TNotifyUI& msg)
+{
+
+}
+
+//处理编辑框输入内容改变事件
+void CGengduoPageUI::HandleTextChangedMsg(TNotifyUI& msg)
+{
+	DuiLib::CDuiString senderName = msg.pSender->GetName();
+
+	if (senderName == L"huiyuan_page_shoujihao_edit")
+	{
+
+	}
+}
+
+//处理扫码枪捕捉到的扫码信息
+void CGengduoPageUI::HandleTextCapture(std::string content)
+{
+	if (m_is_show_modal_wnd == true)
+	{
+		m_curModalWnd->HandleTextCapture(content);
+	}
+}
+
+bool CGengduoPageUI::HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+	return false;
+}
+
+void CGengduoPageUI::Refresh()
+{
+	//先渲染常用
+	std::vector<string> changyongVector = CLewaimaiString::Split(m_changyongString, ",");
+
+	CHorizontalLayoutUI* changyongLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_changyong_layout"));
+	changyongLayout->RemoveAll();
+
+	for (std::vector<string>::iterator it = changyongVector.begin(); it != changyongVector.end(); it++)
+	{
+		CDialogBuilder builder;
+		CDialogBuilderCallbackEx cb;
+
+		CVerticalLayoutUI* pItem = static_cast<CVerticalLayoutUI*>(builder.Create(_T("gengduo_item.xml"), (UINT)0, &cb, m_pManager));
+
+		CControlUI* pTitle = pItem->FindSubControl(L"title");
+		CControlUI* pImage = pItem->FindSubControl(L"image");
+		
+		if (*it == "diandan")
+		{
+			pTitle->SetText(L"点单");
+			pImage->SetBkImage(L"main_diandan.png");
+			pItem->SetName(L"diandan");
+		}
+		else if (*it == "dingdan")
+		{
+			pTitle->SetText(L"订单");
+			pImage->SetBkImage(L"main_waimai.png");
+			pItem->SetName(L"dingdan");
+		}
+		else if (*it == "huiyuan")
+		{
+			pTitle->SetText(L"会员");
+			pImage->SetBkImage(L"main_huiyuan.png");
+			pItem->SetName(L"huiyuan");
+		}
+		else if (*it == "baobiao")
+		{
+			pTitle->SetText(L"报表");
+			pImage->SetBkImage(L"main_baobiao.png");
+			pItem->SetName(L"baobiao");
+		}
+		else if (*it == "jiaoban")
+		{
+			pTitle->SetText(L"交班");
+			pImage->SetBkImage(L"main_jiaoban.png");
+			pItem->SetName(L"jiaoban");
+		}
+		else if (*it == "shezhi")
+		{
+			pTitle->SetText(L"设置");
+			pImage->SetBkImage(L"main_setting.png");
+			pItem->SetName(L"shezhi");
+		}
+		else if (*it == "shangpin")
+		{
+			pTitle->SetText(L"商品");
+			pImage->SetBkImage(L"main_shangpin.png");
+			pItem->SetName(L"shangpin");
+		}
+		else if (*it == "kucun")
+		{
+			pTitle->SetText(L"库存");
+			pImage->SetBkImage(L"main_kucun.png");
+			pItem->SetName(L"kucun");
+		}
+		else if (*it == "caigou")
+		{
+			pTitle->SetText(L"采购");
+			pImage->SetBkImage(L"main_caigou.png");
+			pItem->SetName(L"caigou");
+		}
+		else if (*it == "zhengcan")
+		{
+			pTitle->SetText(L"桌台");
+			pImage->SetBkImage(L"main_zhengcan.png");
+			pItem->SetName(L"zhengcan");
+		}
+		else if (*it == "saomashouyin")
+		{
+			pTitle->SetText(L"收银");
+			pImage->SetBkImage(L"main_saomashouyin.png");
+			pItem->SetName(L"saomashouyin");
+		}
+		else
+		{
+			continue;
+		}
+
+		changyongLayout->Add(pItem);
+	}
+	
+	//再渲染更多
+	std::vector<string> gengduoVector = CLewaimaiString::Split(m_gengduoString, ",");
+
+	CHorizontalLayoutUI* gengduoLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_gengduo_layout"));
+	gengduoLayout->RemoveAll();
+
+	for (std::vector<string>::iterator it = gengduoVector.begin(); it != gengduoVector.end(); it++)
+	{
+		CDialogBuilder builder;
+		CDialogBuilderCallbackEx cb;
+
+		CVerticalLayoutUI* pItem = static_cast<CVerticalLayoutUI*>(builder.Create(_T("gengduo_item.xml"), (UINT)0, &cb, m_pManager));
+
+		CControlUI* pTitle = pItem->FindSubControl(L"title");
+		CControlUI* pImage = pItem->FindSubControl(L"image");
+
+		CControlUI* pFront = pItem->FindSubControl(L"front");
+		CControlUI* pBack = pItem->FindSubControl(L"back");
+		CControlUI* pExchange = pItem->FindSubControl(L"exchange");
+
+		if (*it == "diandan")
+		{
+			pTitle->SetText(L"点单");
+			pImage->SetBkImage(L"main_diandan.png");
+			pItem->SetName(L"diandan");
+
+			pExchange->SetText(L"上移");
+
+			pFront->SetName(L"gengduo_front");
+			pBack->SetName(L"gengduo_back");
+			pExchange->SetName(L"gengduo_exchange");
+		}
+		else if (*it == "dingdan")
+		{
+			pTitle->SetText(L"订单");
+			pImage->SetBkImage(L"main_waimai.png");
+			pItem->SetName(L"dingdan");
+
+			pExchange->SetText(L"上移");
+
+			pFront->SetName(L"gengduo_front");
+			pBack->SetName(L"gengduo_back");
+			pExchange->SetName(L"gengduo_exchange");
+		}
+		else if (*it == "huiyuan")
+		{
+			pTitle->SetText(L"会员");
+			pImage->SetBkImage(L"main_huiyuan.png");
+			pItem->SetName(L"huiyuan");
+
+			pExchange->SetText(L"上移");
+
+			pFront->SetName(L"gengduo_front");
+			pBack->SetName(L"gengduo_back");
+			pExchange->SetName(L"gengduo_exchange");
+		}
+		else if (*it == "baobiao")
+		{
+			pTitle->SetText(L"报表");
+			pImage->SetBkImage(L"main_baobiao.png");
+			pItem->SetName(L"baobiao");
+
+			pExchange->SetText(L"上移");
+
+			pFront->SetName(L"gengduo_front");
+			pBack->SetName(L"gengduo_back");
+			pExchange->SetName(L"gengduo_exchange");
+		}
+		else if (*it == "jiaoban")
+		{
+			pTitle->SetText(L"交班");
+			pImage->SetBkImage(L"main_jiaoban.png");
+			pItem->SetName(L"jiaoban");
+
+			pExchange->SetText(L"上移");
+
+			pFront->SetName(L"gengduo_front");
+			pBack->SetName(L"gengduo_back");
+			pExchange->SetName(L"gengduo_exchange");
+		}
+		else if (*it == "shezhi")
+		{
+			pTitle->SetText(L"设置");
+			pImage->SetBkImage(L"main_setting.png");
+			pItem->SetName(L"shezhi");
+
+			pExchange->SetText(L"上移");
+
+			pFront->SetName(L"gengduo_front");
+			pBack->SetName(L"gengduo_back");
+			pExchange->SetName(L"gengduo_exchange");
+		}
+		else if (*it == "shangpin")
+		{
+			pTitle->SetText(L"商品");
+			pImage->SetBkImage(L"main_shangpin.png");
+			pItem->SetName(L"shangpin");
+
+			pExchange->SetText(L"上移");
+
+			pFront->SetName(L"gengduo_front");
+			pBack->SetName(L"gengduo_back");
+			pExchange->SetName(L"gengduo_exchange");
+		}
+		else if (*it == "kucun")
+		{
+			pTitle->SetText(L"库存");
+			pImage->SetBkImage(L"main_kucun.png");
+			pItem->SetName(L"kucun");
+
+			pExchange->SetText(L"上移");
+
+			pFront->SetName(L"gengduo_front");
+			pBack->SetName(L"gengduo_back");
+			pExchange->SetName(L"gengduo_exchange");
+		}
+		else if (*it == "caigou")
+		{
+			pTitle->SetText(L"采购");
+			pImage->SetBkImage(L"main_caigou.png");
+			pItem->SetName(L"caigou");
+
+			pExchange->SetText(L"上移");
+
+			pFront->SetName(L"gengduo_front");
+			pBack->SetName(L"gengduo_back");
+			pExchange->SetName(L"gengduo_exchange");
+		}
+		else if (*it == "zhengcan")
+		{
+			pTitle->SetText(L"桌台");
+			pImage->SetBkImage(L"main_zhengcan.png");
+			pItem->SetName(L"zhengcan");
+			pExchange->SetText(L"上移");
+
+			pFront->SetName(L"gengduo_front");
+			pBack->SetName(L"gengduo_back");
+			pExchange->SetName(L"gengduo_exchange");
+		}
+		else if (*it == "saomashouyin")
+		{
+			pTitle->SetText(L"收银");
+			pImage->SetBkImage(L"main_saomashouyin.png");
+			pItem->SetName(L"saomashouyin");
+
+			pExchange->SetText(L"上移");
+
+			pFront->SetName(L"gengduo_front");
+			pBack->SetName(L"gengduo_back");
+			pExchange->SetName(L"gengduo_exchange");
+		}
+		else
+		{
+			continue;
+		}
+
+		gengduoLayout->Add(pItem);
+	}
+
+	UpdateItemPos();
+}
+
+void CGengduoPageUI::UpdateItemPos()
+{
+	if (m_changyongString != "")
+	{
+		//先更新常用的位置
+		CHorizontalLayoutUI* changyongLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_changyong_layout"));
+
+		int nWidth = m_nPageWidth;
+		if (nWidth == 0)
+		{
+			return;
+		}
+
+		std::vector<string> changyongVector = CLewaimaiString::Split(m_changyongString, ",");
+
+		//根据宽度计算每行显示的数量
+		int nMeihangNum = (nWidth) / 135;
+		if (nMeihangNum == 0)
+		{
+			nMeihangNum = 1;
+		}
+
+		int num = 0;
+
+		for (size_t i = 0; i < changyongVector.size(); i++)
+		{
+			CVerticalLayoutUI* curItem = static_cast<CVerticalLayoutUI*>(changyongLayout->GetItemAt(i));
+
+			int curRow = num / nMeihangNum + 1;
+			int curCol = num % nMeihangNum + 1;
+
+			RECT rect;
+			rect.left = (curCol - 1) * 135 + 15;
+			rect.right = rect.left + 120;
+			rect.top = (curRow - 1) * 175 + 15;
+			rect.bottom = rect.top + 160;
+
+			curItem->SetFloat(true);
+			curItem->SetPos(rect);
+
+			num++;
+		}
+
+		//调整区域高度
+		int lastRow = (num - 1) / nMeihangNum + 1;
+		changyongLayout->SetFixedHeight(lastRow * 175 + 15);
+	}
+
+	if (m_gengduoString != "")
+	{
+		//再更新更多的位置
+		CHorizontalLayoutUI* gengduoLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_gengduo_layout"));
+
+		int nWidth = m_nPageWidth;
+		if (nWidth == 0)
+		{
+			return;
+		}
+
+		std::vector<string> gengduoVector = CLewaimaiString::Split(m_gengduoString, ",");
+
+		//根据宽度计算每行显示的数量
+		int nMeihangNum = (nWidth) / 135;
+		if (nMeihangNum == 0)
+		{
+			nMeihangNum = 1;
+		}
+
+		int num = 0;
+
+		for (size_t i = 0; i < gengduoVector.size(); i++)
+		{
+			CVerticalLayoutUI* curItem = static_cast<CVerticalLayoutUI*>(gengduoLayout->GetItemAt(i));
+
+			int curRow = num / nMeihangNum + 1;
+			int curCol = num % nMeihangNum + 1;
+
+			RECT rect;
+			rect.left = (curCol - 1) * 135 + 15;
+			rect.right = rect.left + 120;
+			rect.top = (curRow - 1) * 175 + 15;
+			rect.bottom = rect.top + 160;
+
+			curItem->SetFloat(true);
+			curItem->SetPos(rect);
+
+			num++;
+		}
+
+		//调整区域高度
+		int lastRow = (num - 1) / nMeihangNum + 1;
+		gengduoLayout->SetFixedHeight(lastRow * 175 + 15);
+	}
+
+	//还要调整左侧的显示
+
+}
+
+void CGengduoPageUI::SetPos(RECT rc, bool bNeedInvalidate)
+{
+	m_nPageWidth = rc.right - rc.left;
+
+	UpdateItemPos();
+
+	CContainerUI::SetPos(rc, bNeedInvalidate);
+}
+
+void CGengduoPageUI::QianYi(CControlUI* pSender)
+{
+	CControlUI* pItem = pSender->GetParent()->GetParent();
+
+	std::wstring ws_name = pItem->GetName();
+	std::string name = CLewaimaiString::UnicodeToUTF8(ws_name.c_str());
+
+	std::vector<string> changyongVector = CLewaimaiString::Split(m_changyongString, ",");
+
+	CHorizontalLayoutUI* changyongLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_changyong_layout"));
+
+	for (size_t i = 0; i < changyongVector.size(); i++)
+	{
+		if (changyongVector[i] == name)
+		{
+			if (i == 0)
+			{
+				//本来就是第一个了
+				return;
+			}
+
+			//找到了当前点击的是这个
+			changyongLayout->RemoveAt(i, true);
+
+			//把控件添加到前面去
+			changyongLayout->AddAt(pItem, i - 1);
+
+			//修改vector
+			std::string tmp = name;
+
+			changyongVector[i] = changyongVector[i - 1];
+			changyongVector[i - 1] = name;
+
+			//然后修改字符串
+			m_changyongString = CLewaimaiString::Merge(changyongVector, ",");
+
+			break;
+		}
+	}
+
+	//控件交换了位置,字符串也交换了位置,这个时候刷新位置显示
+	UpdateItemPos();
+
+	Save();
+}
+
+void CGengduoPageUI::HouYi(CControlUI* pSender)
+{
+	CControlUI* pItem = pSender->GetParent()->GetParent();
+
+	std::wstring ws_name = pItem->GetName();
+	std::string name = CLewaimaiString::UnicodeToUTF8(ws_name.c_str());
+
+	std::vector<string> changyongVector = CLewaimaiString::Split(m_changyongString, ",");
+
+	CHorizontalLayoutUI* changyongLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_changyong_layout"));
+
+	for (size_t i = 0; i < changyongVector.size(); i++)
+	{
+		if (changyongVector[i] == name)
+		{
+			if (i == changyongVector.size() - 1)
+			{
+				//本来就是最后一个了
+				return;
+			}
+
+			//找到了当前点击的是这个
+			changyongLayout->RemoveAt(i, true);
+
+			//把控件添加到后面去
+			changyongLayout->AddAt(pItem, i + 1);
+
+			//修改vector
+			std::string tmp = name;
+
+			changyongVector[i] = changyongVector[i + 1];
+			changyongVector[i + 1] = name;
+
+			//然后修改字符串
+			m_changyongString = CLewaimaiString::Merge(changyongVector, ",");
+
+			break;
+		}
+	}
+
+	//控件交换了位置,字符串也交换了位置,这个时候刷新位置显示
+	UpdateItemPos();
+
+	Save();
+}
+
+void CGengduoPageUI::Jiaohuan(CControlUI* pSender)
+{
+	CVerticalLayoutUI* pItem = static_cast<CVerticalLayoutUI*>(pSender->GetParent()->GetParent());
+
+	std::wstring ws_name = pItem->GetName();
+	std::string name = CLewaimaiString::UnicodeToUTF8(ws_name.c_str());
+
+	std::vector<string> changyongVector = CLewaimaiString::Split(m_changyongString, ",");
+
+	CHorizontalLayoutUI* changyongLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_changyong_layout"));
+
+	for (size_t i = 0; i < changyongVector.size(); i++)
+	{
+		if (changyongVector[i] == name)
+		{
+			//找到了当前点击的是这个,先从常用里面删除
+			changyongLayout->RemoveAt(i, true);
+
+			//然后把这个添加到更多的最下面去,添加之前先修改一些属性
+			CControlUI* pFront = pItem->FindSubControl(L"front");
+			CControlUI* pBack = pItem->FindSubControl(L"back");
+			CControlUI* pExchange = pItem->FindSubControl(L"exchange");
+
+			pExchange->SetText(L"上移");
+
+			pFront->SetName(L"gengduo_front");
+			pBack->SetName(L"gengduo_back");
+			pExchange->SetName(L"gengduo_exchange");
+
+			CHorizontalLayoutUI* gengduoLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_gengduo_layout"));
+			gengduoLayout->Add(pItem);
+
+			//修改vector
+			changyongVector.erase(changyongVector.begin() + i);
+
+			std::vector<string> gengduoVector;
+			if (m_gengduoString == "")
+			{
+				gengduoVector.push_back(name);
+			}
+			else
+			{
+				gengduoVector = CLewaimaiString::Split(m_gengduoString, ",");
+				gengduoVector.push_back(name);
+			}
+
+			//然后修改字符串
+			m_changyongString = CLewaimaiString::Merge(changyongVector, ",");
+			m_gengduoString = CLewaimaiString::Merge(gengduoVector, ",");
+
+			break;
+		}
+	}
+
+	//控件交换了位置,字符串也交换了位置,这个时候刷新位置显示
+	UpdateItemPos();
+
+	Save();
+}
+
+void CGengduoPageUI::GengduoQianYi(CControlUI* pSender)
+{
+	CControlUI* pItem = pSender->GetParent()->GetParent();
+
+	std::wstring ws_name = pItem->GetName();
+	std::string name = CLewaimaiString::UnicodeToUTF8(ws_name.c_str());
+
+	std::vector<string> gengduoVector = CLewaimaiString::Split(m_gengduoString, ",");
+
+	CHorizontalLayoutUI* gengduoLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_gengduo_layout"));
+
+	for (size_t i = 0; i < gengduoVector.size(); i++)
+	{
+		if (gengduoVector[i] == name)
+		{
+			if (i == 0)
+			{
+				//本来就是第一个了
+				return;
+			}
+
+			//找到了当前点击的是这个
+			gengduoLayout->RemoveAt(i, true);
+
+			//把控件添加到前面去
+			gengduoLayout->AddAt(pItem, i - 1);
+
+			//修改vector
+			std::string tmp = name;
+
+			gengduoVector[i] = gengduoVector[i - 1];
+			gengduoVector[i - 1] = name;
+
+			//然后修改字符串
+			m_gengduoString = CLewaimaiString::Merge(gengduoVector, ",");
+
+			break;
+		}
+	}
+
+	//控件交换了位置,字符串也交换了位置,这个时候刷新位置显示
+	UpdateItemPos();
+
+	Save();
+}
+
+void CGengduoPageUI::GengduoHouYi(CControlUI* pSender)
+{
+	CControlUI* pItem = pSender->GetParent()->GetParent();
+
+	std::wstring ws_name = pItem->GetName();
+	std::string name = CLewaimaiString::UnicodeToUTF8(ws_name.c_str());
+
+	std::vector<string> gengduoVector = CLewaimaiString::Split(m_gengduoString, ",");
+
+	CHorizontalLayoutUI* gengduoLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_gengduo_layout"));
+
+	for (size_t i = 0; i < gengduoVector.size(); i++)
+	{
+		if (gengduoVector[i] == name)
+		{
+			if (i == gengduoVector.size() - 1)
+			{
+				//本来就是最后一个了
+				return;
+			}
+
+			//找到了当前点击的是这个
+			gengduoLayout->RemoveAt(i, true);
+
+			//把控件添加到后面去
+			gengduoLayout->AddAt(pItem, i + 1);
+
+			//修改vector
+			std::string tmp = name;
+
+			gengduoVector[i] = gengduoVector[i + 1];
+			gengduoVector[i + 1] = name;
+
+			//然后修改字符串
+			m_gengduoString = CLewaimaiString::Merge(gengduoVector, ",");
+
+			break;
+		}
+	}
+
+	//控件交换了位置,字符串也交换了位置,这个时候刷新位置显示
+	UpdateItemPos();
+
+	Save();
+}
+
+void CGengduoPageUI::GengduoJiaohuan(CControlUI* pSender)
+{
+	{
+		std::vector<string> changyongVector;
+		if (m_changyongString == "")
+		{
+
+		}
+		else
+		{
+			changyongVector = CLewaimaiString::Split(m_changyongString, ",");
+		}
+
+		if (changyongVector.size() >= 6)
+		{
+			m_pMainWnd->ShowToast(L"常用功能最多只能设置5个");
+			return;
+		}
+	}
+
+	CVerticalLayoutUI* pItem = static_cast<CVerticalLayoutUI*>(pSender->GetParent()->GetParent());
+
+	std::wstring ws_name = pItem->GetName();
+	std::string name = CLewaimaiString::UnicodeToUTF8(ws_name.c_str());
+
+	std::vector<string> gengduoVector = CLewaimaiString::Split(m_gengduoString, ",");
+
+	CHorizontalLayoutUI* gengduoLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_gengduo_layout"));
+
+	for (size_t i = 0; i < gengduoVector.size(); i++)
+	{
+		if (gengduoVector[i] == name)
+		{
+			//找到了当前点击的是这个,先从常用里面删除
+			gengduoLayout->RemoveAt(i, true);
+
+			//然后把这个添加到更多的最下面去,添加之前先修改一些属性
+			CControlUI* pFront = pItem->FindSubControl(L"gengduo_front");
+			CControlUI* pBack = pItem->FindSubControl(L"gengduo_back");
+			CControlUI* pExchange = pItem->FindSubControl(L"gengduo_exchange");
+
+			pExchange->SetText(L"下移");
+
+			pFront->SetName(L"front");
+			pBack->SetName(L"back");
+			pExchange->SetName(L"exchange");
+
+			CHorizontalLayoutUI* changyongLayout = static_cast<CHorizontalLayoutUI*>(this->FindSubControl(L"gengduo_page_changyong_layout"));
+			changyongLayout->Add(pItem);
+
+			//修改vector
+			gengduoVector.erase(gengduoVector.begin() + i);
+
+			std::vector<string> changyongVector;
+			if (m_changyongString == "")
+			{
+				changyongVector.push_back(name);
+			}
+			else
+			{
+				changyongVector = CLewaimaiString::Split(m_changyongString, ",");
+				changyongVector.push_back(name);
+			}
+
+			//然后修改字符串
+			m_changyongString = CLewaimaiString::Merge(changyongVector, ",");
+			m_gengduoString = CLewaimaiString::Merge(gengduoVector, ",");
+
+			break;
+		}
+	}
+
+	//控件交换了位置,字符串也交换了位置,这个时候刷新位置显示
+	UpdateItemPos();
+
+	Save();
+}
+
+void CGengduoPageUI::Save()
+{
+	CSetting::SetParam("setting_gongneng_changyong_string", m_changyongString);
+
+    CSetting::SetParam("setting_gongneng_gengduo_string", m_gengduoString);
+}

+ 70 - 0
zhipuzi_pos_windows/page/CGengduoPageUI.h

@@ -0,0 +1,70 @@
+#pragma once
+
+#include "../pch/pch.h"
+#include "CBasePageUI.h"
+
+#include "../wnd/CModalWnd.h"
+
+class CGengduoPageUI : public CBasePageUI
+{
+public:
+	CGengduoPageUI();
+
+	~CGengduoPageUI();
+
+	//初始化当前页面的展示,处理默认展示效果,在页面被加载的时候调用
+	void InitShow();
+
+	//处理按钮点击类事件
+	void HandleClickMsg(TNotifyUI& msg);
+
+	//处理option切换事件
+	void HandleSelectChangeMsg(TNotifyUI& msg);
+
+	//处理下拉框、radio的切换事件
+	void HandleItemSelectMsg(TNotifyUI& msg);
+
+	//处理编辑框输入内容改变事件
+	void HandleTextChangedMsg(TNotifyUI& msg);
+
+	//处理扫码枪捕捉到的扫码信息
+	void HandleTextCapture(std::string content);
+
+	//处理自定义消息,各个页面处理各个页面自己的(是自己处理的消息返回true,不是自己处理的消息返回false)
+	bool HandleCustomMessage(UINT uMsg, WPARAM wParam, LPARAM lParam);
+
+private:
+	//刷新展示
+	void Refresh();
+
+	//更新各个子控件的位置,在刷新的时候和位置变化的时候都调用
+	void UpdateItemPos();
+
+	void SetPos(RECT rc, bool bNeedInvalidate = true);
+
+	//常用模块的操作
+	void QianYi(CControlUI* pSender);
+	void HouYi(CControlUI* pSender);
+	void Jiaohuan(CControlUI* pSender);
+
+	void GengduoQianYi(CControlUI* pSender);
+	void GengduoHouYi(CControlUI* pSender);
+	void GengduoJiaohuan(CControlUI* pSender);
+
+	//把变化后的配置,写入数据库
+	void Save();
+
+private:
+	//是否正在请求服务器
+	bool m_is_handle = false;
+
+	//模态对话框有关的
+	bool m_is_show_modal_wnd = false;
+	CModalWnd* m_curModalWnd;
+
+	std::string m_changyongString;
+	std::string m_gengduoString;
+
+	//当前控件的实际宽度
+	int m_nPageWidth;
+};

+ 6 - 6
zhipuzi_pos_windows/CAppEnv.cpp

@@ -1,11 +1,11 @@
-#include "pch/pch.h"
+#include "../pch/pch.h"
 #include "CAppEnv.h"
 
-#include "print/CPosPrinterQueue.h"
-#include "worker/CChengzhongWorker.h"
-#include "worker/CMessagePushWorker.h"
-#include "worker/CCommonWorker.h"
-#include "worker/CVoiceWorker.h"
+#include "../print/CPosPrinterQueue.h"
+#include "../worker/CChengzhongWorker.h"
+#include "../worker/CMessagePushWorker.h"
+#include "../worker/CCommonWorker.h"
+#include "../worker/CVoiceWorker.h"
 
 CAppEnv::CAppEnv()
 {

zhipuzi_pos_windows/CAppEnv.h → zhipuzi_pos_windows/tool/CAppEnv.h


+ 13 - 0
zhipuzi_pos_windows/tool/CSetting.cpp

@@ -315,6 +315,19 @@ void CSetting::Init()
 		m_paramsMap[setting_xianshi_is_youtu] = "1";
 	}
 
+	//功能菜单的参数
+	std::string setting_gongneng_changyong_string = "setting_gongneng_changyong_string";
+	if (m_paramsMap.find(setting_gongneng_changyong_string) == m_paramsMap.end())
+	{
+		m_paramsMap[setting_gongneng_changyong_string] = "diandan,dingdan,huiyuan,baobiao,jiaoban,shezhi";
+	}
+
+	std::string setting_gongneng_gengduo_string = "setting_gongneng_gengduo_string";
+	if (m_paramsMap.find(setting_gongneng_gengduo_string) == m_paramsMap.end())
+	{
+		m_paramsMap[setting_gongneng_gengduo_string] = "shangpin,kucun,caigou,zhengcan,saomashouyin";
+	}
+
 	m_mutex.unlock();
 
 	//设置好默认参数之后,将默认参数写回到数据库

+ 16 - 1
zhipuzi_pos_windows/wnd/CMainWnd.cpp

@@ -322,7 +322,7 @@ void CMainWnd::HandleSelectChangeMsg(TNotifyUI& msg)
     }
 	else if (name == L"main_gengduo")
 	{
-
+		this->SwitchPage(GENGDUO);
 	}
 	else
 	{
@@ -994,6 +994,14 @@ void CMainWnd::ShowToast(std::wstring toast_value)
 	}
 }
 
+//根据更多里面的设置,刷新左边的功能导航
+void CMainWnd::UpdateGongnengDaohang()
+{
+	std::string changyongString = CSetting::GetParam("setting_gongneng_changyong_string");
+
+
+}
+
 //全局监听键盘输入
 void CMainWnd::RegKeyboardRawInput()
 {
@@ -1077,6 +1085,13 @@ void CMainWnd::CreatePages()
 		m_pages[JIAOBAN] = pChildContainer;
 	}	
 
+	{
+		CDialogBuilder builder;
+		CDialogBuilderCallbackEx cb;
+		pChildContainer = static_cast<CBasePageUI*>(builder.Create(_T("gengduo_page.xml"), (UINT)0, &cb, &m_pm));
+		m_pages[GENGDUO] = pChildContainer;
+	}
+
 	//这里纯粹只是创建对象,不做任何初始化等处理
 }
 

+ 3 - 0
zhipuzi_pos_windows/wnd/CMainWnd.h

@@ -103,6 +103,9 @@ public:
 	//展示toast
 	void ShowToast(std::wstring toast_value);
 
+	//根据更多里面的设置,刷新左边的功能导航
+	void UpdateGongnengDaohang();
+
 private:
 	void UpdateFoodImage();
 

+ 1 - 1
zhipuzi_pos_windows/zhipuzi_pos_windows.cpp

@@ -4,7 +4,7 @@
 
 #include <curl/curl.h>
 
-#include "CAppEnv.h"
+#include "tool/CAppEnv.h"
 
 //用于从zip读取资源
 LPBYTE g_lpResourceZIPBuffer = NULL;

+ 4 - 2
zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj

@@ -227,7 +227,8 @@ copy $(ProjectDir)conf\ $(SolutionDir)bin\$(Platform)\$(Configuration)\conf\</Co
     </PostBuildEvent>
   </ItemDefinitionGroup>
   <ItemGroup>
-    <ClInclude Include="CAppEnv.h" />
+    <ClInclude Include="tool\CAppEnv.h" />
+    <ClInclude Include="page\CGengduoPageUI.h" />
     <ClInclude Include="wnd\CImageAttentionWnd.h" />
     <ClInclude Include="worker\CCommonWorker.h" />
     <ClInclude Include="worker\CVoiceWorker.h" />
@@ -311,7 +312,8 @@ copy $(ProjectDir)conf\ $(SolutionDir)bin\$(Platform)\$(Configuration)\conf\</Co
     <ClInclude Include="helper\CSystem.h" />
   </ItemGroup>
   <ItemGroup>
-    <ClCompile Include="CAppEnv.cpp" />
+    <ClCompile Include="tool\CAppEnv.cpp" />
+    <ClCompile Include="page\CGengduoPageUI.cpp" />
     <ClCompile Include="wnd\CImageAttentionWnd.cpp" />
     <ClCompile Include="worker\CCommonWorker.cpp" />
     <ClCompile Include="worker\CVoiceWorker.cpp" />

+ 12 - 6
zhipuzi_pos_windows/zhipuzi_pos_windows.vcxproj.filters

@@ -243,9 +243,6 @@
     <ClInclude Include="zhipuzi\CJiaobanOrder.h">
       <Filter>头文件</Filter>
     </ClInclude>
-    <ClInclude Include="CAppEnv.h">
-      <Filter>头文件</Filter>
-    </ClInclude>
     <ClInclude Include="worker\CVoiceWorker.h">
       <Filter>头文件</Filter>
     </ClInclude>
@@ -261,6 +258,12 @@
     <ClInclude Include="wnd\CImageAttentionWnd.h">
       <Filter>头文件</Filter>
     </ClInclude>
+    <ClInclude Include="page\CGengduoPageUI.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
+    <ClInclude Include="tool\CAppEnv.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="pch\pch.cpp">
@@ -467,9 +470,6 @@
     <ClCompile Include="page\CJiaobanPageUI.cpp">
       <Filter>源文件</Filter>
     </ClCompile>
-    <ClCompile Include="CAppEnv.cpp">
-      <Filter>源文件</Filter>
-    </ClCompile>
     <ClCompile Include="worker\CVoiceWorker.cpp">
       <Filter>源文件</Filter>
     </ClCompile>
@@ -485,6 +485,12 @@
     <ClCompile Include="wnd\CImageAttentionWnd.cpp">
       <Filter>源文件</Filter>
     </ClCompile>
+    <ClCompile Include="page\CGengduoPageUI.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
+    <ClCompile Include="tool\CAppEnv.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <Image Include="resource\zhipuzi.ico">