直奔主题
1.下面函数是将CStatic控件Ctrl和文本内容strText作为输入,修改控件文本及刷新界面的函数
void CMyDlg::SetTextAndUpdate(CStatic& Ctrl, CString& strText)
{
Ctrl.SetWindowText(strText); //修改控件文本内容
CRect staticRect;
Ctrl.GetWindowRect(&staticRect); //获取控件的坐标
InvalidateRect(&staticRect); //重绘
}
----------------------------------------------------知识巩固----------------------------------------------------------------
-
Ctrl.GetWindowRect(&staticRect);
:通过调用Ctrl对象的GetWindowRect函数,获取静态文本控件的窗口矩形,并将结果保存在staticRect变量中。GetWindowRect函数返回的是控件相对于屏幕的矩形坐标。 -
InvalidateRect(&staticRect)
的作用是使指定区域(staticRect
)无效,即需要重新绘制。当调用InvalidateRect
函数时,系统会向窗口发送一个WM_PAINT
消息,通知窗口进行重绘。在这行代码中,
staticRect
是一个用于表示控件的客户区矩形的变量。通过调用InvalidateRect(&staticRect)
,将控件的客户区矩形标记为无效,即需要重新绘制。这样,在下一次窗口绘制的时候,系统会调用窗口的OnPaint
函数,进行相应的绘制操作。
--------------------------------------------------------------------------------------------------------------------------------
2.在需要修改文本时调用该函数即可,例如:
void CMyDlg::SetValue(double value)
{
CString strTxt;
strTxt.Format(_T("%.2f"), value);
SetTextAndUpdate(你需要修改的CStatic类型控件, strTxt);
}