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

酒店行业

开发平台:

Visual C++

  1. // InfoLookDialog.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "qq.h"
  5. #include "InfoLookDialog.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. #define AW_CENTER 0x00000010
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CInfoLookDialog dialog
  14. CInfoLookDialog::CInfoLookDialog(CWnd* pParent /*=NULL*/)
  15. : CDialog(CInfoLookDialog::IDD, pParent)
  16. {
  17. //{{AFX_DATA_INIT(CInfoLookDialog)
  18. // NOTE: the ClassWizard will add member initialization here
  19. //}}AFX_DATA_INIT
  20. }
  21. void CInfoLookDialog::DoDataExchange(CDataExchange* pDX)
  22. {
  23. CDialog::DoDataExchange(pDX);
  24. //{{AFX_DATA_MAP(CInfoLookDialog)
  25. DDX_Control(pDX, IDC_EDIT_SHOWTEXT, m_EditTextShow);
  26. DDX_Control(pDX, IDC_LIST_CTRL_MODE,m_cTabListMode );
  27. DDX_Control(pDX, IDC_LIST_CTRL, m_cListCtrl);
  28. //}}AFX_DATA_MAP
  29. }
  30. BEGIN_MESSAGE_MAP(CInfoLookDialog, CDialog)
  31. //{{AFX_MSG_MAP(CInfoLookDialog)
  32. ON_NOTIFY(TCN_SELCHANGE, IDC_LIST_CTRL_MODE, OnSelchangeListCtrlMode)
  33. ON_NOTIFY(NM_CLICK, IDC_LIST_CTRL, OnClickListCtrl)
  34. //}}AFX_MSG_MAP
  35. END_MESSAGE_MAP()
  36. /////////////////////////////////////////////////////////////////////////////
  37. // CInfoLookDialog message handlers
  38. BOOL CInfoLookDialog::OnInitDialog() 
  39. {
  40. CDialog::OnInitDialog();
  41. // TODO: Add extra initialization here
  42. // Initial extended style for the list control on this dialog
  43. /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  44.                       动态显示对话框
  45. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
  46. this->CenterWindow();
  47. // HINSTANCE m_hInst=LoadLibrary("user32.dll");
  48. // typedef BOOL(WINAPI* LPANIMATEWND)(HWND,DWORD,DWORD);
  49. // LPANIMATEWND m_aniwnd=(LPANIMATEWND)GetProcAddress(m_hInst,"AnimateWindow");
  50. // m_aniwnd(this->GetSafeHwnd(),650,AW_CENTER);
  51. /*----------------------------------------------------------------*/
  52. DWORD dwStyle = m_cListCtrl.GetExtendedStyle();
  53. dwStyle |= LVS_EX_FULLROWSELECT;
  54. m_cListCtrl.SetExtendedStyle(dwStyle);
  55. m_cListCtrl.ModifyStyle(0, LVS_REPORT);
  56. // Setup the tab header
  57. InitTabCtrl();
  58. // Setup the column headings
  59. SetListCtrlColsNames(0);
  60. // Create the image list that is attached to the list control
  61. InitImageList();
  62. // Insert the default dummy items
  63. //set the edit text
  64. m_EditTextShow.SetWindowText("");
  65.     return TRUE;  // return TRUE unless you set the focus to a control
  66.               // EXCEPTION: OCX Property Pages should return FALSE
  67. }
  68. void CInfoLookDialog::InitTabCtrl()
  69. {//设置表头的名字
  70. m_cTabListMode.InsertItem(0, _T("客人"));
  71. m_cTabListMode.InsertItem(1, _T("房间"));
  72. m_cTabListMode.InsertItem(2, _T("帐单"));
  73. m_cTabListMode.InsertItem(3, _T("服务"));
  74. m_cTabListMode.InsertItem(4, _T("食物"));
  75. m_cTabListMode.InsertItem(5, _T("职员"));
  76. }
  77. void CInfoLookDialog::SetListCtrlColsNames(int nTabMode)
  78. {//根据不同的表头设置不同的标题
  79. // Insert some columns
  80. CRect rect;
  81. m_cListCtrl.GetClientRect(&rect);
  82. int nColInterval = rect.Width();//设置单位宽度
  83. CHeaderCtrl* pHdr=m_cListCtrl.GetHeaderCtrl();
  84. int n=pHdr->GetItemCount();
  85.     switch(nTabMode) 
  86. {
  87.        case 0/*客人模式*/:
  88.     m_cListCtrl.InsertColumn(0,_T("HandCode"),LVCFMT_LEFT,nColInterval/6+30);
  89. m_cListCtrl.InsertColumn(1,_T("Name"),LVCFMT_LEFT,nColInterval/6+10);
  90. m_cListCtrl.InsertColumn(2,_T("GuestType"),LVCFMT_LEFT,nColInterval/6);
  91. m_cListCtrl.InsertColumn(3,_T("Sex"),LVCFMT_LEFT,nColInterval/6);
  92. m_cListCtrl.InsertColumn(4,_T("Certificate"),LVCFMT_LEFT,nColInterval/6+5);
  93. m_cListCtrl.InsertColumn(5,_T("CertifyCode"),LVCFMT_LEFT,nColInterval/6+10);
  94. m_cListCtrl.InsertColumn(6,_T("IsMember"),LVCFMT_LEFT,nColInterval/6);
  95. m_cListCtrl.InsertColumn(7,_T("IsMaster"),LVCFMT_LEFT,nColInterval/6);
  96. m_cListCtrl.InsertColumn(8,_T("GroupID"),LVCFMT_LEFT,nColInterval/6+5);
  97. m_cListCtrl.InsertColumn(9,_T("GuestNum"),LVCFMT_LEFT,nColInterval/6+5);
  98. m_cListCtrl.InsertColumn(10,_T("RoomNum"),LVCFMT_LEFT,nColInterval/6+5);
  99. m_cListCtrl.InsertColumn(11,_T("RoomCode"),LVCFMT_LEFT,nColInterval/6+5);
  100.          break;
  101.        case 1:
  102.    m_cListCtrl.InsertColumn(0,_T("RoomCode"),LVCFMT_LEFT,nColInterval/3);
  103.    m_cListCtrl.InsertColumn(1,_T("RoomType"),LVCFMT_LEFT,nColInterval/6);
  104.    m_cListCtrl.InsertColumn(2,_T("Floor"),LVCFMT_LEFT,nColInterval/6);
  105.    m_cListCtrl.InsertColumn(3,_T("Phone"),LVCFMT_LEFT,nColInterval/3);
  106.    m_cListCtrl.InsertColumn(4,_T("RoomStatus"),LVCFMT_LEFT,nColInterval/6);
  107.    m_cListCtrl.InsertColumn(5,_T("PriceType"),LVCFMT_LEFT,nColInterval/6);
  108.    m_cListCtrl.InsertColumn(6,_T("Price"),LVCFMT_LEFT,nColInterval/6);
  109.      break;
  110.    case 2:
  111.    m_cListCtrl.InsertColumn(0,_T("帐单码"),LVCFMT_LEFT,nColInterval/6);
  112.    m_cListCtrl.InsertColumn(1,_T("手牌号码"),LVCFMT_LEFT,nColInterval/6);
  113.    m_cListCtrl.InsertColumn(2,_T("总数"),LVCFMT_LEFT,nColInterval/6);
  114.    m_cListCtrl.InsertColumn(3,_T("实付数"),LVCFMT_LEFT,nColInterval/6);
  115.    m_cListCtrl.InsertColumn(4,_T("折扣率"),LVCFMT_LEFT,nColInterval/6);
  116.    m_cListCtrl.InsertColumn(5,_T("是/否已付"),LVCFMT_LEFT,nColInterval/6);
  117.            break;
  118.    case 3:
  119.    m_cListCtrl.InsertColumn(0,_T("服务名称"),LVCFMT_LEFT,nColInterval/2);
  120.    m_cListCtrl.InsertColumn(1,_T("服务价格"),LVCFMT_LEFT,nColInterval/2);
  121.    break;
  122.    case 4:
  123.    m_cListCtrl.InsertColumn(0,_T("食物名称"),LVCFMT_LEFT,nColInterval/2);
  124.    m_cListCtrl.InsertColumn(1,_T("食物价格"),LVCFMT_LEFT,nColInterval/2);
  125.    break;
  126.    case 5:
  127.    m_cListCtrl.InsertColumn(0,_T("员工编号"),LVCFMT_LEFT,nColInterval/3);
  128.    m_cListCtrl.InsertColumn(1,_T("员工名字"),LVCFMT_LEFT,nColInterval/3);
  129.    m_cListCtrl.InsertColumn(2,_T("所属部们"),LVCFMT_LEFT,nColInterval/3);
  130.    break;
  131.     }
  132. }
  133. void CInfoLookDialog::InitImageList()
  134. {
  135.     // Create 256 color image lists
  136. HIMAGELIST hList = ImageList_Create(32,32, ILC_COLOR8 |ILC_MASK , 8, 1);
  137. m_cImageListNormal.Attach(hList);
  138. hList = ImageList_Create(16, 16, ILC_COLOR8 | ILC_MASK, 8, 1);
  139. m_cImageListSmall.Attach(hList);
  140. // Load the large icons
  141. CBitmap cBmp;
  142. cBmp.LoadBitmap(IDB_IMAGES_NORMAL);
  143. m_cImageListNormal.Add(&cBmp, RGB(255,0, 255));
  144. cBmp.DeleteObject();
  145. // Load the small icons
  146. cBmp.LoadBitmap(IDB_IMAGES_SMALL);
  147. m_cImageListSmall.Add(&cBmp, RGB(255,0, 255));
  148. // Attach them
  149. m_cListCtrl.SetImageList(&m_cImageListNormal, LVSIL_NORMAL);
  150. m_cListCtrl.SetImageList(&m_cImageListSmall, LVSIL_SMALL);
  151. }
  152. void CInfoLookDialog::InsertItems(int nTab)
  153. {//插入全部子项目
  154.     //删除所有的项目
  155. m_cListCtrl.DeleteAllItems();//清空
  156. CString psztext[6][100][12];
  157. int i=0,j=0,k=0;
  158. for(i=0;i<6;i++)
  159. {
  160. for(j=0;j<100;j++)
  161. {
  162. for(k=0;k<12;k++)
  163. {
  164. psztext[i][j][k]=m_Page1.pszText[i][j][k];//拷贝字符
  165. }
  166. }
  167. }
  168. LVITEM lvi;
  169.     //根据nTab的值画不同的项目表
  170. switch(nTab)
  171. {
  172. case 0://客人
  173.  for(i=0;i<m_Page1.nTablesItems[0];i++)
  174.  {
  175.  //插入第一个头
  176.  lvi.mask =  LVIF_IMAGE | LVIF_TEXT;;
  177.  lvi.iItem = i;
  178.  lvi.iSubItem = 0;
  179.  lvi.pszText = psztext[0][i][0].GetBuffer(psztext[0][i][0].GetLength());
  180.  lvi.iImage = i%8; // There are 8 images in the image list
  181.      m_cListCtrl.InsertItem(&lvi);
  182.  for(j=1;j<12;j++)
  183.  {//插入后面的项目
  184.  lvi.iSubItem =j;
  185.  lvi.pszText = psztext[0][i][j].GetBuffer(psztext[0][i][j].GetLength());
  186.          m_cListCtrl.SetItem(&lvi);
  187.  }
  188.  }
  189. break;
  190. case 1://房间信息显示
  191. for(i=0;i<m_Page1.nTablesItems[1];i++)
  192. {
  193. //插入第一个头
  194. lvi.mask = LVIF_IMAGE | LVIF_TEXT;
  195. lvi.iItem = i;
  196. lvi.iSubItem = 0;
  197. lvi.pszText = psztext[1][i][0].GetBuffer(psztext[1][i][0].GetLength());
  198. lvi.iImage = i%8; // There are 8 images in the image list
  199. m_cListCtrl.InsertItem(&lvi);
  200. for(j=1;j<7;j++)
  201. {//插入后面的项目
  202. lvi.iSubItem =j;
  203. lvi.pszText = psztext[1][i][j].GetBuffer(psztext[1][i][j].GetLength());
  204. m_cListCtrl.SetItem(&lvi);
  205. }
  206.  }
  207. break;
  208. case 2://帐单
  209. for(i=0;i<m_Page1.nTablesItems[2];i++)
  210. {
  211. //插入第一个头
  212. lvi.mask =LVIF_IMAGE | LVIF_TEXT;
  213. lvi.iItem = i;
  214. lvi.iSubItem = 0;
  215. lvi.pszText = psztext[2][i][0].GetBuffer(psztext[2][i][0].GetLength());
  216. lvi.iImage = i%8; // There are 8 images in the image list
  217. m_cListCtrl.InsertItem(&lvi);
  218. for(j=1;j<6;j++)
  219. {//插入后面的项目
  220. lvi.iSubItem =j;
  221. lvi.pszText = psztext[2][i][j].GetBuffer(psztext[2][i][j].GetLength());
  222. m_cListCtrl.SetItem(&lvi);
  223. }
  224.  }
  225. break;
  226. case 3:
  227. for(i=0;i<m_Page1.nTablesItems[3];i++)
  228. {
  229. //插入第一个头
  230. lvi.mask =LVIF_IMAGE | LVIF_TEXT;
  231. lvi.iItem = i;
  232. lvi.iSubItem = 0;
  233. lvi.pszText = psztext[3][i][0].GetBuffer(psztext[3][i][0].GetLength());
  234. lvi.iImage = i%8; // There are 8 images in the image list
  235. m_cListCtrl.InsertItem(&lvi);
  236. for(j=1;j<2;j++)
  237. {//插入后面的项目
  238. lvi.iSubItem =j;
  239. lvi.pszText = psztext[3][i][j].GetBuffer(psztext[3][i][j].GetLength());
  240. m_cListCtrl.SetItem(&lvi);
  241. }
  242.  }
  243. break;
  244. case 4:
  245. for(i=0;i<m_Page1.nTablesItems[4];i++)
  246. {
  247. //插入第一个头
  248. lvi.mask =LVIF_IMAGE | LVIF_TEXT;
  249. lvi.iItem = i;
  250. lvi.iSubItem = 0;
  251. lvi.pszText = psztext[4][i][0].GetBuffer(psztext[4][i][0].GetLength());
  252. lvi.iImage = i%8; // There are 8 images in the image list
  253. m_cListCtrl.InsertItem(&lvi);
  254. for(j=1;j<2;j++)
  255. {//插入后面的项目
  256. lvi.iSubItem =j;
  257. lvi.pszText = psztext[4][i][j].GetBuffer(psztext[4][i][j].GetLength());
  258. m_cListCtrl.SetItem(&lvi);
  259. }
  260.  }
  261. break;
  262. case 5:
  263. for(i=0;i<m_Page1.nTablesItems[5];i++)
  264. {
  265. //插入第一个头
  266. lvi.mask =LVIF_IMAGE | LVIF_TEXT;
  267. lvi.iItem = i;
  268. lvi.iSubItem = 0;
  269. lvi.pszText = psztext[5][i][0].GetBuffer(psztext[5][i][0].GetLength());
  270. lvi.iImage = i%8; // There are 8 images in the image list
  271. m_cListCtrl.InsertItem(&lvi);
  272. for(j=1;j<3;j++)
  273. {//插入后面的项目
  274. lvi.iSubItem =j;
  275. lvi.pszText =psztext[5][i][j].GetBuffer(psztext[5][i][j].GetLength());
  276. m_cListCtrl.SetItem(&lvi);
  277. }
  278.  }
  279. break;
  280. }
  281. }
  282. void CInfoLookDialog::OnSelchangeListCtrlMode(NMHDR* pNMHDR, LRESULT* pResult) 
  283. {
  284. // TODO: Add your control notification handler code here
  285. // Get the current data and don't redraw while we decide what to do.
  286. UpdateData(TRUE);
  287. m_cListCtrl.SetRedraw(FALSE);
  288. // Remove whatever style is there currently
  289. m_cListCtrl.ModifyStyle(0, LVS_REPORT);
  290. int i=0;
  291. // Switch the tab mode
  292.     switch (m_cTabListMode.GetCurSel())//draw the listctrl there is a bug!!!!
  293. {
  294. case 0: // Guest
  295. SetListCtrlColsNames(0);
  296. InsertItems(0);
  297. break;
  298. case 1: // Room
  299. //        ClearHeaderCtrl();
  300. SetListCtrlColsNames(1);
  301. InsertItems(1);
  302. break;
  303. case 2: // Bill
  304. SetListCtrlColsNames(2);
  305. InsertItems(2);
  306. break;
  307. case 3: // Server
  308.  //        ClearHeaderCtrl();
  309. SetListCtrlColsNames(3);
  310. InsertItems(3);
  311. break;
  312. case 4: // Food
  313.  //       ClearHeaderCtrl();
  314. SetListCtrlColsNames(4);
  315. InsertItems(4);
  316. break;
  317. case 5: // Employer
  318.  //       ClearHeaderCtrl();
  319. SetListCtrlColsNames(5);
  320. InsertItems(5);
  321. break;
  322. }
  323. // Fill the list control
  324. m_cListCtrl.SetRedraw(TRUE);
  325. *pResult = 0;
  326. }
  327. void CInfoLookDialog::OnOK() 
  328. {
  329. // TODO: Add extra validation here
  330. CDialog::OnOK();
  331. }
  332. void CInfoLookDialog::OnCancel() 
  333. {
  334. // TODO: Add extra cleanup here
  335. // SendMessage(WM_COMMAND,WM_SETPOS,0);
  336. // m_Page1.m_CoolProgress.SetPos(0);
  337. CDialog::OnCancel();
  338. }
  339. void CInfoLookDialog::OnClickListCtrl(NMHDR* pNMHDR, LRESULT* pResult) 
  340. {//选择了listctrl中的一个项目
  341. // TODO: Add your control notification handler code here
  342. m_EditTextShow.SetWindowText("");//清空
  343. CRect rect;
  344. m_EditTextShow.GetClientRect(&rect);
  345. POSITION pos=m_cListCtrl.GetFirstSelectedItemPosition();
  346. while (pos)
  347. {
  348. int nSel=m_cListCtrl.GetNextSelectedItem(pos);
  349. CString str=_T("");
  350. int nMode=m_cTabListMode.GetCurSel();
  351. int i=0;
  352. //get the CHeaderCtrl pointer
  353. CHeaderCtrl* pHeader=(CHeaderCtrl*)m_cListCtrl.GetHeaderCtrl();
  354.         HDITEM Hditem;
  355. TCHAR lpBuffer[256];
  356. Hditem.mask=HDI_TEXT;
  357. Hditem.pszText=lpBuffer;
  358. Hditem.cchTextMax=256;
  359. switch(nMode)
  360. {
  361. case 0://Guest
  362. for(i=0;i<12;i++)
  363. {//there is a bug!
  364. pHeader->GetItem(i,&Hditem);//get the header item
  365. str=lpBuffer;
  366. str+=":";
  367. // str=str+":t"+m_cListCtrl.GetItemText(nSel,i);
  368. m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect);
  369.     }
  370. // m_EditTextShow.GetScrollBarCtrl(SB_VERT)->SetScrollPos(0,TRUE);
  371. // m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE);
  372. //          m_EditTextShow.ScrollWindow(0,-m_EditTextShow.GetScrollPos(SB_VERT),NULL,NULL);
  373. //     m_EditTextShow.UpdateWindow();
  374. break;
  375. case 1://Room
  376. for(i=0;i<7;i++)
  377. {//there is a bug!打印出来的结果排列不整齐
  378. pHeader->GetItem(i,&Hditem);//get the header item
  379. str=lpBuffer;
  380. str+=":";
  381. // str=str+":t"+m_cListCtrl.GetItemText(nSel,i);
  382. m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect);
  383.     }
  384. // m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE);
  385. break;
  386. case 2://Bill
  387. for(i=0;i<6;i++)
  388. {//there is a bug!
  389. pHeader->GetItem(i,&Hditem);//get the header item
  390. str=lpBuffer;
  391. str+=":";
  392. // str=str+":t"+m_cListCtrl.GetItemText(nSel,i);
  393. m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect);
  394.     }
  395. // m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE);
  396. break;
  397. case 3://Server
  398. for(i=0;i<2;i++)
  399. {//there is a bug!
  400. pHeader->GetItem(i,&Hditem);//get the header item
  401. str=lpBuffer;
  402. str+=":";
  403. // str=str+":t"+m_cListCtrl.GetItemText(nSel,i);
  404. m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect);
  405.     }
  406. // m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE);
  407. break;
  408. case 4://Food
  409. for(i=0;i<2;i++)
  410. {//there is a bug!
  411. pHeader->GetItem(i,&Hditem);//get the header item
  412. str=lpBuffer;
  413. str+=":";
  414. // str=str+":t"+m_cListCtrl.GetItemText(nSel,i);
  415. m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect);
  416.     }
  417. // m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE);
  418. break;
  419. case 5://Employer
  420. for(i=0;i<3;i++)
  421. {//there is a bug!
  422. pHeader->GetItem(i,&Hditem);//get the header item
  423. str=lpBuffer;
  424. str+=":";
  425. // str=str+":t"+m_cListCtrl.GetItemText(nSel,i);
  426. m_EditTextShow.AppendString(str,m_cListCtrl.GetItemText(nSel,i),rect);
  427.     }
  428. // m_EditTextShow.SetScrollPos(SB_VERT,0,TRUE);
  429. break;
  430. }
  431. }
  432. *pResult = 0;
  433. }