📄 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 + -