您的位置:首页 > 其它

吐槽:解决一个奇葩问题--奇葩问题的苦谁碰到谁知道

2013-07-04 11:43 330 查看
项目已经七七八八,自测、测试一切正常,有测试报告为证。苦的是让老大拿出去演讲宣传,偶不其然的就会出现一个奇葩问题,界面触控不了(触控程序)而鼠标可以照常点。我们是触控程序啊,出这问题猛点半天也不得劲,客户犯嘀咕,你这到底是硬件还是软件有问题?硬件软件还都是我们公司的,我这不是拆老大的台嘛。还好老大是技术出身,体谅我们码农的苦

,也没找我秋后算账,搞得我一直过意不去,又解决不了。艹、艹、艹。

今天我是撸起袖管,装上虚拟机,把硬件connect进虚拟机,软件硬件就位,今天TMD非要搞点名堂出来。首先确认了这必须是软件问题,不是驱动软件问题。我们软件是C++窗口里面嵌着C#的窗口,问题症结必然在这! 可鄙视的是平日里都好好的,非要偶不其然的发作一下。

实在话,之前出现很多次了,众目睽睽之下且我在场的情况都出现3次了,一直抱有侥幸,以为信春哥+心中默念“不出现、不出现、...”就可以的。可它每次还是很给脸的出现了。主观感觉如果一直在操作,此问题不出现,如果老大或者演讲的人把软硬件丢那商量别的事情,过一会回来,就有可能出现了--这是重要线索。

那么为什么丢一会就会出问题呢,丢一会根本等于0操作,它就出现了?感觉这和屏保有千丝万缕的关系(偷看结局之后发现这条推论完全正确)!刚才说到虚拟机装好,软硬件ready,还给软件加了调试语句,当界面拿到不管触控还是鼠标消息都显示点字出来。我就循着线索和推论,打算让屏保快点出来,就把屏保开了,随便设置一个,启动时间1分钟。撸回界面,卧艹,居然直接重现了?!!什么情况,轮家还没做好心理准备。。。

赶紧和元芳讨论下,这会是什么情况。搅了会基做出了一个判断:有一个剥夺界面焦点的逻辑一直很有可疑,但是我说没有焦点鼠标咋可以点呢,而且焦点剥夺的间隔是1秒,在那间隔也应该是可以点的。不过不管怎样,还是打算先去把剥夺焦点的代码注释下先。

正当我打算去注释代码的时候,元芳又凑合过来,疑似眼睛一亮的看到了我们程序的mini窗口(最小化的时候主窗口隐藏,mini窗口显示),他又发出一个惊世言论:没准和这个mini窗口有关系。那么先证明一下:1修改屏保设置是否一定重现问题?结论是;由于正常的操作,基本上是最小化我们程序,才会去设置别的,那么不最小化我们的窗口,直接修改屏保设置是否重现问题?结论是否!

这说明什么?说明修改屏保后会系统会广播一些消息,而如果我们主窗口时最小化的,也许会错过一些东西导致问题出现。如何验证想法并修复BUG? 元芳再次给出神回复:检查切换主窗口和mini窗口显隐的代码,因为C++嵌C#,平时没问题,在上述情况下,是不是需要更可靠的做显隐动作才能保证C++嵌C#窗口消息的正常运作。



于是我找到相应代码,发现对主窗口只显隐了外层C++窗口。正常情况,通过窗口父子关系,C#窗口也得到管理且一切正常。现在,我在隐藏的时候依次隐藏C#窗口,然后是C++;显示的时候先显示C++再显示C#。 最后的最后,一切都正常了。。。元芳好样的!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐