?? infolookdialog.cpp
字號:
// InfoLookDialog.cpp : implementation file
//
#include "stdafx.h"
#include "qq.h"
#include "InfoLookDialog.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define AW_CENTER 0x00000010
/////////////////////////////////////////////////////////////////////////////
// CInfoLookDialog dialog
CInfoLookDialog::CInfoLookDialog(CWnd* pParent /*=NULL*/)
: CDialog(CInfoLookDialog::IDD, pParent)
{
//{{AFX_DATA_INIT(CInfoLookDialog)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CInfoLookDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CInfoLookDialog)
DDX_Control(pDX, IDC_EDIT_SHOWTEXT, m_EditTextShow);
DDX_Control(pDX, IDC_LIST_CTRL_MODE,m_cTabListMode );
DDX_Control(pDX, IDC_LIST_CTRL, m_cListCtrl);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CInfoLookDialog, CDialog)
//{{AFX_MSG_MAP(CInfoLookDialog)
ON_NOTIFY(TCN_SELCHANGE, IDC_LIST_CTRL_MODE, OnSelchangeListCtrlMode)
ON_NOTIFY(NM_CLICK, IDC_LIST_CTRL, OnClickListCtrl)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CInfoLookDialog message handlers
BOOL CInfoLookDialog::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
// Initial extended style for the list control on this dialog
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
動態顯示對話框
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
this->CenterWindow();
// HINSTANCE m_hInst=LoadLibrary("user32.dll");
// typedef BOOL(WINAPI* LPANIMATEWND)(HWND,DWORD,DWORD);
// LPANIMATEWND m_aniwnd=(LPANIMATEWND)GetProcAddress(m_hInst,"AnimateWindow");
// m_aniwnd(this->GetSafeHwnd(),650,AW_CENTER);
/*----------------------------------------------------------------*/
DWORD dwStyle = m_cListCtrl.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT;
m_cListCtrl.SetExtendedStyle(dwStyle);
m_cListCtrl.ModifyStyle(0, LVS_REPORT);
// Setup the tab header
InitTabCtrl();
// Setup the column headings
SetListCtrlColsNames(0);
// Create the image list that is attached to the list control
InitImageList();
// Insert the default dummy items
//set the edit text
m_EditTextShow.SetWindowText("");
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CInfoLookDialog::InitTabCtrl()
{//設置表頭的名字
m_cTabListMode.InsertItem(0, _T("客人"));
m_cTabListMode.InsertItem(1, _T("房間"));
m_cTabListMode.InsertItem(2, _T("帳單"));
m_cTabListMode.InsertItem(3, _T("服務"));
m_cTabListMode.InsertItem(4, _T("食物"));
m_cTabListMode.InsertItem(5, _T("職員"));
}
void CInfoLookDialog::SetListCtrlColsNames(int nTabMode)
{//根據不同的表頭設置不同的標題
// Insert some columns
CRect rect;
m_cListCtrl.GetClientRect(&rect);
int nColInterval = rect.Width();//設置單位寬度
CHeaderCtrl* pHdr=m_cListCtrl.GetHeaderCtrl();
int n=pHdr->GetItemCount();
switch(nTabMode)
{
case 0/*客人模式*/:
m_cListCtrl.InsertColumn(0,_T("HandCode"),LVCFMT_LEFT,nColInterval/6+30);
m_cListCtrl.InsertColumn(1,_T("Name"),LVCFMT_LEFT,nColInterval/6+10);
m_cListCtrl.InsertColumn(2,_T("GuestType"),LVCFMT_LEFT,nColInterval/6);
m_cListCtrl.InsertColumn(3,_T("Sex"),LVCFMT_LEFT,nColInterval/6);
m_cListCtrl.InsertColumn(4,_T("Certificate"),LVCFMT_LEFT,nColInterval/6+5);
m_cListCtrl.InsertColumn(5,_T("CertifyCode"),LVCFMT_LEFT,nColInterval/6+10);
m_cListCtrl.InsertColumn(6,_T("IsMember"),LVCFMT_LEFT,nColInterval/6);
m_cListCtrl.InsertColumn(7,_T("IsMaster"),LVCFMT_LEFT,nColInterval/6);
m_cListCtrl.InsertColumn(8,_T("GroupID"),LVCFMT_LEFT,nColInterval/6+5);
m_cListCtrl.InsertColumn(9,_T("GuestNum"),LVCFMT_LEFT,nColInterval/6+5);
m_cListCtrl.InsertColumn(10,_T("RoomNum"),LVCFMT_LEFT,nColInterval/6+5);
m_cListCtrl.InsertColumn(11,_T("RoomCode"),LVCFMT_LEFT,nColInterval/6+5);
break;
case 1:
m_cListCtrl.InsertColumn(0,_T("RoomCode"),LVCFMT_LEFT,nColInterval/3);
m_cListCtrl.InsertColumn(1,_T("RoomType"),LVCFMT_LEFT,nColInterval/6);
m_cListCtrl.InsertColumn(2,_T("Floor"),LVCFMT_LEFT,nColInterval/6);
m_cListCtrl.InsertColumn(3,_T("Phone"),LVCFMT_LEFT,nColInterval/3);
m_cListCtrl.InsertColumn(4,_T("RoomStatus"),LVCFMT_LEFT,nColInterval/6);
m_cListCtrl.InsertColumn(5,_T("PriceType"),LVCFMT_LEFT,nColInterval/6);
m_cListCtrl.InsertColumn(6,_T("Price"),LVCFMT_LEFT,nColInterval/6);
break;
case 2:
m_cListCtrl.InsertColumn(0,_T("帳單碼"),LVCFMT_LEFT,nColInterval/6);
m_cListCtrl.InsertColumn(1,_T("手牌號碼"),LVCFMT_LEFT,nColInterval/6);
m_cListCtrl.InsertColumn(2,_T("總數"),LVCFMT_LEFT,nColInterval/6);
m_cListCtrl.InsertColumn(3,_T("實付數"),LVCFMT_LEFT,nColInterval/6);
m_cListCtrl.InsertColumn(4,_T("折扣率"),LVCFMT_LEFT,nColInterval/6);
m_cListCtrl.InsertColumn(5,_T("是/否已付"),LVCFMT_LEFT,nColInterval/6);
break;
case 3:
m_cListCtrl.InsertColumn(0,_T("服務名稱"),LVCFMT_LEFT,nColInterval/2);
m_cListCtrl.InsertColumn(1,_T("服務價格"),LVCFMT_LEFT,nColInterval/2);
break;
case 4:
m_cListCtrl.InsertColumn(0,_T("食物名稱"),LVCFMT_LEFT,nColInterval/2);
m_cListCtrl.InsertColumn(1,_T("食物價格"),LVCFMT_LEFT,nColInterval/2);
break;
case 5:
m_cListCtrl.InsertColumn(0,_T("員工編號"),LVCFMT_LEFT,nColInterval/3);
m_cListCtrl.InsertColumn(1,_T("員工名字"),LVCFMT_LEFT,nColInterval/3);
m_cListCtrl.InsertColumn(2,_T("所屬部們"),LVCFMT_LEFT,nColInterval/3);
break;
}
}
void CInfoLookDialog::InitImageList()
{
// Create 256 color image lists
HIMAGELIST hList = ImageList_Create(32,32, ILC_COLOR8 |ILC_MASK , 8, 1);
m_cImageListNormal.Attach(hList);
hList = ImageList_Create(16, 16, ILC_COLOR8 | ILC_MASK, 8, 1);
m_cImageListSmall.Attach(hList);
// Load the large icons
CBitmap cBmp;
cBmp.LoadBitmap(IDB_IMAGES_NORMAL);
m_cImageListNormal.Add(&cBmp, RGB(255,0, 255));
cBmp.DeleteObject();
// Load the small icons
cBmp.LoadBitmap(IDB_IMAGES_SMALL);
m_cImageListSmall.Add(&cBmp, RGB(255,0, 255));
// Attach them
m_cListCtrl.SetImageList(&m_cImageListNormal, LVSIL_NORMAL);
m_cListCtrl.SetImageList(&m_cImageListSmall, LVSIL_SMALL);
}
void CInfoLookDialog::InsertItems(int nTab)
{//插入全部子項目
//刪除所有的項目
m_cListCtrl.DeleteAllItems();//清空
CString psztext[6][100][12];
int i=0,j=0,k=0;
for(i=0;i<6;i++)
{
for(j=0;j<100;j++)
{
for(k=0;k<12;k++)
{
psztext[i][j][k]=m_Page1.pszText[i][j][k];//拷貝字符
}
}
}
LVITEM lvi;
//根據nTab的值畫不同的項目表
switch(nTab)
{
case 0://客人
for(i=0;i<m_Page1.nTablesItems[0];i++)
{
//插入第一個頭
lvi.mask = LVIF_IMAGE | LVIF_TEXT;;
lvi.iItem = i;
lvi.iSubItem = 0;
lvi.pszText = psztext[0][i][0].GetBuffer(psztext[0][i][0].GetLength());
lvi.iImage = i%8; // There are 8 images in the image list
m_cListCtrl.InsertItem(&lvi);
for(j=1;j<12;j++)
{//插入后面的項目
lvi.iSubItem =j;
lvi.pszText = psztext[0][i][j].GetBuffer(psztext[0][i][j].GetLength());
m_cListCtrl.SetItem(&lvi);
}
}
break;
case 1://房間信息顯示
for(i=0;i<m_Page1.nTablesItems[1];i++)
{
//插入第一個頭
lvi.mask = LVIF_IMAGE | LVIF_TEXT;
lvi.iItem = i;
lvi.iSubItem = 0;
lvi.pszText = psztext[1][i][0].GetBuffer(psztext[1][i][0].GetLength());
lvi.iImage = i%8; // There are 8 images in the image list
m_cListCtrl.InsertItem(&lvi);
for(j=1;j<7;j++)
{//插入后面的項目
lvi.iSubItem =j;
lvi.pszText = psztext[1][i][j].GetBuffer(psztext[1][i][j].GetLength());
m_cListCtrl.SetItem(&lvi);
}
}
break;
case 2://帳單
for(i=0;i<m_Page1.nTablesItems[2];i++)
{
//插入第一個頭
lvi.mask =LVIF_IMAGE | LVIF_TEXT;
lvi.iItem = i;
lvi.iSubItem = 0;
lvi.pszText = psztext[2][i][0].GetBuffer(psztext[2][i][0].GetLength());
lvi.iImage = i%8; // There are 8 images in the image list
m_cListCtrl.InsertItem(&lvi);
for(j=1;j<6;j++)
{//插入后面的項目
lvi.iSubItem =j;
lvi.pszText = psztext[2][i][j].GetBuffer(psztext[2][i][j].GetLength());
m_cListCtrl.SetItem(&lvi);
}
}
break;
case 3:
for(i=0;i<m_Page1.nTablesItems[3];i++)
{
//插入第一個頭
lvi.mask =LVIF_IMAGE | LVIF_TEXT;
lvi.iItem = i;
lvi.iSubItem = 0;
lvi.pszText = psztext[3][i][0].GetBuffer(psztext[3][i][0].GetLength());
lvi.iImage = i%8; // There are 8 images in the image list
m_cListCtrl.InsertItem(&lvi);
for(j=1;j<2;j++)
{//插入后面的項目
lvi.iSubItem =j;
lvi.pszText = psztext[3][i][j].GetBuffer(psztext[3][i][j].GetLength());
m_cListCtrl.SetItem(&lvi);
}
}
break;
case 4:
for(i=0;i<m_Page1.nTablesItems[4];i++)
{
//插入第一個頭
lvi.mask =LVIF_IMAGE | LVIF_TEXT;
lvi.iItem = i;
lvi.iSubItem = 0;
lvi.pszText = psztext[4][i][0].GetBuffer(psztext[4][i][0].GetLength());
lvi.iImage = i%8; // There are 8 images in the image list
m_cListCtrl.InsertItem(&lvi);
for(j=1;j<2;j++)
{//插入后面的項目
lvi.iSubItem =j;
lvi.pszText = psztext[4][i][j].GetBuffer(psztext[4][i][j].GetLength());
m_cListCtrl.SetItem(&lvi);
}
}
break;
case 5:
for(i=0;i<m_Page1.nTablesItems[5];i++)
{
//插入第一個頭
lvi.mask =LVIF_IMAGE | LVIF_TEXT;
lvi.iItem = i;
lvi.iSubItem = 0;
lvi.pszText = psztext[5][i][0].GetBuffer(psztext[5][i][0].GetLength());
lvi.iImage = i%8; // There are 8 images in the image list
m_cListCtrl.InsertItem(&lvi);
for(j=1;j<3;j++)
{//插入后面的項目
lvi.iSubItem =j;
lvi.pszText =psztext[5][i][j].GetBuffer(psztext[5][i][j].GetLength());
m_cListCtrl.SetItem(&lvi);
}
}
break;
}
}
void CInfoLookDialog::OnSelchangeListCtrlMode(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
// Get the current data and don't redraw while we decide what to do.
UpdateData(TRUE);
m_cListCtrl.SetRedraw(FALSE);
// Remove whatever style is there currently
m_cListCtrl.ModifyStyle(0, LVS_REPORT);
int i=0;
// Switch the tab mode
switch (m_cTabListMode.GetCurSel())//draw the listctrl there is a bug!!!!
{
case 0: // Guest
SetListCtrlColsNames(0);
InsertItems(0);
break;
case 1: // Room
// ClearHeaderCtrl();
SetListCtrlColsNames(1);
InsertItems(1);
break;
case 2: // Bill
SetListCtrlColsNames(2);
InsertItems(2);
break;
case 3: // Server
// ClearHeaderCtrl();
SetListCtrlColsNames(3);
InsertItems(3);
break;
case 4: // Food
// ClearHeaderCtrl();
SetListCtrlColsNames(4);
InsertItems(4);
break;
case 5: // Employer
// ClearHeaderCtrl();
SetListCtrlColsNames(5);
InsertItems(5);
break;
}
// Fill the list control
m_cListCtrl.SetRedraw(TRUE);
*pResult = 0;
}
void CInfoLookDialog::OnOK()
{
// TODO: Add extra validation here
CDialog::OnOK();
}
void CInfoLookDialog::OnCancel()
{
// TODO: Add extra cleanup here
// SendMessage(WM_COMMAND,WM_SETPOS,0);
// m_Page1.m_CoolProgress.SetPos(0);
CDialog::OnCancel();
}
void CInfoLookDialog::OnClickListCtrl(NMHDR* pNMHDR, LRESULT* pResult)
{//選擇了listctrl中的一個項目
// TODO: Add your control notification handler code here
m_EditTextShow.SetWindowText("");//清空
CRect rect;
m_EditTextShow.GetClientRect(&rect);
POSITION pos=m_cListCtrl.GetFirstSelectedItemPosition();
while (pos)
{
int nSel=m_cListCtrl.GetNextSelectedItem(pos);
CString str=_T("");
int nMode=m_cTabListMode.GetCurSel();
int i=0;
//get the CHeaderCtrl pointer
CHeaderCtrl* pHeader=(CHeaderCtrl*)m_cListCtrl.GetHeaderCtrl();
HDITEM Hditem;
TCHAR lpBuffer[256];
Hditem.mask=HDI_TEXT;
Hditem.pszText=lpBuffer;
Hditem.cchTextMax=256;
switch(nMode)
{
case 0://Guest
for(i=0;i<12;i++)
{//there is a bug!
pHeader->GetItem(i,&Hditem);//get the header item
str=lpBuffer;
str+=":";
// str=str+":\t"+m_cListCtrl.GetItemText(nSel,i);
m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect);
}
// m_EditTextShow.GetScrollBarCtrl(SB_VERT)->SetScrollPos(0,TRUE);
// m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE);
// m_EditTextShow.ScrollWindow(0,-m_EditTextShow.GetScrollPos(SB_VERT),NULL,NULL);
// m_EditTextShow.UpdateWindow();
break;
case 1://Room
for(i=0;i<7;i++)
{//there is a bug!打印出來的結果排列不整齊
pHeader->GetItem(i,&Hditem);//get the header item
str=lpBuffer;
str+=":";
// str=str+":\t"+m_cListCtrl.GetItemText(nSel,i);
m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect);
}
// m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE);
break;
case 2://Bill
for(i=0;i<6;i++)
{//there is a bug!
pHeader->GetItem(i,&Hditem);//get the header item
str=lpBuffer;
str+=":";
// str=str+":\t"+m_cListCtrl.GetItemText(nSel,i);
m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect);
}
// m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE);
break;
case 3://Server
for(i=0;i<2;i++)
{//there is a bug!
pHeader->GetItem(i,&Hditem);//get the header item
str=lpBuffer;
str+=":";
// str=str+":\t"+m_cListCtrl.GetItemText(nSel,i);
m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect);
}
// m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE);
break;
case 4://Food
for(i=0;i<2;i++)
{//there is a bug!
pHeader->GetItem(i,&Hditem);//get the header item
str=lpBuffer;
str+=":";
// str=str+":\t"+m_cListCtrl.GetItemText(nSel,i);
m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect);
}
// m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE);
break;
case 5://Employer
for(i=0;i<3;i++)
{//there is a bug!
pHeader->GetItem(i,&Hditem);//get the header item
str=lpBuffer;
str+=":";
// str=str+":\t"+m_cListCtrl.GetItemText(nSel,i);
m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect);
}
// m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE);
break;
}
}
*pResult = 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -