在涉及到打印机映射方式的时候,如果我使用的是默认的MM_TEXT,那么当字体需要加下划线的时候,如果那个字体是汉字就天加下划线不成成功,如果是数字则可以添加成功,字体设置我用的是LOGFONT.
而如果我把映射方式修改成MM_ISOTROPIC的时候,下划线可以添加成功,上面的那个问题解决,但是随之新问题出现了:当打印的时候,字数到了打印边界,该换行的时候,他不会换行了,我输出用的是 DrawText。而且字体也会突然间变很大.数字和汉字的字体大小差异很大.
选用剩下的映射模式的话,下划线都会出现问题.我测试出来只有MM_ISOTROPIC只有这个模式下划线才不会区分汉字和数字.
所以想使用MM_ISOTROPIC这种模式,但是上面的2个问题还是没有解决,希望高手指点下~~
int x,y;
x=GetDeviceCaps(m_Print.m_DC,LOGPIXELSX);
y=GetDeviceCaps(m_Print.m_DC,LOGPIXELSY);
m_Print.m_DC.SetMapMode(MM_TEXT);
m_Print.m_DC.SetWindowExt(x,y);
int PaperW,PaperH;
PaperW=GetDeviceCaps(m_Print.m_DC,PHYSICALWIDTH);
PaperH=GetDeviceCaps(m_Print.m_DC,PHYSICALHEIGHT);
SetFont((*IT));
StrRect.SetRect((*IT)->m_Left,(*IT)->m_Top,PaperW,PaperH); 
DrawText(m_Print.m_DC,(TCHAR*)m_Printvale.c_str(),-1,&StrRect, DT_LEFT|DT_WORDBREAK);以上是我的打印模式设置.
忘指教~~~