VC++ 中Invalidate() 与UpdateData()函数有什么不同?

VC++ 中Invalidate() 与UpdateData()函数有什么不同? 部门代码如下: void CMyDialog::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { // TODO: 在此添加消息处理程序代码和/或调用默认值 int pos = m_scroll.GetScrollPos(); if ((pos>0)||(pos<255)) { switch(nSBCode) { case SB_LINEDOWN: pos = pos+1; break; case SB_LINEUP: pos = pos-1; break; default: break; } } m_scroll.SetScrollPos(pos); Invalidate(); CDialog::OnVScroll(nSBCode, nPos, pScrollBar); } --------------------------------------------- void CMyDialog::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 // 不为绘图消息调用 CDialog::OnPaint() int pos=m_scroll.GetScrollPos(); CBrush brush(RGB(pos,pos,pos)); CRect rect(30,20,150,200); dc.FillRect(rect,&brush); UpdateData(); }

第1个回答  2019-09-26
Invalidate
该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着需要重绘,这时Windows会在应用程序的
消息队列
中放置WM_PAINT消息。
UpdateData
是用来
刷新数据
的,。Updatedata(TRUE)将控件的值赋值给成员变量;Updatedata(FALSE)将成员变量的值赋值给控件;
相似回答