设为首页收藏本站
授权版本:2024_07
开启左侧

求助:VC下实现做模板可以涂抹的功能,一直实现不了

[复制链接]
暮雨 发表于 2020-7-28 23:22:48 | 显示全部楼层 |阅读模式
C#倒是可以,但是在VC下就是不行,跪求大佬指点下,一个是区域不能实时显示,只有鼠标右键结束了才可以。二是设置窗体闪烁刷新感觉没用。
1595949558(1).png
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
绝地武士 发表于 2020-7-29 15:11:55 | 显示全部楼层
1.显示区域不能实时是因为你在主线程中使用了while循环,导致消息无法传递,可以使用C#类似Application.DoEvents();这样的函数解决;
2.窗体闪烁可以考虑双缓冲技术(通过缓存窗口显示结果再截取到你的窗口显示),或者你设置的set_system('flush_graphic','false')关闭刷新和set_system('flush_graphic','true')打开刷新来解决闪烁问题。
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| 暮雨 发表于 2020-7-29 15:21:57 | 显示全部楼层
绝地武士 发表于 2020-7-29 15:11
1.显示区域不能实时是因为你在主线程中使用了while循环,导致消息无法传递,可以使用C#类似Application.DoE ...

谢谢大佬,我琢磨!{:1_311:}
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
绝地武士 发表于 2020-7-29 15:32:11 | 显示全部楼层
暮雨 发表于 2020-7-29 15:21
谢谢大佬,我琢磨!

VC里面如何在循环中传递消息避免界面卡顿问题:
  1. void CCommon::DoEvents()
  2. {
  3.         MSG msg;
  4.         while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
  5.         {
  6.                 if (!AfxGetThread()->PumpMessage())
  7.                 {
  8.                         return;
  9.                 }
  10.         }
  11. }
复制代码

奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| 暮雨 发表于 2020-7-29 15:55:03 | 显示全部楼层
绝地武士 发表于 2020-7-29 15:11
1.显示区域不能实时是因为你在主线程中使用了while循环,导致消息无法传递,可以使用C#类似Application.DoE ...

实现了,谢谢!琢磨了好久了
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表