思路是这样的:把一个字符串写入内存dc,然后再用GetBitmapBits,读出数据送往
打印机,可是现在出现了几个问题,即用GetBitMaps读出的数据要么全0,要么是负数。而且我把位图中拷贝到屏幕上时看到的是一片黑乎乎的
请大家看看我的程序:
可以预先给_txtbmp旨:_T("中国");
HDC FontDC;
RECT RECTset;
CSize Sizeset; 
LOGFONT Fontset;DWORD bmptxtlen=_tcslen(txtbmp);
Fontset.lfItalic = 0;
Fontset.lfStrikeOut = 0;
Fontset.lfWeight=Font_Bold?700:400;
Fontset.lfItalic = 0;
Fontset.lfStrikeOut = 0;_stprintf(Fontset.lfFaceName,Font_Name);Fontset.lfWidth = (long)(fWidth > 1000? (fWidth - 1000) * Wd / 2:fWidth / bmptxtlen * Wd);
Fontset.lfHeight = (int)(fHeight * Wd);
RECTset.left = RECTset.right =RECTset.bottom= RECTset.top= 0;
Sizeset.cx = Sizeset.cy = 0;
CClientDC dcScreen(this);
FontDC=CreateCompatibleDC(dcScreen);HFONT hFont;
hFont = CreateFontIndirect(&Fontset);
SelectObject(FontDC,hFont);
GetTextExtentPoint32(FontDC,txtbmp,bmptxtlen, &Sizeset);DWORD realx,realy;
realx = Over8(Sizeset.cx, 32);
realy = Sizeset.cy;
RECTset.right = Sizeset.cx;
RECTset.bottom = Sizeset.cy;HBITMAP ibmp;
ibmp = CreateCompatibleBitmap(FontDC, realx, Sizeset.cy);
SelectObject(FontDC, ibmp);
PatBlt(FontDC,0, 0, realx, Sizeset.cy,BLACKNESS);
DrawText(FontDC, txtbmp, bmptxtlen, &RECTset, 0);
// DrawText(dcScreen.m_hDC,txtbmp, bmptxtlen, &RECTset, 0);
if(RESERVED)
 StretchBlt(dcScreen.m_hDC,0,0,realx,Sizeset.cy,FontDC,0,0,realx,Sizeset.cy,DSTINVERT);
::BitBlt(FontDC,0,0,realx,Sizeset.cy,dcScreen.m_hDC,0,0,SRCCOPY);TCHAR *BMPDATA=new TCHAR[realx*realy/8+1];
long lengthBMPDATA;
lengthBMPDATA=::GetBitmapBits(ibmp,realx * realy/8,(LPVOID)BMPDATA);
BMPDATA[lengthBMPDATA]=0;