MFC 菜单栏一片黑,界面卡顿问题

article/2025/10/25 19:42:43

        这是在公司做的一个项目, 实现可视化调节参数内容包括频段、频点、增益和Q值等,可以美化(包括丑化)和修饰声音,使声音(或音乐)风格更加鲜明突出。软件如下图所示:

       但这软件开发过程中一直存在一个问题,显图速度调快的情况下,频繁拖动点会导致界面卡顿和菜单栏一片黑,而后界面就崩溃无法动作,但设断点调试时该断点的地方都会进入。刚开始怀疑是进程堵塞,就对画图和算法都加了线程,都没解决问题。

       后来,就对代码进行屏蔽,看哪段代码屏蔽了不会造成这个问题。最后,定位在了SetWindowText(str), 这函数主要是设置文本框数字的,因为拖动过程中会不断地设置文本框数字,所以就不断触发着这个 SetWindowText(str)函数。我怎么都想不通为什么这个函数频繁执行会出问题的,但是,问题就出在这里,我只能从这里下手解决(worry....)。

       现在的软件是鼠标拖动点触发ON_WM_MOUSEMOVE事件就设置文本,所以导致文本设置函数频繁执行,所以我想到的解决方案是设置一个阈值,触发ON_WM_MOUSEMOVE事件到一定次数才设置文本数字,再加上ON_WM_LBUTTONDOWN放下鼠标按键触发设置文本数字,使图像点的位置最终和设置的文本框数字一致,解决了这个问题。但在界面测试时发现了两个问题:

      1. 鼠标悬停时出现图像上点的位置值和文本上的值对应不上;

      2. 鼠标突然拖动离开图表区时,图像上点的位置值和文本上的值对应不上。

      这两个问题可以通过触发WM_MOUSELEAVE(鼠标离开),WM_MOUSEHOVER(鼠标悬停)事件来设置文本值,这样就能保证图像上的点的位置值和文本值对应上。

      当然,要触发上面两个消息需要在ON_WM_MOUSEMOVE事件里添加额外的代码:

      TRACKMOUSEEVENT tme;
      tme.cbSize = sizeof(tme);
      tme.hwndTrack = m_hWnd;
      tme.dwFlags = TME_LEAVE|TME_HOVER;      // 鼠标离开和悬停事件
      tme.dwHoverTime = 30;                                     //  悬停触发时间,设置小了也会导致悬停触发频繁设置文本
      m_bIsTracking = _TrackMouseEvent(&tme);

      以上就完美解决了这个界面问题,就以为一切都顺利完成的时候,测试部就出来一个问题,频繁点击选项卡时也会导致这个一模一样的问题。断点调试时,发现点击选项卡更换界面并不会触发到这个SetWindowText函数。还是老办法,屏蔽代码找问题,先关闭了图像显示,没问题。所以,问题还是指向了文本框控件。

     仔细检查了文本框控件代码,这个文本框使被我重载过的,有重载了ON_WM_CTLCOLOR_REFLECT()事件,屏蔽了这个事件后就没有这个问题了。这个事件在界面刷新或者文本框变动的情况下都会触发,主要是设置文本字体和背景颜色。

     问题代码是在事件   return CreateSolidBrush(WORK_COLOR);        //设置背景色

     而 return NULL;            // 就没问题了

     返回NULL后,恢复成原来不断在ON_WM_MOUSEMOVE事件里不断设置文本的情况都没问题了。因为在设置文本的过程中,就会触发ON_WM_MOUSEMOVE事件,所以根本问题还是在这个ON_WM_MOUSEMOVE事件,在回音壁的选项卡的文本很多,都是在回音壁选项卡切换出问题的,但是为什么会是这个问题呢?知道的人可以回复下。

 


http://chatgpt.dhexx.cn/article/YctsGDKi.shtml

相关文章

C#版封装的近400个Windows API 类

【实例简介】 Windows API 类常用方法锦集 【实例截图】 文件&#xff1a;590m.com/f/25127180-494402201-213b68&#xff08;访问密码&#xff1a;551685&#xff09; 【核心代码】/// <summary> /// 封装Windows API类&#xff0c;可直接调用&#xff0c;和调用平常…

C#实现QQ窗体的步骤和总结

C#实现QQ窗体的步骤和总结 程序结构控件布局代码分析公共变量API调用公用方法事件 知识总结IntPtrMarshal 类PointOffset PaintEventArgs 类效果演示 GraphicsMouseEventArgs 类代码案例 ContextMenu 概述演示效果程序代码 MouseEventHandler句柄user32详细介绍使用方法 DllImp…

VC++:菜单的使用总结

菜单是windows应用程序经常使用的资源之一。从今天开始&#xff0c;把有关菜单的创建及使用等各方面的基本用法总结到一起&#xff0c;算是做个笔记吧&#xff01;准备一天写一点&#xff0c;陆陆续续完成&#xff01; 一、菜单的创建&#xff1a; &#xff08;一&#xff09…

Windows 编程[18] - 更换菜单项: ModifyMenu

为什么80%的码农都做不了架构师&#xff1f;>>> 本例效果图: 本例使用的资源文件(TestRes.rc): MyMenu1 MENUEX BEGINMENUITEM "Open" ,101MENUITEM "Old" ,102MENUITEM "Help" ,103 END本例代码文件: program Project1;{$R Tes…

动态更改菜单之ModifyMenu

多语言支持&#xff0c;已经是桌面应用软件的发展趋势。用句流行的词就是“国际化”。除了语言翻译的工作外&#xff0c;比较重要的就是字符的编码问题。不过这些问题的讨论已经铺天盖地了&#xff0c;我就不想再多说细节了。我在此只记录一下我的软件“国际化”中的一个技术小…

Android 为CheckBoxPreference Preference 控件添加样式

Android 为CheckBoxPreference Preference 控件添加样式 分类&#xff1a; android 2012-11-16 17:48 8920人阅读 评论(4) 收藏 举报 [html] view plain copy print ? <CheckBoxPreference android:key"enable_adb" android:layout"…

数据存储: CheckBoxPreference

最近&#xff0c;做一个项目&#xff0c;使用 Preference 非常频繁&#xff0c;之前就很想写一些关于 android 数据存储的文章&#xff0c;这次机会来了。 先从小出着手吧&#xff0c;CheckBoxPreference 小巧可爱&#xff0c;使用简单。但是使用的时候&#xff0c;还是需要注意…

CheckBoxPreference组件

CheckBoxPreference 选中为true 取消选中为false 它的值会以boolean的形式储存在SharedPreferences中。 <?xml version"1.0" encoding"utf-8"?><PreferenceScreenxmlns:android"http://schemas.android.com/apk/res/android"><…

Android 自定义CheckBoxPreference的CheckBox复选框

在使用Android的Preference&#xff0c;有时为了让我们的界面更加美观&#xff0c;我们会自定义自己的Preference。今天就主要说一下怎样自定义CheckBoxPreference的CheckBox按钮。 系统默认CheckBoxPreference的CheckBox样式 自定义后的CheckBox样式 其实&#xff0c;关键的一…

最好用的手机端C/C++语言编程软件, 不要说没电脑就不学编程了!

今天介绍一个软件—C编译器(c4droid)&#xff0c;可以直接编辑运行C/C程序&#xff0c;代码高亮、语法检查&#xff0c;使用起来非常不错&#xff0c;下面我简单介绍一下这个软件的安装和使用&#xff1a; 安装C编译器&#xff0c;这个直接在手机应用中搜索就行&#xff0c;如…

最新版手机端C/C++语言编程的软件

今天介绍一个软件—C编译器(c4droid)&#xff0c;可以直接编辑运行C/C程序&#xff0c;代码高亮、语法检查&#xff0c;使用起来非常不错&#xff0c;下面我简单介绍一下这个软件的安装和使用&#xff1a; 安装C编译器&#xff0c;这个直接在手机应用中搜索就行&#xff0c;如…

C语言编程工具软件推荐

c语言编程软件适于编写系统软件&#xff0c;是学习编程的同学们的必备软件。c语言一种非常强大的计算机语言&#xff0c;应用非常广泛&#xff0c;不仅仅是在软件开发上&#xff0c;而且各类科研都会用到c语言。今天小编给大家汇总下C语言的编程工具 中国有句古话叫做“工欲善其…

c语言编程软件有哪些 Win7下用哪种C语言编译器

C语言是一门历史很长的编程语言&#xff0c;其编译器和开发工具也多种多样&#xff0c;其开发工具包括编译器&#xff0c;现举几个开发工具供大家选择&#xff0c;当然也要根据自己的操作系统来选择适合自己的开发工具 好多刚开始接触c语言的朋友都想知道用上面软件开发c语言…

手机上可以编程看代码的软件

以后大家会在路上看到很多人拿着手机,他不是在聊天,他有可能是运维工程师、也可能是算法开发、也可能是java开发,还可能是客户端开发,也可能是前端开发... 让你编程一直在路上,这到底是程序员的福音,还是码农的枷锁。 粉丝提问: 这里介绍几款可以在手机上编程的app,分…

学习c语言编程用什么软件_用C编程

学习c语言编程用什么软件 We would start writing basic programs in C now. You need to have required software installed and configured in your system. Refer to the article of Hello World and ensure that you are able to compile and run the program. 我们现在就开…

怎样查看C语言的程序内容,什么手机软件能看c语言文件?

C语言编译器和C编译器这2个手机软件就可以&#xff0c;而且还可以直接运行C语言程序&#xff0c;使用起来非常方便&#xff0c;下面我简单介绍一下这2个软件的安装和使用&#xff0c;感兴趣的朋友可以在自己手机上尝试一下&#xff1a; C语言编译器 这是手机上一个纯粹的C语言编…

c语言编程开发app,C语言编程app

C语言编程是一款掌上C语言学习软件&#xff0c;平台为用户提供专业的C语言学习资源&#xff0c;用户可以随时在线进行刷题学习&#xff0c;还能将错题记录和题目收藏&#xff0c;方便用户进行针对训练&#xff0c;轻松备考计算机二级&#xff0c;有需要的朋友快来下载吧&#x…

C语言编译器(C语言编程软件)

桌面操作系统 对于当前主流桌面操作系统而言&#xff0c;可使用 Visual C、GCC 以及 LLVM Clang 这三大编译器。 Visual C&#xff08;简称 MSVC&#xff09;是由微软开发的&#xff0c;只能用于 Windows 操作系统&#xff1b;GCC 和 LLVM Clang 除了可用于 Windows 操作系统…

c语言程序设计网站有哪些,C语言编程软件有哪些?

C语言是一门通用计算机编程语言&#xff0c;应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。 尽管C语言提供了许多低级处理的功能&#xff0c;但仍然保持着良好跨平台的特性&#xf…

最火的C语言编程软件,适合编写C语言代码的编程软件有哪些

C语言基本上是大学计算机及其相关专业在大一上学期就会开的一门课程,但是很多学生就是在大一上学期期末的时候很着急,因为自己完全没有学好C语言,感觉一学期白学了,其实究其主要原因,还是因为你在上课认真听了,也做了课堂作业,但是却没有在课后好好的自己去主动敲代码,…