专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > WinCE

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

发布时间:2010-06-13 22:21:44 文章来源:www.iduyao.cn 采编人员:星星草
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区域的右下边界,这样区域算出来是准确的。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: