最近在工作中有个关于MFC的需求:点击Table中的粗略信息,在页面中显示对应的历史详细信息。本身不是很难,但是其中因为忽视了一个小问题耽误了很多时间。由于涉及公司内部代码,只贴出部分并修改供理解思想。
1.继承CView类
2.实现输出信息的方法
void 类名::DrawStkInfo_AllHisInfo(POINT ptLeftTop,POINT ptRightDown,CDC *pDC)
{
int nRow = 1;
CRect m_rectCurrLocName[5]
//设置响应范围
list<mstruct *>::iterator iter = m_listInfo.begin();
while(iter != m_listInfo.end())
{
if(nRow < 5)
{
m_rectCurrLocName[nRow-1].left = m_dArrayDrawTextStatrX_T2[0]+1;
m_rectCurrLocName[nRow-1].right = m_dArrayDrawTextStatrX_T2[1]-1;
m_rectCurrLocName[nRow-1].top = m_dArrayDrawTextStatrY_T2[nRow]+1;
m_rectCurrLocName[nRow-1].bottom = m_dArrayDrawTextStatrY_T2[nRow+1]-1;
cDisable.CreateSolidBrush(RGB(108, 131, 139));
pDC->FillRect(m_rectCurrLocName[nRow-1],&cDisable);
cDisable.DeleteObject();
}
}
CString strHistory = "";
list<mstruct *>::iterator iter = m_listInfo.begin();

本文介绍了在MFC中处理鼠标响应并在页面上使用textOut()输出文本的技巧。通过继承CView类,实现输出信息方法,设置鼠标响应并确保在onDraw()中调用绘制操作,解决了因直接在鼠标事件中调用textOut()导致无法正常显示字符的问题。强调了MFC的GDI绘图操作必须在onDraw()中进行以避免界面刷新冲突。
最低0.47元/天 解锁文章
2319

被折叠的 条评论
为什么被折叠?



