我使用MessageBox()来确认我程序中十几个不同对话框中的用户操作。在这些对话框的 ONE 中,出现MessageBox(),但是既不能通过键盘选择是/否按钮,也不能通过鼠标单击。 MessageBox本身可能会被标题栏拖动,当鼠标在它们上来回移动时,Yes / No按钮会更改其高亮颜色,但不会处理点击。甚至Spy ++程序也显示此时没有任何类型的CLICK消息被发送到MessageBox(但在所有其他时间,当它工作时,通过单击MessageBox生成CLICK消息)。所有对话框都是使用DialogBoxParam()创建的,并且所有对话框模板都有相同的标志,设置,选项(我甚至将所有这些从RC文件中的工作对话框复制到问题对话框中,以确保有没有不同的设置。)
我完全没有想法了。帮助
哦,这是使用Win32API的原生C代码,没有任何MFC,.NET,C ++或其他东西。 (我已经编写了近30年的Windows代码,之前从未见过这样的代码!)
评论的一些答案:
我甚至欣赏这些问题,因为我希望有什么东西,任何会给我一个帮助我解决这个问题的想法!谢谢!
最终编辑:
构建环境相当复杂,需要大量专有代码。仅程序就超过75,000行,简单的例子不会导致问题。实际上,来自其他地方(包括对话框)的30多个其他相同功能的使用工作正常。我的问题不是其他人调试我的代码。相反,我希望人们可能有调试概念这将有助于解决像我这样的问题:诊断一个内置的Windows组件,它只能在一个呼叫中使用多个呼叫。显然,怀特先生等人并不相信这里的任何人都有这样的知识,所以我必须放弃。感谢那些付出努力的人,我确实有一些新想法可以帮助我提出自己的想法。
我的解决方案
感谢那些愿意分享想法的人们,我抓了很多不同类型的东西来绊倒我的错误:
我创建了问题对话框程序,好像它是一个常规窗口而不是一个对话框:它从调用DefWindowProc()返回LRESULT,而不是像对话框那样返回FALSE。这导致了我所看到的非常奇怪的行为。
再次感谢所有尝试过的人。