1.- H ello。在本周搜索了很多网站和论坛后,我发现了问题的关键点。问题是,当我在Visual C ++中创建一个新的MFC项目时,如果我将应用程序类型设置为“基于对话框”并让相应的对话框类派生自其默认的CDialogEx,则问题显示立即编译并执行程序而不进行修改任何代码(我不知道你是否可以在你的机器上试试这个)。
2.-有线行为是在对话框窗口处于活动状态时,如果我单击任务栏中的空闲空间(甚至在另一个未最大化的窗口中),则窗口的边框(包括标题栏)基于对话框的应用程序保持“聚焦”(非灰色),单击任务栏或在另一个不完全覆盖我的应用程序窗口的窗口中,然后我的应用程序窗口应该失去焦点。
3.-我在很多代码之后意识到这一点,因为我使用CFileDialog类发现了这种行为,因为当我创建(DoModal)一个CFileDialog实例时,我的应用程序窗口失去焦点(变为“变灰”)文件对话框打开(应该是),但是当文件对话框完成时,我的窗口边框保持灰色(这是不正确的),它一直保持这种状态,直到我最小化并恢复我的窗口,或者切换到另一个窗口并返回到我的窗口。
4.-我发现问题在于继承CDialogEx类,因为我从头开始创建了一个New项目(正如我在第1段中所描述的),看看是不是我修改了一些使我的程序运行的东西错了,事实证明新项目的行为与我在第2段中描述的一样。
5.-好消息是我尝试创建一个新项目,但这次继承自CDialog而不是CDialogEx。令我惊讶的是,这个新程序行为正确,我的意思是,第2段中描述的有线行为在这个新项目中没有出现。正如我在第3段中所描述的,我的另一个问题是文件对话框(CFileDialog类),幸运的是,将我的项目代码更改为继承CDialog,而不是CDialogEx,也解决了这个问题。我的意思是,问题是CDialogEx类。
6.-我决定写这个问题,并提供我发现的信息,因为在我搜索的时候,我看到不同论坛中的很多人在没有得到解决方案的情况下遇到同样的问题。我想提一下,我尝试了论坛中提供的所有建议,至于他们,没有什么对我有用。7.-正如我所说,一种解决方案是将继承从CDialogEx更改为CDialog。但我的问题是,如果你知道我应该做些什么来使我的程序在CDialogEx类下正常运行,因为我更喜欢使用新接口而不是旧接口。我还想知道你是否在视觉工作室中尝试了与我相同的问题。
我希望我的信息和你的答案对别人有用。 非常感谢您的回答。