C++ 使用不带';使用CDialog类时不会发生

C++ 使用不带';使用CDialog类时不会发生,c++,class,visual-c++,cdialog,C++,Class,Visual C++,Cdialog,1.-你好。这周我在很多网站和论坛上搜索了一整周后,发现了问题的症结所在。问题是,当我在VisualC++中创建一个新的MFC项目时,如果我将应用程序类型设置为“基于对话框的”,并让相应的对话框类从默认的CDialogEx派生,则问题立即编译和执行程序而不修改任何代码(我不知道是否可以在您的机器中尝试)。 2.-有线行为是,在对话框窗口处于活动状态时,如果我单击任务栏中的一个可用空间(甚至在另一个未最大化的窗口中),则基于对话框的应用程序窗口的边框(包括标题栏)保持为“聚焦”(非灰色),如果单击

1.-你好。这周我在很多网站和论坛上搜索了一整周后,发现了问题的症结所在。问题是,当我在VisualC++中创建一个新的MFC项目时,如果我将应用程序类型设置为“基于对话框的”,并让相应的对话框类从默认的CDialogEx派生,则问题立即编译和执行程序而不修改任何代码(我不知道是否可以在您的机器中尝试)。 2.-有线行为是,在对话框窗口处于活动状态时,如果我单击任务栏中的一个可用空间(甚至在另一个未最大化的窗口中),则基于对话框的应用程序窗口的边框(包括标题栏)保持为“聚焦”(非灰色),如果单击任务栏或其他没有完全覆盖我的应用程序窗口的窗口,那么我的应用程序窗口应该会失去焦点

3.-我在编写了大量代码后才意识到这一点,因为我使用CFileDialog类发现了这种行为,因为当我创建(DoModal)CFileDialog实例时,当文件对话框打开(应该是这样)时,我的应用程序窗口会失去焦点(变为“灰色”),但当文件对话框完成时,我的窗口边框会保持灰色(这是不正确的),它一直保持这种状态,直到我最小化并恢复我的窗口,或者我切换到另一个窗口并返回到我的窗口

4.-我发现问题在于从CDialogEx类继承,因为我从头开始创建了一个新项目(如第1段所述),以查看是不是我修改了一些东西,导致了我的程序出现错误,结果证明新项目的行为与第2段所述相同

5.-好消息是,我尝试创建一个新项目,但这次是从CDialog而不是CDialogEx继承的。令我惊讶的是,这个新程序的行为正确,我的意思是,第2段中描述的有线行为在这个新项目中不存在。正如我在第3段中描述的,我的另一个问题是文件对话框(CFileDialog类),幸运的是,将我的项目的代码改为从CDialog继承,而不是从CDialogEx继承,也解决了这个问题

6.-我决定写这个问题,并提供我发现的信息,因为当我搜索时,我在不同的论坛上看到很多人都有相同的问题,但没有找到解决方案。我想说的是,我尝试了论坛上提供的所有建议,但对我来说,没有任何效果

7.-正如我所说,一个解决方案是将继承从CDialogEx更改为CDialog。但我的问题是,您是否知道我应该做些什么,以使我的程序在CDialogEx类下正常运行,因为我更喜欢使用新接口,而不是旧接口。我还想知道您是否在visual studio中尝试过与我相同的问题或者不是

我希望我的信息和你的回答对其他人有用。
非常感谢您的回答。

供将来参考:您的问题太冗长了。就目前情况而言,所有人看到的都是一堵文字墙;这个问题刚刚消失。它还包含一个“变通方法”“这个问题会使事情变得更复杂。你至少应该突出你的问题实际上是什么,不要考虑把它和解决办法混在一起。