首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

wince下用DRAWTEXT输出文字有关问题

2012-02-13 
wince下用DRAWTEXT输出文字问题我用vs2008建立的一个windows mobile 5.0单文档mfc程序我是想从文件读入txt

wince下用DRAWTEXT输出文字问题
我用vs2008建立的一个windows mobile 5.0单文档mfc程序
我是想从文件读入txt文件的字符串后,放到了一个cstring中,用drawtext输出显示到view中
下面是有关代码
  //代码在一个按钮响应中,不在OnDraw中.
  //获得文件路径
  CFileDialog dlgFile(TRUE);
const int c_cMaxFiles = 100;
const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1)) + 1;
dlgFile.GetOFN().lpstrFilter = _T("TXT File\0*.txt;\0ALL File\0*.*;\0");
dlgFile.GetOFN().lpstrFile = fileName.GetBuffer(c_cbBuffSize);
dlgFile.GetOFN().nMaxFile = c_cMaxFiles;

dlgFile.DoModal();

fileName.ReleaseBuffer();

  CFile XMLFile;
char* buffer;

//打开文件
XMLFile.Open(fileName,CFile::modeReadWrite);
int nLen = XMLFile.GetLength();
buffer=new char[nLen+1];
buffer[nLen] = 0;
  //读文件
XMLFile.Read(buffer,nLen);

  //单字节转换成双字节

DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, buffer, -1, NULL, 0);

wchar_t *pwText;
pwText = new wchar_t[dwNum];
if(!pwText)
{
delete []pwText;
}

MultiByteToWideChar (CP_ACP, 0, buffer, -1, pwText, dwNum);
//把pwText格式化到cstring对象中m_str
m_str.Format(_T("%s"), pwText);
   
delete []pwText;
  //开始绘图
CDC* pDC = GetDC();
HDC hdc = pDC->GetSafeHdc();
RECT rect;
  //得到客户区域
GetClientRect(&rect);
  //这里设置断点后参数设定正常,返回n正常,但是屏幕不显示 为什么啊 ?大神们
int n = DrawText(hdc,m_str,-1,&rect,DT_CALCRECT);
//int n = ExtTextOut(hdc,0,0,ETO_OPAQUE,&rect,m_str,m_str.GetLength(),0);

[解决办法]
DT_CALCRECT参数本来就是只计算所需区域的大小,不显示的

LZ去查MSDN吧
[解决办法]
建议你这样用一下:
CRect rect;
pDC->DrawText(m_str,rect,DT_SINGLELINE|DT_VCENTER|DT_CENTER);
[解决办法]
2L的可以,但是记得区域要设置对,你可以用GetTextExtentPoint32 函数获取文本的像素宽和高,然后再作为要drawtext区域的右下边界,这样区域算出来是准确的。

热点排行