?? mainfrm.cpp
字號:
// MainFrm.cpp : implementation of the CMainFrame class
//
#include "stdafx.h"
#include "QQ.h"
#include "QQView.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include <mmsystem.h>
#define WM_ICON_NOTIFY WM_USER+10 //自定義消息的宏定義
#include "page1.h"
#include "page2.h"
#include "page3.h"
/////////////////////////////////////////////////////////////////////////////
// CMainFrame
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_COMMAND_EX(CG_ID_VIEW_DIALOGBAR, OnBarCheck)
ON_UPDATE_COMMAND_UI(CG_ID_VIEW_DIALOGBAR, OnUpdateControlBarMenu)
//{{AFX_MSG_MAP(CMainFrame)
ON_WM_CREATE()
ON_WM_CLOSE()
ON_COMMAND(IDC_HELPTEXT, OnHelp)
ON_COMMAND(IDC_EMAIL, OnEmail)
ON_COMMAND(IDC_EXIT, OnExit)
ON_COMMAND(IDC_APPWZD, OnAppWzd)
ON_COMMAND(IDC_PRE, OnPre)
ON_COMMAND(IDC_BACK, OnBack)
ON_WM_SIZING()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
static UINT indicators[] =
{
ID_SEPARATOR, // status line indicator
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
/////////////////////////////////////////////////////////////////////////////
// CMainFrame construction/destruction
CMainFrame::CMainFrame()
{
// TODO: add member initialization code here
// pView=CQQView::GetView();
}
CMainFrame::~CMainFrame()
{
}
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
//創建擴展工具欄
if (!this->CreateExToolBar())
return -1;
/************************************************************************/
/* 在工具欄上添加數字時鐘 */
/************************************************************************/
if(!m_clock.Create("",WS_CHILD|WS_VISIBLE,CRect(0,0,135,40),this,IDC_CLOCK))
{
return -1;
}
m_wndReBar.AddBar(&m_clock,NULL, NULL, RBBS_FIXEDSIZE | RBBS_FIXEDBMP);
m_clock.SetStyle(CLEDClock::XDC_SECOND);
/*--------------------------------------------------------------*/
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
//////////////////////////////////////////////////////////////////////////
/* 創建任務欄圖標 */
//////////////////////////////////////////////////////////////////////////
//加載系統托盤區程序組
if (!m_systemIcon.Create(this,//消息通知窗口
WM_ICON_NOTIFY,//自定義消息
"酒店管理系統2003", //提示字符串
AfxGetApp()->LoadIcon(IDR_MAINFRAME),//圖標ID號
IDR_POPUP_MENU //彈出菜單ID號
))
{
return -1;
}
if (!m_wndTabBar.Create(this, CSize(110, 100), WS_CHILD | WS_VISIBLE |
CBRS_LEFT | CBRS_SIZE_DYNAMIC, AFX_IDW_TOOLBAR + 11))
{
TRACE0("Failed to create cool bar\n");
return -1; // fail to create
}
if (!m_wndListBox1.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 150, 300), &m_wndTabBar.m_wndTabCtrl, 0))
{
TRACE0("Failed to create list bar\n");
return -1; // fail to create
}
m_wndTabBar.m_wndTabCtrl.SetMode(TABMODE_GROUP);
m_wndTabBar.m_wndTabCtrl.AddPage(&m_wndListBox1, "管理", NULL);
m_wndListBox1.AddItem(0, "客房登記",ID_ROOM_REGISTER, "客人住入酒店時進行客房登記");
m_wndListBox1.AddItem(1, "選房", ID_ROOM_CHOOSE, "給客人分配房間");
m_wndListBox1.AddItem(2, "房間預定",ID_ROOM_DESTINE, "為客人進行房間預定服務");
m_wndListBox1.AddItem(3, "餐飲點菜",ID_FOOD_ORDER, "管理客人的餐飲點菜");
m_wndListBox1.AddItem(4, "帳單付款",ID_MONEY_PAY, "支付某個帳單的費用");
m_wndListBox1.AddItem(5, "服務點單",ID_SERVER_ORDER, "服務點單");
m_wndListBox1.AddItem(6, "財務結帳",ID_MONEY_CHECKOUT, "客人離開時進行費用結算");
m_wndListBox1.SetImagelist(IDB_IMAGE);
if (!m_wndListBox2.Create(WS_CHILD | WS_VISIBLE, CRect(10, 10, 200, 300), &m_wndTabBar.m_wndTabCtrl, 0))
{
TRACE0("Failed to create list bar\n");
return -1; // fail to create
}
m_wndTabBar.m_wndTabCtrl.SetMode(TABMODE_GROUP);
m_wndTabBar.m_wndTabCtrl.AddPage(&m_wndListBox2, "查詢", NULL);
m_wndListBox2.AddItem(0, "客人信息", ID_INFOLOOK_GUEST, "查看客人在酒店的情況");
m_wndListBox2.AddItem(1, "客房信息", ID_INFOLOOK_ROOM, "查看客房信息");
m_wndListBox2.AddItem(2, "帳單信息", ID_INFOLOOK_BILL, "查看帳單信息");
m_wndListBox2.AddItem(3, "服務項目", ID_INFOLOOK_SERVER, "查看酒店有哪些服務項目");
m_wndListBox2.AddItem(4, "食物信息", ID_INFOLOOK_FOOD, "查看酒店有哪些食物提供服務");
m_wndListBox2.AddItem(5, "員工信息", ID_INFOLOOK_EMPLOYER,"查看酒店的員工信息");
m_wndListBox2.AddItem(6, "消費情況", ID_INFOLOOK_CONSUME, "查看在酒店的消費情況");
m_wndListBox2.SetImagelist(IDB_IMAGE);
//////////////////////////////////////////////////////////////////////////
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
CoolMenu的安裝
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
m_CoolMenu.Attach(GetMenu()->GetSafeHmenu());//菜單連接
CCoolMenu::SubClass(this->GetSafeHwnd());//子類化
CCoolMenu::SetLogoText("hello", RGB(0, 0, 255));
CCoolMenu::SetLogoImage(IDB_LOGOBAR2,0);
CCoolMenu::SetBackGroundBmp(IDB_BKBMP);
// CCoolMenuTheme::SetTheme(MENU_STYLE_XP);
CCoolMenu::SetStyle(CCoolMenu::GetStyle() & ~CMS_ICONBAR);
CCoolMenu::SetMenuColor(RGB(255,255,255));//菜單背景色
CCoolMenu::SetIconBarColor(::GetSysColor(COLOR_3DFACE));
CCoolMenu::SetLightBarColor(RGB(61, 128, 152));//高亮欄的邊框的顏色
CCoolMenu::SetLightBarStartColor(RGB(255, 255, 255));
CCoolMenu::SetLightBarEndColor(RGB(77,109, 120));
CCoolMenu::SetTextColor(RGB(0, 0, 0));
CCoolMenu::SetHighLightColor(RGB(20, 20, 50));
CMenuWndHook::m_crFrame[0] = RGB(120, 120, 158);
CMenuWndHook::m_crFrame[1] = RGB(48, 50, 48);
CMenuWndHook::m_crFrame[2] = RGB(255, 255, 255);
CMenuWndHook::m_crFrame[3] = RGB(168, 168, 210);
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/ // 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_wndDialogBar\n"); 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
m_wndRollupCtrl.Create(WS_VISIBLE|WS_CHILD, CRect(4,0,148,1000), &m_wndDialogBar, 2);
//Add some pages
//page1
m_wndRollupCtrl.InsertPage("高級查詢",IDD_PAGE1,RUNTIME_CLASS(CPage1), 10);
//page2
m_wndRollupCtrl.InsertPage("數據分析",IDD_PAGE2,RUNTIME_CLASS(CPage2));
//page3
m_wndRollupCtrl.InsertPage("酒店概況",IDD_PAGE3,RUNTIME_CLASS(CPage3));
/////
HICON m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics
#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
CFrameWnd::AssertValid();
}
void CMainFrame::Dump(CDumpContext& dc) const
{
CFrameWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
void CMainFrame::OnClose()
{
// TODO: Add your message handler code here and/or call default
// new CFaderWnd(this,2000);
// AfxGetMainWnd()->ShowWindow(SW_HIDE);
CFrameWnd::OnClose();
}
BOOL CMainFrame::CreateExToolBar()
{
CImageList img;
CString str;
if(!m_wndReBar.Create(this))
{
return -1;
}
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC))
{
return -1;
}
//下面的代碼是設置按鈕的寬度和長度
m_wndToolBar.GetToolBarCtrl().SetButtonWidth(50,90);
//下面的代碼是設置"熱"的位圖
img.Create(25, 25, ILC_COLOR16|ILC_MASK,2,2);
img.SetBkColor(::GetSysColor(COLOR_BTNFACE));
img.Add(AfxGetApp()->LoadIcon(IDI_WZD));//應用程序向導
img.Add(AfxGetApp()->LoadIcon(IDI_PRE));//前臺程序
img.Add(AfxGetApp()->LoadIcon(IDI_BACK));//后臺程序
img.Add(AfxGetApp()->LoadIcon(IDI_HELP));//幫助
img.Add(AfxGetApp()->LoadIcon(IDI_EMAIL));//郵件
img.Add(AfxGetApp()->LoadIcon(IDI_EXIT));//退出
m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
img.Detach();
//下面的代碼是設置"冷"的位圖
img.Create(23, 23, ILC_COLOR16|ILC_MASK, 2,2);
img.SetBkColor(::GetSysColor(COLOR_BTNFACE));
img.Add(AfxGetApp()->LoadIcon(IDI_WZD));//應用程序向導
img.Add(AfxGetApp()->LoadIcon(IDI_PRE));//前臺程序
img.Add(AfxGetApp()->LoadIcon(IDI_BACK));//后臺程序
img.Add(AfxGetApp()->LoadIcon(IDI_HELP));//幫助
img.Add(AfxGetApp()->LoadIcon(IDI_EMAIL));//郵件
img.Add(AfxGetApp()->LoadIcon(IDI_EXIT));//退出
m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
img.Detach();
//改變屬性
m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT |CBRS_TOOLTIPS | TBSTYLE_TRANSPARENT|TBBS_CHECKBOX );
m_wndToolBar.SetButtons(NULL,6);
// set up each toolbar button設置文字
m_wndToolBar.SetButtonInfo(0, IDC_APPWZD, TBSTYLE_BUTTON, 0);
m_wndToolBar.SetButtonText(0, "向導");
m_wndToolBar.SetButtonInfo(1, IDC_PRE, TBSTYLE_BUTTON, 1);
m_wndToolBar.SetButtonText(1, "前臺模式");
m_wndToolBar.SetButtonInfo(2, IDC_BACK, TBSTYLE_BUTTON, 2);
m_wndToolBar.SetButtonText(2, "后臺模式");
m_wndToolBar.SetButtonInfo(3, IDC_HELPTEXT, TBSTYLE_BUTTON, 3);
m_wndToolBar.SetButtonText(3, "幫助");
m_wndToolBar.SetButtonInfo(4, IDC_EMAIL, TBSTYLE_BUTTON, 4);
m_wndToolBar.SetButtonText(4, "郵件");
m_wndToolBar.SetButtonInfo(5, IDC_EXIT, TBSTYLE_BUTTON, 5);
m_wndToolBar.SetButtonText(5,"退出");
CRect rectToolBar;
//得到按鈕的大小
m_wndToolBar.GetItemRect(0, &rectToolBar);
//設置按鈕的大小
m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(20,23));
//在Rebar中加入ToolBar
m_wndReBar.AddBar(&m_wndToolBar);
//改變一些屬性
REBARBANDINFO rbbi;
rbbi.cbSize = sizeof(rbbi); //這個是必須填
rbbi.fMask = RBBIM_CHILDSIZE | RBBIM_IDEALSIZE | RBBIM_SIZE|RBBIM_BACKGROUND;
//工具條的寬度
rbbi.cxMinChild = rectToolBar.Width();
//高度
rbbi.cyMinChild = rectToolBar.Height();
//下面這行代碼是為工具條加入背景位圖,請注意上rbbi.fMask中RBBIM_BACKGROUND標志
rbbi.hbmBack = LoadBitmap(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_TOOLBARBKGND));
rbbi.cx = rbbi.cxIdeal = rectToolBar.Width() * 10;
m_wndReBar.GetReBarCtrl().SetBandInfo(0, &rbbi);
return TRUE;
}
void CMainFrame::OnAppWzd()
{
PlayResource(IDR_PRESSBTN);
}
void CMainFrame::OnPre()
{
PlayResource(IDR_PRESSBTN);
}
void CMainFrame::OnBack()
{
PlayResource(IDR_PRESSBTN);
}
void CMainFrame::OnHelp()
{
PlayResource(IDR_PRESSBTN);
}
void CMainFrame::OnEmail()
{
PlayResource(IDR_PRESSBTN);
}
void CMainFrame::OnExit()
{
PlayResource(IDR_PRESSBTN);
CFrameWnd::OnClose();
}
BOOL CMainFrame::PlayResource(WORD wResourceID)
{
// Get the handle to the current instance of the application
HINSTANCE hInstance = AfxGetInstanceHandle();
ASSERT (hInstance != NULL);
// Find the WAVE resource
HRSRC hResInfo =
FindResource(hInstance, MAKEINTRESOURCE(wResourceID), _T("WAVE"));
if(hResInfo == NULL)
return FALSE;
// Load the WAVE resource
HANDLE hRes = LoadResource(hInstance, hResInfo);
if (hRes == NULL)
return FALSE;
// Lock the WAVE resource and play it
LPSTR lpRes = (LPSTR) LockResource(hRes);
if(lpRes==NULL)
return FALSE;
if (sndPlaySound(lpRes, SND_MEMORY | SND_ASYNC) == NULL)
return FALSE;
// Free the WAVE resource and return success or failure.
FreeResource(hRes);
return TRUE;
}
void CMainFrame::OnSizing(UINT fwSide, LPRECT pRect)
{//改變框架的大小處理消息
CFrameWnd::OnSizing(fwSide, pRect);
// TODO: Add your message handler code here
CQQView* pView=CQQView::GetView();
RestorViewBmp();//改變大小時,視圖區重畫,
//顯示在視圖區的圖像也被擦除,應該恢復
if(pView->nImgTypeInView==12)
{
page3.bDrawTreeImage=TRUE;
}
if(pView->nImgTypeInView==13)
{
page3.bDrawFrameImage=TRUE;
}
if(pView->nImgTypeInView==0)
{
pView->bFirstRun=TRUE;
}
}
void CMainFrame::RestorViewBmp()
{//因為如窗口大小改變等原因引起視圖區重畫,恢復視圖區先前顯示的圖像
CQQView* pView=CQQView::GetView();
pView->UpdateData(TRUE);
CDC* pDC=pView->GetDC();
CRect rect;
pView->GetClientRect(&rect);
// pDC->FillSolidRect(rect,pDC->GetBkColor());
CBitmap* m_bitmap=CBitmap::FromHandle(pView->m_CurScreenBitmap);
CDC MemDC;
MemDC.CreateCompatibleDC(pDC);
MemDC.SelectObject(m_bitmap);
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&MemDC,0,0,SRCCOPY);
}
void CMainFrame::DoDataExchange(CDataExchange* pDX)
{
// TODO: Add your specialized code here and/or call the base class
DDX_Control(pDX, IDC_CLOCK, m_clock);
CFrameWnd::DoDataExchange(pDX);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -