MainFrm.cpp
上传用户:sunh8215
上传日期:2010-02-13
资源大小:1616k
文件大小:14k
源码类别:

酒店行业

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "QQ.h"
  5. #include "QQView.h"
  6. #include "MainFrm.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. #include <mmsystem.h>
  13. #define WM_ICON_NOTIFY WM_USER+10  //自定义消息的宏定义
  14. #include "page1.h"
  15. #include "page2.h"
  16. #include "page3.h"
  17. /////////////////////////////////////////////////////////////////////////////
  18. // CMainFrame
  19. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  20. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  21. ON_COMMAND_EX(CG_ID_VIEW_DIALOGBAR, OnBarCheck)
  22. ON_UPDATE_COMMAND_UI(CG_ID_VIEW_DIALOGBAR, OnUpdateControlBarMenu)
  23. //{{AFX_MSG_MAP(CMainFrame)
  24. ON_WM_CREATE()
  25. ON_WM_CLOSE()
  26. ON_COMMAND(IDC_HELPTEXT, OnHelp)
  27. ON_COMMAND(IDC_EMAIL, OnEmail)
  28. ON_COMMAND(IDC_EXIT, OnExit)
  29. ON_COMMAND(IDC_APPWZD, OnAppWzd)
  30. ON_COMMAND(IDC_PRE, OnPre)
  31. ON_COMMAND(IDC_BACK, OnBack)
  32. ON_WM_SIZING()
  33. //}}AFX_MSG_MAP
  34. END_MESSAGE_MAP()
  35. static UINT indicators[] =
  36. {
  37. ID_SEPARATOR,           // status line indicator
  38. ID_INDICATOR_CAPS,
  39. ID_INDICATOR_NUM,
  40. ID_INDICATOR_SCRL,
  41. };
  42. /////////////////////////////////////////////////////////////////////////////
  43. // CMainFrame construction/destruction
  44. CMainFrame::CMainFrame()
  45. {
  46. // TODO: add member initialization code here
  47. // pView=CQQView::GetView();
  48. }
  49. CMainFrame::~CMainFrame()
  50. {
  51. }
  52. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  53. {
  54. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  55. return -1;
  56. //创建扩展工具栏
  57. if (!this->CreateExToolBar())
  58. return -1;
  59.     /************************************************************************/
  60.     /*                   在工具栏上添加数字时钟                                                                     */
  61.     /************************************************************************/
  62. if(!m_clock.Create("",WS_CHILD|WS_VISIBLE,CRect(0,0,135,40),this,IDC_CLOCK))
  63. {
  64. return -1;
  65. }
  66. m_wndReBar.AddBar(&m_clock,NULL, NULL, RBBS_FIXEDSIZE | RBBS_FIXEDBMP);
  67. m_clock.SetStyle(CLEDClock::XDC_SECOND);
  68. /*--------------------------------------------------------------*/
  69. if (!m_wndStatusBar.Create(this) ||
  70. !m_wndStatusBar.SetIndicators(indicators,
  71.   sizeof(indicators)/sizeof(UINT)))
  72. {
  73. TRACE0("Failed to create status barn");
  74. return -1;      // fail to create
  75. }
  76. // TODO: Delete these three lines if you don't want the toolbar to
  77. //  be dockable
  78.     //////////////////////////////////////////////////////////////////////////
  79.     /*                    创建任务栏图标                   */
  80.     //////////////////////////////////////////////////////////////////////////
  81.     //加载系统托盘区程序组
  82. if (!m_systemIcon.Create(this,//消息通知窗口 
  83. WM_ICON_NOTIFY,//自定义消息 
  84. "酒店管理系统2003",    //提示字符串 
  85. AfxGetApp()->LoadIcon(IDR_MAINFRAME),//图标ID号 
  86. IDR_POPUP_MENU //弹出菜单ID号 
  87. )) 
  88. {
  89. return -1; 
  90. }
  91. if (!m_wndTabBar.Create(this, CSize(110, 100), WS_CHILD | WS_VISIBLE |
  92.  CBRS_LEFT | CBRS_SIZE_DYNAMIC, AFX_IDW_TOOLBAR + 11))
  93. {
  94. TRACE0("Failed to create cool barn");
  95. return -1;      // fail to create
  96. }
  97. if (!m_wndListBox1.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 150, 300), &m_wndTabBar.m_wndTabCtrl, 0))
  98. {
  99. TRACE0("Failed to create list barn");
  100. return -1;      // fail to create
  101. }
  102. m_wndTabBar.m_wndTabCtrl.SetMode(TABMODE_GROUP);
  103. m_wndTabBar.m_wndTabCtrl.AddPage(&m_wndListBox1, "管理", NULL);
  104. m_wndListBox1.AddItem(0, "客房登记",ID_ROOM_REGISTER,     "客人住入酒店时进行客房登记");
  105. m_wndListBox1.AddItem(1, "选房",    ID_ROOM_CHOOSE,       "给客人分配房间");
  106. m_wndListBox1.AddItem(2, "房间预定",ID_ROOM_DESTINE,      "为客人进行房间预定服务");
  107. m_wndListBox1.AddItem(3, "餐饮点菜",ID_FOOD_ORDER,        "管理客人的餐饮点菜");
  108. m_wndListBox1.AddItem(4, "帐单付款",ID_MONEY_PAY,         "支付某个帐单的费用");
  109. m_wndListBox1.AddItem(5, "服务点单",ID_SERVER_ORDER,      "服务点单");
  110. m_wndListBox1.AddItem(6, "财务结帐",ID_MONEY_CHECKOUT,    "客人离开时进行费用结算");
  111. m_wndListBox1.SetImagelist(IDB_IMAGE);
  112. if (!m_wndListBox2.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 300), &m_wndTabBar.m_wndTabCtrl, 0))
  113. {
  114. TRACE0("Failed to create list barn");
  115. return -1;      // fail to create
  116. }
  117. m_wndTabBar.m_wndTabCtrl.SetMode(TABMODE_GROUP);
  118. m_wndTabBar.m_wndTabCtrl.AddPage(&m_wndListBox2, "查询", NULL);
  119. m_wndListBox2.AddItem(0, "客人信息", ID_INFOLOOK_GUEST,   "查看客人在酒店的情况");
  120. m_wndListBox2.AddItem(1, "客房信息", ID_INFOLOOK_ROOM,    "查看客房信息");
  121. m_wndListBox2.AddItem(2, "帐单信息", ID_INFOLOOK_BILL,    "查看帐单信息");
  122. m_wndListBox2.AddItem(3, "服务项目", ID_INFOLOOK_SERVER,  "查看酒店有哪些服务项目");
  123. m_wndListBox2.AddItem(4, "食物信息", ID_INFOLOOK_FOOD,    "查看酒店有哪些食物提供服务");
  124. m_wndListBox2.AddItem(5, "员工信息", ID_INFOLOOK_EMPLOYER,"查看酒店的员工信息");
  125. m_wndListBox2.AddItem(6, "消费情况", ID_INFOLOOK_CONSUME, "查看在酒店的消费情况");
  126. m_wndListBox2.SetImagelist(IDB_IMAGE);
  127. //////////////////////////////////////////////////////////////////////////
  128. /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  129.                      CoolMenu的安装
  130. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
  131.     m_CoolMenu.Attach(GetMenu()->GetSafeHmenu());//菜单连接
  132. CCoolMenu::SubClass(this->GetSafeHwnd());//子类化
  133. CCoolMenu::SetLogoText("hello", RGB(0, 0, 255));
  134. CCoolMenu::SetLogoImage(IDB_LOGOBAR2,0);
  135. CCoolMenu::SetBackGroundBmp(IDB_BKBMP);
  136.  //   CCoolMenuTheme::SetTheme(MENU_STYLE_XP);
  137.     CCoolMenu::SetStyle(CCoolMenu::GetStyle() & ~CMS_ICONBAR);
  138. CCoolMenu::SetMenuColor(RGB(255,255,255));//菜单背景色
  139. CCoolMenu::SetIconBarColor(::GetSysColor(COLOR_3DFACE));
  140. CCoolMenu::SetLightBarColor(RGB(61, 128, 152));//高亮栏的边框的颜色
  141. CCoolMenu::SetLightBarStartColor(RGB(255, 255, 255));
  142. CCoolMenu::SetLightBarEndColor(RGB(77,109, 120));
  143. CCoolMenu::SetTextColor(RGB(0, 0, 0));
  144. CCoolMenu::SetHighLightColor(RGB(20, 20, 50));
  145. CMenuWndHook::m_crFrame[0] = RGB(120, 120, 158);
  146. CMenuWndHook::m_crFrame[1] = RGB(48, 50, 48);
  147. CMenuWndHook::m_crFrame[2] = RGB(255, 255, 255);
  148. CMenuWndHook::m_crFrame[3] = RGB(168, 168, 210);
  149. /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  150. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ // TODO: Change the value of CG_ID_VIEW_DIALOGBAR to an appropriate value: //   1. Open the file resource.h // CG: The following block was inserted by the 'Dialog Bar' component { // Initialize dialog bar m_wndDialogBar//RIGHT if (!m_wndDialogBar.Create(this, CG_IDD_DIALOGBAR, CBRS_RIGHT| CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_HIDE_INPLACE, CG_ID_VIEW_DIALOGBAR)) { TRACE0("Failed to create dialog bar m_wndDialogBarn"); return -1; // fail to create } m_wndDialogBar.EnableDocking(CBRS_ALIGN_RIGHT | CBRS_ALIGN_LEFT); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndDialogBar); } //Create our RollupCtrl into DialogBar4,4,187,362
  151. m_wndRollupCtrl.Create(WS_VISIBLE|WS_CHILD, CRect(4,0,148,1000), &m_wndDialogBar, 2);
  152. //Add some pages
  153. //page1
  154. m_wndRollupCtrl.InsertPage("高级查询",IDD_PAGE1,RUNTIME_CLASS(CPage1), 10);
  155. //page2
  156.     m_wndRollupCtrl.InsertPage("数据分析",IDD_PAGE2,RUNTIME_CLASS(CPage2));
  157. //page3
  158. m_wndRollupCtrl.InsertPage("酒店概况",IDD_PAGE3,RUNTIME_CLASS(CPage3));
  159. /////
  160. HICON m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  161.     return 0;
  162. }
  163. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  164. {
  165. if( !CFrameWnd::PreCreateWindow(cs) )
  166. return FALSE;
  167. // TODO: Modify the Window class or styles here by modifying
  168. //  the CREATESTRUCT cs
  169. return TRUE;
  170. }
  171. /////////////////////////////////////////////////////////////////////////////
  172. // CMainFrame diagnostics
  173. #ifdef _DEBUG
  174. void CMainFrame::AssertValid() const
  175. {
  176. CFrameWnd::AssertValid();
  177. }
  178. void CMainFrame::Dump(CDumpContext& dc) const
  179. {
  180. CFrameWnd::Dump(dc);
  181. }
  182. #endif //_DEBUG
  183. /////////////////////////////////////////////////////////////////////////////
  184. // CMainFrame message handlers
  185. void CMainFrame::OnClose() 
  186. {
  187. // TODO: Add your message handler code here and/or call default
  188. // new CFaderWnd(this,2000);
  189. // AfxGetMainWnd()->ShowWindow(SW_HIDE);
  190. CFrameWnd::OnClose();
  191. }
  192. BOOL CMainFrame::CreateExToolBar()
  193. {
  194.     CImageList img;
  195. CString str;
  196. if(!m_wndReBar.Create(this))
  197. {
  198. return -1;
  199. }
  200. if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
  201. | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))
  202. {
  203. return -1;      
  204. }
  205. //下面的代码是设置按钮的宽度和长度
  206. m_wndToolBar.GetToolBarCtrl().SetButtonWidth(50,90);
  207. //下面的代码是设置"热"的位图
  208. img.Create(25, 25, ILC_COLOR16|ILC_MASK,2,2);
  209. img.SetBkColor(::GetSysColor(COLOR_BTNFACE));
  210. img.Add(AfxGetApp()->LoadIcon(IDI_WZD));//应用程序向导
  211.     img.Add(AfxGetApp()->LoadIcon(IDI_PRE));//前台程序
  212. img.Add(AfxGetApp()->LoadIcon(IDI_BACK));//后台程序
  213. img.Add(AfxGetApp()->LoadIcon(IDI_HELP));//帮助
  214.     img.Add(AfxGetApp()->LoadIcon(IDI_EMAIL));//邮件
  215. img.Add(AfxGetApp()->LoadIcon(IDI_EXIT));//退出
  216.     
  217. m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
  218. img.Detach();
  219. //下面的代码是设置"冷"的位图
  220. img.Create(23, 23, ILC_COLOR16|ILC_MASK, 2,2);
  221. img.SetBkColor(::GetSysColor(COLOR_BTNFACE));
  222. img.Add(AfxGetApp()->LoadIcon(IDI_WZD));//应用程序向导
  223.     img.Add(AfxGetApp()->LoadIcon(IDI_PRE));//前台程序
  224. img.Add(AfxGetApp()->LoadIcon(IDI_BACK));//后台程序
  225. img.Add(AfxGetApp()->LoadIcon(IDI_HELP));//帮助
  226.     img.Add(AfxGetApp()->LoadIcon(IDI_EMAIL));//邮件
  227. img.Add(AfxGetApp()->LoadIcon(IDI_EXIT));//退出
  228.     
  229. m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
  230. img.Detach();
  231. //改变属性
  232. m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT |CBRS_TOOLTIPS | TBSTYLE_TRANSPARENT|TBBS_CHECKBOX );
  233. m_wndToolBar.SetButtons(NULL,6);
  234. // set up each toolbar button设置文字  
  235. m_wndToolBar.SetButtonInfo(0, IDC_APPWZD, TBSTYLE_BUTTON, 0);
  236. m_wndToolBar.SetButtonText(0, "向导");
  237.     
  238. m_wndToolBar.SetButtonInfo(1, IDC_PRE, TBSTYLE_BUTTON, 1);
  239. m_wndToolBar.SetButtonText(1, "前台模式");
  240. m_wndToolBar.SetButtonInfo(2, IDC_BACK, TBSTYLE_BUTTON, 2);
  241. m_wndToolBar.SetButtonText(2, "后台模式");
  242. m_wndToolBar.SetButtonInfo(3, IDC_HELPTEXT, TBSTYLE_BUTTON, 3);
  243. m_wndToolBar.SetButtonText(3, "帮助");
  244. m_wndToolBar.SetButtonInfo(4, IDC_EMAIL, TBSTYLE_BUTTON, 4);
  245. m_wndToolBar.SetButtonText(4, "邮件");
  246. m_wndToolBar.SetButtonInfo(5, IDC_EXIT, TBSTYLE_BUTTON, 5);
  247. m_wndToolBar.SetButtonText(5,"退出");
  248.     CRect rectToolBar;
  249. //得到按钮的大小
  250. m_wndToolBar.GetItemRect(0, &rectToolBar);
  251. //设置按钮的大小
  252. m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(20,23));
  253. //在Rebar中加入ToolBar
  254. m_wndReBar.AddBar(&m_wndToolBar);
  255. //改变一些属性
  256. REBARBANDINFO rbbi;
  257. rbbi.cbSize = sizeof(rbbi); //这个是必须填
  258. rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE|RBBIM_BACKGROUND;
  259. //工具条的宽度
  260. rbbi.cxMinChild = rectToolBar.Width();
  261. //高度
  262. rbbi.cyMinChild = rectToolBar.Height();
  263. //下面这行代码是为工具条加入背景位图,请注意上rbbi.fMask中RBBIM_BACKGROUND标志
  264. rbbi.hbmBack = LoadBitmap(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_TOOLBARBKGND));
  265. rbbi.cx = rbbi.cxIdeal = rectToolBar.Width() * 10;
  266. m_wndReBar.GetReBarCtrl().SetBandInfo(0, &rbbi);
  267. return TRUE;
  268. }
  269. void CMainFrame::OnAppWzd()
  270. {
  271.    PlayResource(IDR_PRESSBTN);
  272. }
  273. void CMainFrame::OnPre()
  274. {
  275. PlayResource(IDR_PRESSBTN);
  276. }
  277. void CMainFrame::OnBack()
  278. {
  279. PlayResource(IDR_PRESSBTN);
  280. }
  281. void CMainFrame::OnHelp()
  282. {
  283. PlayResource(IDR_PRESSBTN);
  284.  
  285. }
  286. void CMainFrame::OnEmail()
  287. {
  288. PlayResource(IDR_PRESSBTN);
  289. }
  290. void CMainFrame::OnExit()
  291. {
  292. PlayResource(IDR_PRESSBTN);
  293. CFrameWnd::OnClose();
  294. }
  295. BOOL CMainFrame::PlayResource(WORD wResourceID)
  296. {
  297. // Get the handle to the current instance of the application
  298. HINSTANCE hInstance = AfxGetInstanceHandle();
  299.     ASSERT (hInstance != NULL);
  300. // Find the WAVE resource
  301. HRSRC hResInfo = 
  302. FindResource(hInstance, MAKEINTRESOURCE(wResourceID), _T("WAVE"));
  303. if(hResInfo == NULL)
  304. return FALSE;
  305. // Load the WAVE resource
  306.     HANDLE hRes = LoadResource(hInstance, hResInfo);
  307. if (hRes == NULL)
  308. return FALSE;
  309.     
  310. // Lock the WAVE resource and play it
  311.     LPSTR lpRes = (LPSTR) LockResource(hRes);
  312. if(lpRes==NULL)
  313. return FALSE;
  314.     
  315. if (sndPlaySound(lpRes, SND_MEMORY | SND_ASYNC) == NULL)
  316. return FALSE;
  317.     // Free the WAVE resource and return success or failure.
  318.     FreeResource(hRes);
  319. return TRUE;
  320. }
  321. void CMainFrame::OnSizing(UINT fwSide, LPRECT pRect) 
  322. {//改变框架的大小处理消息
  323.  
  324. CFrameWnd::OnSizing(fwSide, pRect);
  325. // TODO: Add your message handler code here
  326. CQQView* pView=CQQView::GetView();
  327.     RestorViewBmp();//改变大小时,视图区重画,
  328.                 //显示在视图区的图像也被擦除,应该恢复
  329. if(pView->nImgTypeInView==12)
  330. {
  331. page3.bDrawTreeImage=TRUE;
  332. }
  333. if(pView->nImgTypeInView==13)
  334. {
  335. page3.bDrawFrameImage=TRUE;
  336. }
  337. if(pView->nImgTypeInView==0)
  338. {
  339. pView->bFirstRun=TRUE;
  340. }
  341. }
  342. void CMainFrame::RestorViewBmp()
  343. {//因为如窗口大小改变等原因引起视图区重画,恢复视图区先前显示的图像
  344. CQQView* pView=CQQView::GetView();
  345. pView->UpdateData(TRUE);
  346. CDC* pDC=pView->GetDC();
  347.     CRect rect;
  348. pView->GetClientRect(&rect);
  349. // pDC->FillSolidRect(rect,pDC->GetBkColor());
  350. CBitmap* m_bitmap=CBitmap::FromHandle(pView->m_CurScreenBitmap);
  351. CDC MemDC;
  352. MemDC.CreateCompatibleDC(pDC);
  353. MemDC.SelectObject(m_bitmap);
  354. pDC->BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
  355. }
  356. void CMainFrame::DoDataExchange(CDataExchange* pDX) 
  357. {
  358. // TODO: Add your specialized code here and/or call the base class
  359. DDX_Control(pDX, IDC_CLOCK, m_clock);
  360. CFrameWnd::DoDataExchange(pDX);
  361. }