none
Win10窗口显示残缺 RRS feed

  • 问题

  • 我升级到win10后,以前的个别程序在界面显示残缺,主要是程序中的弹出对话框客户区背景显示不完整,本来不是透明的地方出现了透明,有时是整个客户区变成了透明,有时是客户区个别区域成了透明。我自己也是做VC程序的,我发现只要是自绘制对话框,以前在WINXP和WIN7上能正常显示的程序,到了WIN10上都会出现这个问题。是不是WIN10窗体绘制流程改变了吗?我试过在OnInitDialog中刷新客户区能解决这个问题,但是会出现闪烁,还有其他方法吗?


    2016年1月12日 10:26

答案

  • 你好,我找到解决方法了,把WIN10性能选项中视觉效果调整为最佳性能就行了,说明系统兼容性很差,你们公司有没有好方法使程序能兼容视觉效果里面的几种设置呢?
    2016年1月22日 1:28

全部回复

  • 您好,

    您可以将你的应用程序放到外一台电脑或虚拟机(安装win10的)上试一下,这样可以排除Win10相关配置的问题。为了更好的帮助你解决问题,我们想复现您遇到的问题,你可以提供一下部分代码(可以测试的),这样我们就可以做一些测试。您使用自绘制对话框的目的是什么?你是在什么时候需要自绘制对话框?还有你创建的VC工程是什么类型的,是WIN32 ,MFC Dialog 还是其他的呢?使用的的IDE是什么版本的.

    2016年1月13日 6:40
    版主
  • 你好,我是在XP下用VS2003开发的程序,是MFC对话框,主要任务是换肤,背景是使用GDI+来贴图的,其实就是在OnEraseBkgnd里面进行贴图,代码其实很简单的。该程序已经使用了很多年,在几十个医院被使用,以前也都是运行在XP环境下,后来出了WIN7,都能正常显示,最近用户很多升级到了WIN10,这个问题就出现了。而且就是客户区显示不对,非客户区都是正常的。由于WIN10上没法安装VS2003,我也就调试不了程序,很头疼。
    2016年1月13日 7:58
  • 而且还有个奇怪的现象,就是偶尔一次弹出的对话框显示会正常,有时还会出现窗口区域的高度变少了,底部的位置少了一块。我使用的贴图图片是PNG的,但不是透明的,会不会是GDI+透明通道出现的问题?
    2016年1月13日 8:10
  • 你好

    你可以在Win10下安装一个新版本的Visual Studio,例如Visual Studio 2015,然后打开原来VS2003的工程,它会被自动转换的,这样你 就可以调试你原来的VS2003工程了。我们需要重现你的问题,所以需要您提供一下有问题部分代码(可以供我们测试,复现问题的),这样我们可以更快的帮你解决问题。还有你的应用程序是在所有的win10电脑上都有问题吗,还是在有些win10电脑上有问题,在有些win10电脑没问题如果是在有些win10电脑上正常,可能是和win10的相关的设置有关.

    2016年1月14日 10:03
    版主
  • 我在win10使用VS2010调试过,没发现程序有错误,但是显示还是有问题,可以说问题很怪异,我想将程序上传给你帮我看看,但是怎样将程序上传给你呢?
    2016年1月19日 2:22
  • 我把程序的压缩包放到百度云上 http://pan.baidu.com/s/1OqZcM 拜托帮我看看,问题出在哪里,谢谢了。
    2016年1月19日 2:42
  • 我在win10使用VS2010调试过,没发现程序有错误,但是显示还是有问题,可以说问题很怪异,我想将程序上传给你帮我看看,但是怎样将程序上传给你呢?

    你好,

    为了更好的帮你解决问题,希望你能把代码放到https://onedrive.live.com这个地方,百度我们是不允许的,请谅解我们

    2016年1月19日 2:53
    版主
  • https://onedrive.live.com这里我打不开 该怎样做
    2016年1月19日 4:13
  • 还有其他的上传方式吗 比如你的邮箱?
    2016年1月19日 4:15
  • 还有其他的上传方式吗 比如你的邮箱?

    你好

    你那边可以放到https://github.com/这个地方去吗?

    2016年1月19日 4:40
    版主
  • 放到https://onedrive.live.com了,链接是:https://onedrive.live.com/redir?resid=C22B657B076B1E01!106&authkey=!ALfYREHwtz8dQbY&ithint=file%2czip
    2016年1月19日 4:41
  • 你看能下载吗 文件是TestSkin.zip
    2016年1月19日 4:42
  • 你看能下载吗 文件是TestSkin.zip

    你好

    我已经下载你的代码,我用WIN10的系统打开这个工程,编译时出现的错误是:

    MFC does not support WINVER less than 0x0501.  Please change the definition of WINVER in your project properties or precompiled header.

    不知道是不是VS版本的问题,我用的是VS2015 update 1。我也把该工程平台工具集变成(V140)。

    为了更好的帮助你,你可以写一个能体现问题的小demo给我们吗?这样好把问题点定位

    2016年1月19日 7:25
    版主
  • 这个是编译器版本的问题,其实就用你的编译器创建一个MFC对话框程序,把新工程的stdafx.h里面编译器自动生成的代码覆盖我上传工程的相应位置,再把新工程的targetver.h文件拷贝过去添加在工程中。现在我这样修改了,重新上传了工程,地址是http://1drv.ms/1n8FVau,这就是一个示例程序,对话框有2个按钮,分别弹出模态和无模态的对话框,弹出对话框使用了自绘制,就是这对话框出现问题,显示不完整或者显示透明,Release和Debug有编译好的执行文件。
    2016年1月20日 3:08
  • 我发了运行情况的效果图,你下载看看http://1drv.ms/20dHdiK
    2016年1月20日 4:03
  • 这个是编译器版本的问题,其实就用你的编译器创建一个MFC对话框程序,把新工程的stdafx.h里面编译器自动生成的代码覆盖我上传工程的相应位置,再把新工程的targetver.h文件拷贝过去添加在工程中。现在我这样修改了,重新上传了工程,地址是http://1drv.ms/1n8FVau,这就是一个示例程序,对话框有2个按钮,分别弹出模态和无模态的对话框,弹出对话框使用了自绘制,就是这对话框出现问题,显示不完整或者显示透明,Release和Debug有编译好的执行文件。

                 你的建议很棒,我可以成功编译程序了,并且在win10上面进行了测试,没有发现闪烁的现象,界面显示也是完整的,我这边的背景是淡蓝色的,不是透明的。我觉得你那边出现的问题可能是你个人电脑系统的问题,我觉得不是win10的问题,你可以在其他win10电脑上进行测试吗?附件是我测试结果的截屏,整个工程我只把button里面的汉字改成英文(因为我这边显示中文乱码,这个问题我之前就有)。



    2016年1月20日 6:29
    版主
  • http://1drv.ms/20dHdiK,这里你可以看见运行效果图,那是怎么一回事,难道是我用VS2003和VS2010编译的程序在WIN10上面运行就出现这种情况,难道非得用VS2015重新编译以前的程序?这个工作量太大了,要修改很多代码,有更好的方法吗
    2016年1月20日 7:31
  • 对了,你能重新下载一下我上传的程序包吗,里面有用VS2010编译好的执行程序,你看看在你的系统中直接运行它显示有异常吗?

    地址是http://1drv.ms/1n8FVau

    2016年1月21日 0:44
  • 对了,你能重新下载一下我上传的程序包吗,里面有用VS2010编译好的执行程序,你看看在你的系统中直接运行它显示有异常吗?

    地址是http://1drv.ms/1n8FVau

    你好 ,我重新下载了你的最新程序,代码在win10 vs2015 update 1上面运行没有出现闪屏现象,dialog也是正常显示,dialog的背景色是淡蓝色,附件是我测试结果的截屏,整个工程我只把button里面的汉字改成英文(因为我这边显示中文乱码,这个问题我之前就有)


    2016年1月21日 1:46
    版主
  • 你好,我也安装了VS2015,编译后显示不完整的情况好像好了一点,点按钮几次后会出现显示异常。我对这问题完全无助了,能帮我吗
    2016年1月21日 3:32
  • 你好,我想测试我们系统运行库是不是有区别,我在VS2003,VS2010和VS2015上分别编译了一个执行文件,你能在你的电脑上运行下,看是不是有异常。这个异常不是每次都会出现,要反复操作“点击按钮弹出对话框和关闭弹出对话框”。你看看这3个执行文件是不是都能正常显示。我把几个程序打包上传了,这里是地址:http://1drv.ms/1S62N6d,拜托了。
    2016年1月21日 4:55
  • 你好,我找到解决方法了,把WIN10性能选项中视觉效果调整为最佳性能就行了,说明系统兼容性很差,你们公司有没有好方法使程序能兼容视觉效果里面的几种设置呢?
    2016年1月22日 1:28
  • 你好,我找到解决方法了,把WIN10性能选项中视觉效果调整为最佳性能就行了,说明系统兼容性很差,你们公司有没有好方法使程序能兼容视觉效果里面的几种设置呢?

    你好:

    很高兴你的问题找到解决方案 。对于使程序能兼容视觉效果的设置,这已经脱离最原始的问题了,我建议你去重新开帖,这样会有更多的人找到帖子,然后一起解决问题,也能更有效的帮助到你。

    2016年1月22日 8:24
    版主