学习心得~~~Invalidate~~UpdateData~~UpdateWindow

本文详细介绍了Windows框架中CWnd类的Invalidate、UpdateData和UpdateWindow三个关键函数的使用和作用。Invalidate用于使窗口客户区无效,触发重画;UpdateData用于对话框数据的初始化和验证;UpdateWindow则直接发送WM_PAINT消息进行窗口更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近快被逼疯了,所以学习心得也就比较多。

一、CWnd::Invalidate

void Invalidate( BOOL bErase = TRUE );

参数:

bErase

指定是否要擦除更新区域内的背景。


说明:
使CWnd的整个客户区无效。当产生下一个WM_PAINT消息时,客户区被标记为需要重画。也可以在产生WM_PAINT消息之前用ValidateRectValidateRgn成员函数使区域有效。
bErase
参数指定了在处理更新区域的时候是否要擦除更新区域内的背景。如果bEraseTRUE,则当调用BeginPaint的时候,将擦除背景。如果bEraseFALSE,则背景保持不变。如果对于更新区域的任何部分bEraseTRUE,则整个区域的背景都会被擦除,而不仅是给定的部分。
每当CWnd的更新区域不为空,并且在应用程序的窗口消息队列中没有其它消息时,Windows就发送一条WM_PAINT消息。

 

二、CWnd::UpdateData

BOOL UpdateData( BOOL bSaveAndValidate = TRUE );

返回值:
如果操作成功,则返回非零值;否则返回0。如果bSaveAndValidateTRUE,则返回非零值意味着已成功地使数据有效。

参数:

bSaveAndValidate

指明是要初始化对话框(FALSE)还是获取数据(TRUE)的标志。


说明:
调用这个成员函数以初始化对话框中的数据,或者获得并检验对话框数据。
当一个模式对话框被创建时,框架自动在CDialog::OnInitDialog的缺省实现中调用UpdateDatabSaveAndValidate被设为FALSE。这个函数在对话框可见之前被调用。CDialog::OnOK的缺省实现令bSaveAndValidateTRUE并调用这个成员函数以获得对话框中的数据,如果成功,将关闭对话框(如果在对话框中点击了Cancel按钮,则对话框将被关闭,并不获取数据)。

三、CWnd::UpdateWindow

void UpdateWindow( );

说明:
如果更新区域不为空,则发送一条WM_PAINT消息以更新客户区域。UpdateWindow成员函数直接发送一条WM_PAINT消息,越过应用程序队列。如果更新区域为空,则WM_PAINT不会被发送。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值