⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_35184.htm

📁 vc
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<p>
序号:35184 发表者:ohye212 发表日期:2003-04-04 15:33:55
<br>主题:1000分!!!!有本事来那!!!!
<br>内容:用API打印,只有字母,数字,汉字显示为乱码!!!!急!!!!!! <BR><BR><BR>typedef struct tagColAtt<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nColIndex;<BR>&nbsp;&nbsp;&nbsp;&nbsp;CString strColText;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nPrintX;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nSubItemIndex;<BR>}COLATT;<BR><BR>BOOL PrintListCtrl(CListCtrl &amp;list)<BR>{<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINTDLG pd;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pd.lStructSize = sizeof(PRINTDLG);<BR>&nbsp;&nbsp;&nbsp;&nbsp;pd.Flags = PD_RETURNDC;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pd.hDC = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pd.hwndOwner = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pd.hInstance = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pd.nMaxPage = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pd.nMinPage = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pd.nFromPage = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pd.nToPage&nbsp;&nbsp;= 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pd.nCopies = 1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pd.hDevMode = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;pd.hDevNames = NULL;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//显示打印对话框,由用户来设定纸张大小等。<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(!PrintDlg(&amp;pd)) return FALSE; <BR>&nbsp;&nbsp;&nbsp;&nbsp;ASSERT(pd.hDC!=NULL);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;int nHorRes = GetDeviceCaps(pd.hDC, HORZRES);&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nVerRes = GetDeviceCaps(pd.hDC, VERTRES);<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nXMargin = 2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nYMargin = 2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;TEXTMETRIC tm;<BR>&nbsp;&nbsp;&nbsp;&nbsp;GetTextMetrics(pd.hDC, &amp;tm);<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nCharHeight = tm.tmHeight;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nCharWidth = tm.tmAveCharWidth;<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CHeaderCtrl* pHeader = list.GetHeaderCtrl();<BR>&nbsp;&nbsp;&nbsp;&nbsp;//获得行,列的个数<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nColCount = pHeader-&gt;GetItemCount();<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nLineCount = list.GetItemCount();<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int ColOrderArray[100];<BR>&nbsp;&nbsp;&nbsp;&nbsp;COLATT ca[100];<BR>&nbsp;&nbsp;&nbsp;&nbsp;list.GetColumnOrderArray(ColOrderArray, nColCount);<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nColX =nXMargin*nCharWidth;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//检索各列的信息,确定列标题的内容长度。<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(int i =0 ; i&lt; nColCount; i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ca[i].nColIndex = ColOrderArray[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LVCOLUMN lvc;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char text[100];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lvc.mask = LVCF_TEXT|LVCF_SUBITEM;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lvc.pszText = text;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lvc.cchTextMax = 100;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.GetColumn(ca[i].nColIndex, &amp;lvc);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ca[i].strColText = lvc.pszText;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ca[i].nSubItemIndex = lvc.iSubItem;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ca[i].nPrintX = nColX;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nColX += nCharWidth * strlen(ca[i].strColText);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(nColX &gt; nHorRes) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DeleteDC(pd.hDC);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox("字段太多,无法在一行内打印,请试用较大的纸,或横向打印。");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return FALSE;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;DOCINFO di;<BR>&nbsp;&nbsp;&nbsp;&nbsp;di.cbSize = sizeof(DOCINFO);<BR>&nbsp;&nbsp;&nbsp;&nbsp;di.lpszDocName = "ListCtrl Data Printing"; <BR>&nbsp;&nbsp;&nbsp;&nbsp;di.lpszOutput = (LPTSTR) NULL; <BR>&nbsp;&nbsp;&nbsp;&nbsp;di.lpszDatatype = (LPTSTR) NULL; <BR>&nbsp;&nbsp;&nbsp;&nbsp;di.fwType = 0; <BR>&nbsp;&nbsp;&nbsp;&nbsp;StartDoc(pd.hDC, &amp;di);<BR>&nbsp;&nbsp;&nbsp;&nbsp;StartPage(pd.hDC);<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;//调整各列的宽度,以使各列在后面的打印输出时更均匀的打印在纸上。<BR>&nbsp;&nbsp;&nbsp;&nbsp;int space = (nHorRes-nXMargin*nCharWidth-nColX) / (nColCount -1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(i =1; i&lt;nColCount; i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ca[i].nPrintX += i*space;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//输出列标题<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(i =0; i&lt;nColCount; i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextOut(pd.hDC, ca[i].nPrintX, nYMargin, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ca[i].strColText, strlen(ca[i].strColText));<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nMaxLinePerPage = nVerRes/nCharHeight -3;<BR>&nbsp;&nbsp;&nbsp;&nbsp;int nCurPage =1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//输出各列的数据<BR>&nbsp;&nbsp;&nbsp;&nbsp;for(i =0; i&lt;nLineCount; i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int j =0; j&lt;nColCount; j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(i+1-(nCurPage-1)*nMaxLinePerPage &gt; nMaxLinePerPage)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//新的一页<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EndPage(pd.hDC);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StartPage(pd.hDC);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nCurPage ++;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CString subitem = list.GetItemText(i, ca[j].nSubItemIndex);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextOut(pd.hDC, ca[j].nPrintX, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nYMargin+(i+1-(nCurPage-1)*nMaxLinePerPage)*nCharHeight, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;subitem, strlen(subitem));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;EndPage(pd.hDC);<BR>&nbsp;&nbsp;&nbsp;&nbsp;EndDoc(pd.hDC);<BR>//打印结束<BR>&nbsp;&nbsp;&nbsp;&nbsp;DeleteDC(pd.hDC);<BR>&nbsp;&nbsp;&nbsp;&nbsp;return TRUE;<BR>}<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -