无法在MessageBox()

时间:2016-01-28 19:46:12

标签: c debugging winapi messagebox

我使用MessageBox()来确认我程序中十几个不同对话框中的用户操作。在这些对话框的 ONE 中,出现MessageBox(),但是既不能通过键盘选择是/否按钮,也不能通过鼠标单击。 MessageBox本身可能会被标题栏拖动,当鼠标在它们上来回移动时,Yes / No按钮会更改其高亮颜色,但不会处理点击。甚至Spy ++程序也显示此时没有任何类型的CLICK消息被发送到MessageBox(但在所有其他时间,当它工作时,通过单击MessageBox生成CLICK消息)。所有对话框都是使用DialogBoxParam()创建的,并且所有对话框模板都有相同的标志,设置,选项(我甚至将所有这些从RC文件中的工作对话框复制到问题对话框中,以确保有没有不同的设置。)

我完全没有想法了。帮助

哦,这是使用Win32API的原生C代码,没有任何MFC,.NET,C ++或其他东西。 (我已经编写了近30年的Windows代码,之前从未见过这样的代码!)

评论的一些答案:

  • 程序没有创建消息或系统挂钩。
  • 唯一的其他线程是外部通信(如TCP / IP和串行)。如果他们有'#34;事件"它转到Windows应用程序事件日志
  • MessageBox()hwndParent参数是创建它们的对话框的hwnd。总是。 (但我尝试使用主窗口的hwnd也得到了相同的结果。)点击(和键盘)不会从扬声器或音响系统产生任何声音(只是来自鼠标/键盘本身的物理点击声) )。
  • 我可能不太清楚,但在任何给定时间可能有一个(并且只有一个)对话框可见,该对话框可能显示一个MessageBox()确认提示。出于我的目的,任何更多的操作员都会不必要地混淆。

我甚至欣赏这些问题,因为我希望有什么东西,任何会给我一个帮助我解决这个问题的想法!谢谢!

最终编辑:

构建环境相当复杂,需要大量专有代码。仅程序就超过75,000行,简单的例子不会导致问题。实际上,来自其他地方(包括对话框)的30多个其他相同功能的使用工作正常。我的问题不是其他人调试我的代码。相反,我希望人们可能有调试概念这将有助于解决像我这样的问题:诊断一个内置的Windows组件,它只能在一个呼叫中使用多个呼叫。显然,怀特先生等人并不相信这里的任何人都有这样的知识,所以我必须放弃。感谢那些付出努力的人,我确实有一些新想法可以帮助我提出自己的想法。

我的解决方案

感谢那些愿意分享想法的人们,我抓了很多不同类型的东西来绊倒我的错误:

我创建了问题对话框程序,好像它是一个常规窗口而不是一个对话框:它从调用DefWindowProc()返回LRESULT,而不是像对话框那样返回FALSE。这导致了我所看到的非常奇怪的行为。

再次感谢所有尝试过的人。

0 个答案:

没有答案