软件颜色显示异常,有解决办法吗

cewu6780 2017-09-04 03:07:42

上图左半边是软件正常显示的情况,右侧是出现的异常。异常出现的概率不高,具体原因尚不明确,而且只是颜色异常,软件还是可以使用的。
...全文
956 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cewu6780 2017-10-11
  • 打赏
  • 举报
回复
感谢各位大神的耐心解答,我想我可能已经找到了一种解决方法:强制刷新。 在父窗口类的OnPaint中添加对子窗口的强制刷新: //m_XXX->Invalidate();//强制刷新,非立即 m_XXX->RedrawWindow();//立即重绘子窗口 即对子窗口发消息ON_WM_PAINT()
赵4老师 2017-09-18
  • 打赏
  • 举报
回复
查MSDN是Windows程序员必须掌握的技能之一。
cewu6780 2017-09-18
  • 打赏
  • 举报
回复
引用 14 楼 zhao4zhong1 的回复:
全部折叠全部展开 代码:全部 代码:多个 代码:Visual Basic 代码:C# 代码:Visual C++ 代码:J# 代码:JScript Visual Basic C# Visual C++ J# JScript Visual C++ 链接器选项 /MANIFESTDEPENDENCY(指定清单依赖项) 请参见 发送反馈意见 复制代码 /MANIFESTDEPENDENCY:manifest_dependency 备注 /MANIFESTDEPENDENCY 使您可以指定将要置于清单文件 <dependency> 节中的属性。 有关如何创建清单文件的信息,请参见 /MANIFEST(创建并行程序集清单)。 有关清单文件 <dependency> 节的更多信息,请参见 Publisher Configuration Files。 /MANIFESTDEPENDENCY 信息可通过以下两种方式之一传递给链接器: 直接在命令行(或响应文件)中使用 /MANIFESTDEPENDENCY 传递。 通过 comment 杂注传递。 下面的示例演示如何通过杂注传递 /MANIFESTDEPENDENCY 注释。 复制代码 #pragma comment(linker, "\"/manifestdependency:type='Win32' name='Test.Research.SampleAssembly' version='6.0.0.0' processorArchitecture='X86' publicKeyToken='0000000000000000' language='*'\"") 此示例可在清单文件中产生下列项: 复制代码 <dependency> <dependentAssembly> <assemblyIdentity type='Win32' name='Test.Research.SampleAssembly' version='6.0.0.0' processorArchitecture='X86' publicKeyToken='0000000000000000' language='*' /> </dependentAssembly> </dependency> 相同的 /MANIFESTDEPENDENCY 注释还可在命令行中按以下方式传递: 复制代码 "/manifestdependency:type='Win32' name='Test.Research.SampleAssembly' version='6.0.0.0' processorArchitecture='X86' publicKeyToken='0000000000000000' language='*'\" 链接器将收集 /MANIFESTDEPENDENCY 注释,消除重复项,然后将得到的 XML 字符串添加到清单文件中。 如果链接器发现冲突项,清单文件将会损坏,而应用程序的启动也将失败(可能会在事件日志中添加一项,指示故障来源)。 在 Visual Studio 开发环境中设置此链接器选项 打开该项目的“属性页”对话框。有关详细信息,请参见如何:打开项目属性页。 展开“配置属性”节点。 展开“链接器”节点。 选择“清单文件”属性页。 修改“附加清单依赖项”属性。 以编程方式设置此链接器选项 请参见 AdditionalManifestDependencies。 请参见 概念 设置链接器选项 链接器选项 发送反馈意见,就此主题向 Microsoft 发送反馈意见。
看不懂这个
赵4老师 2017-09-13
  • 打赏
  • 举报
回复
全部折叠全部展开 代码:全部 代码:多个 代码:Visual Basic 代码:C# 代码:Visual C++ 代码:J# 代码:JScript Visual Basic C# Visual C++ J# JScript Visual C++ 链接器选项 /MANIFESTDEPENDENCY(指定清单依赖项) 请参见 发送反馈意见 复制代码 /MANIFESTDEPENDENCY:manifest_dependency 备注 /MANIFESTDEPENDENCY 使您可以指定将要置于清单文件 <dependency> 节中的属性。 有关如何创建清单文件的信息,请参见 /MANIFEST(创建并行程序集清单)。 有关清单文件 <dependency> 节的更多信息,请参见 Publisher Configuration Files。 /MANIFESTDEPENDENCY 信息可通过以下两种方式之一传递给链接器: 直接在命令行(或响应文件)中使用 /MANIFESTDEPENDENCY 传递。 通过 comment 杂注传递。 下面的示例演示如何通过杂注传递 /MANIFESTDEPENDENCY 注释。 复制代码 #pragma comment(linker, "\"/manifestdependency:type='Win32' name='Test.Research.SampleAssembly' version='6.0.0.0' processorArchitecture='X86' publicKeyToken='0000000000000000' language='*'\"") 此示例可在清单文件中产生下列项: 复制代码 <dependency> <dependentAssembly> <assemblyIdentity type='Win32' name='Test.Research.SampleAssembly' version='6.0.0.0' processorArchitecture='X86' publicKeyToken='0000000000000000' language='*' /> </dependentAssembly> </dependency> 相同的 /MANIFESTDEPENDENCY 注释还可在命令行中按以下方式传递: 复制代码 "/manifestdependency:type='Win32' name='Test.Research.SampleAssembly' version='6.0.0.0' processorArchitecture='X86' publicKeyToken='0000000000000000' language='*'\" 链接器将收集 /MANIFESTDEPENDENCY 注释,消除重复项,然后将得到的 XML 字符串添加到清单文件中。 如果链接器发现冲突项,清单文件将会损坏,而应用程序的启动也将失败(可能会在事件日志中添加一项,指示故障来源)。 在 Visual Studio 开发环境中设置此链接器选项 打开该项目的“属性页”对话框。有关详细信息,请参见如何:打开项目属性页。 展开“配置属性”节点。 展开“链接器”节点。 选择“清单文件”属性页。 修改“附加清单依赖项”属性。 以编程方式设置此链接器选项 请参见 AdditionalManifestDependencies。 请参见 概念 设置链接器选项 链接器选项 发送反馈意见,就此主题向 Microsoft 发送反馈意见。
cewu6780 2017-09-13
  • 打赏
  • 举报
回复
引用 9 楼 zhao4zhong1 的回复:
楼上应该是正解。
老师,这个问题是概率出现的,造成的原因估计是父类的 Onpaint中加入了 背景色,子窗口(浅灰色部分)没有相应处理。导致子窗口的颜色 有时候 被刷成 黑色
cewu6780 2017-09-12
  • 打赏
  • 举报
回复
引用 8 楼 worldy 的回复:
lz讲错了吧,应该是左边异常,右边是正常吧? 一般我知道的原因是stdafx.h中应该有下面代码
#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif
嗯 我先试试这个方法。左侧界面确实是正常的时候,虽然感觉界面很丑
cewu6780 2017-09-12
  • 打赏
  • 举报
回复
引用 10 楼 shen_wei 的回复:
确保界面的刷新能跟上。。。
子窗口(浅灰色部分)是默认刷新的,没有 OnPaint 函数
shen_wei 2017-09-11
  • 打赏
  • 举报
回复
确保界面的刷新能跟上。。。
赵4老师 2017-09-08
  • 打赏
  • 举报
回复
楼上应该是正解。
worldy 2017-09-08
  • 打赏
  • 举报
回复
lz讲错了吧,应该是左边异常,右边是正常吧? 一般我知道的原因是stdafx.h中应该有下面代码
#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif
cewu6780 2017-09-08
  • 打赏
  • 举报
回复
引用 6 楼 smwhotjay 的回复:
感觉是右边那个长期不重绘。。
嗯,有这个可能
smwhotjay 2017-09-05
  • 打赏
  • 举报
回复
感觉是右边那个长期不重绘。。
cewu6780 2017-09-05
  • 打赏
  • 举报
回复
引用 4 楼 zgl7903 的回复:
长期运行 任务管理器观察 是否GDI句柄持续增长,有可能是GDI泄漏
gdi泄漏会导致软件卡死,这个只是背景颜色显示的异常。
zgl7903 2017-09-05
  • 打赏
  • 举报
回复
长期运行 任务管理器观察 是否GDI句柄持续增长,有可能是GDI泄漏
kuangbao9 2017-09-04
  • 打赏
  • 举报
回复
引用 2 楼 cewu6780 的回复:
[quote=引用 1 楼 kuangbao9 的回复:] MFC嘛??
是的[/quote] 那你试一下添加WM_ERASEBKGND消息,直接return TRUE看看
cewu6780 2017-09-04
  • 打赏
  • 举报
回复
引用 1 楼 kuangbao9 的回复:
MFC嘛??
是的
kuangbao9 2017-09-04
  • 打赏
  • 举报
回复
MFC嘛??

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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