首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MFC UpdateAllViews阻塞还是非阻塞?

MFC UpdateAllViews阻塞还是非阻塞?
EN

Stack Overflow用户
提问于 2014-08-25 20:03:08
回答 2查看 1.1K关注 0票数 4

我有一个基于文档视图框架的MFC代码。我使用文档类中的UpdateAllViews(nullptr,0,nullptr)调用视图的OnDraw成员函数。

代码语言:javascript
复制
void MyDocumentClass::MyFunction()
{
    //.. Document code to create and process data
    UpdateAllViews(nullptr,0,nullptr) // Invokes OnDraw
    // When does program control reach this line? 
}

我的问题是,请告诉我UpdateAllViews函数是阻塞的还是非阻塞的,程序控制何时到达UpdateAllViews()旁边的一行?在OnDraw()中的所有代码都已完成执行之后,它是到达了那里,还是更早到达了那里?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-25 21:25:54

UpdateAllViews是一个非阻塞函数,它简单地调用每个视图的OnUpdate。OnUpdate函数通常会使视图无效,这将导致稍后的OnDraw。UpdateAllViews在无效之后和绘画之前返回。

票数 7
EN

Stack Overflow用户

发布于 2015-01-24 02:28:27

UpdateAllViews是一个阻塞函数,它简单地循环每个视图并调用它们的OnUpdate函数。它不是“稍后的队列”,而是像PostMessage那样立即返回调用。

与SendMessage类似,在每个视图的OnUpdate函数中的所有代码都已执行之前,UpdateAllViews不会返回。这就是为什么在UpdateAllViews/OnUpdate中执行诸如直接调用OnDraw或阻塞I/O之类的沉重任务通常是个坏主意。更好的做法是根据提示参数使部分或全部视图失效,并让框架在下一个WM_PAINT上调用WM_PAINT。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25493504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档