分享一段用VC調用預設印表機列印菜單的程式

來源:互聯網
上載者:User

1. 擷取預設印表機名稱

BOOL GetDefaultPrinter(LPTSTR   szPrinterName,   int   nPrintNameBufferLen) { *szPrinterName   =   0; CPrintDialog   pd(FALSE); if   (pd.GetDefaults()) { if   (pd.m_pd.hDC)   DeleteDC(pd.m_pd.hDC); if   (pd.m_pd.hDevNames) { LPDEVNAMES   pdn   =   (LPDEVNAMES)GlobalLock(pd.m_pd.hDevNames); nPrintNameBufferLen--; *(szPrinterName   +   nPrintNameBufferLen)   =   0; _tcsncpy(szPrinterName,   (LPTSTR)pdn   +   pdn-> wDeviceOffset,   nPrintNameBufferLen);   //印表機名稱 GlobalUnlock(pd.m_pd.hDevNames); GlobalFree(pd.m_pd.hDevNames); } } return   (*szPrinterName); }

2. 列印菜單

BOOL PrintMenu(CString &strContent){ParserOrder parser;if(FALSE == parser.parserOrderText(strContent)){return FALSE;}DOCINFO     di; CDC             dc; HDC             hDC; ZeroMemory(&di,   sizeof(DOCINFO)); di.cbSize   =   sizeof(DOCINFO);   di.lpszDocName   =   _T("order");   di.fwType   =   DI_APPBANDING; hDC   =   CreateDC( _T("WINSPOOL "),  m_PrinterName,   NULL,   NULL); dc.Attach(hDC); dc.StartDoc(&di);   dc.StartPage();CString str;int top =LINE_INTERVAL;dc.TextOut(LEFT_MARGIN+50, top ,  _T("點菜單")); top+=LINE_HEIGHT;str=_T("餐台號")+parser.m_TableId+_T("下單時間:")+parser.m_StreamLine;dc.TextOut(LEFT_MARGIN, top , str); top+=LINE_HEIGHT;str=_T("人數:")+parser.m_PersonCount;dc.TextOut(LEFT_MARGIN, top ,  str); top+=LINE_HEIGHT;str=_T("點菜詳情:");dc.TextOut(LEFT_MARGIN, top , str); top+=LINE_HEIGHT;str=_T("名稱    數量   單位單價   小計");dc.TextOut(LEFT_MARGIN, top , str); POSITION pos=NULL;OrderItem *pItem;pos=parser.m_Items.GetHeadPosition();while(pos!=NULL){pItem=(OrderItem *)parser.m_Items.GetNext(pos);int col,row;top+=LINE_HEIGHT;str=pItem->dishName+_T("  ")+pItem->dishNum+_T("  ")+pItem->dishUnit+_T("")+pItem->dishPrice+_T("  ")+pItem->dishPrice;dc.TextOut(LEFT_MARGIN, top , str); if(pItem->dishMake.GetLength()>0){top+=LINE_HEIGHT;dc.TextOut(LEFT_MARGIN, top , pItem->dishMake); }}top+=LINE_HEIGHT;str=_T("金額總計:")+parser.m_Price;dc.TextOut(LEFT_MARGIN, top , str); dc.EndPage();   dc.EndDoc(); dc.DeleteDC(); return TRUE; }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.