全局回调函数中调用UpdateWindow问题

frankgwg 2011-01-21 12:05:50
本人最近用vc编一个ccd采集图像软件,在采集连续图像的全局回调函数中调用UpdateWindow()或SendMessage(..,WM_PAINT,..)
想让每帧图像的显示工作都放到工程的view类的ondraw()函数中,但调试时发现函数最后并没用进入view类中,也就是UpdateWindow没起作用,不知这是什么原因,求帮助!

我的全局函数如下:VOID_TYPE NOTIFICATION_CALLING_CONVENTION MyCallback(S_UNI_CALLBACK_ARGUMENT arg)
{
。。。。。
。。。。。

CMainFrame *frm=(CMainFrame *)AfxGetApp()->m_pMainWnd;
::SendMessage(frm->GetActiveView()->m_hWnd,WM_PAINT,0,0);
或 ::UpdateWindow(frm->GetActiveView()->m_hWnd);
}

不知道这是什么原因。
...全文
267 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
frankgwg 2011-01-22
  • 打赏
  • 举报
回复
看了点重绘的说明,原来在调用updatewindow前先要把窗口设置成无效区域,懂了。
varding 2011-01-21
  • 打赏
  • 举报
回复
先调用InvalidRect或者Invalidate再updateWindow
许文君 2011-01-21
  • 打赏
  • 举报
回复
先注释掉::UpdateWindow(frm->GetActiveView()->m_hWnd);看看有没有单帧图片,若没有则证明DC错了,
grf9527 2011-01-21
  • 打赏
  • 举报
回复
严重关注你的问题,我没有做过类似的,
貌似是updatewindow应该在目标view里执行吧。
能在这里执行吗
yiruirui0507 2011-01-21
  • 打赏
  • 举报
回复
调用InvalidRect或者Invalidate再updateWindow
sjdev 2011-01-21
  • 打赏
  • 举报
回复
为什么不得到doc,然后updateallview呢?
frankgwg 2011-01-21
  • 打赏
  • 举报
回复
刚看了下invalidaterect,updatewindow 的说明,有点懂了
frankgwg 2011-01-21
  • 打赏
  • 举报
回复
对于1楼提问 我用的是win32 sdk的UpdateWindow,只要指定相应的窗口句柄应该也可以吧,2楼我没明白具体什么意思,我是要在view类的ondraw()实现图像的绘制,全局的回调函数内只是做些图像数据的计算处理等,之后本想掉用Updatewindow重绘窗口,在ondraw中绘图(主要我做的东西需要把前一帧的曲线图擦掉,所以在ondraw中绘制)。

其实我学vc也没多久,主要为了现在的课题学做的,对于3楼的帮助我确实不太懂,如可以的话,请高手进一步解释说明,谢谢各位,因为ccd时常要用做他用,最近也不再学校,回去调试一次也不太容易,所以希望高手指教,尽量保证方法可行,省的我老是2地奔波。。。 3楼的解释为什么还要在updatewindow前调用InvalidateRect(invalidate不行,没有sdk平台的函数),这两个函数不是功能一样的嘛?????

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧