我的对话框未在 MFC C++ 中显示
Posted
技术标签:
【中文标题】我的对话框未在 MFC C++ 中显示【英文标题】:My dialog doesn't show in MFC C++ 【发布时间】:2013-01-12 10:03:27 【问题描述】:我正在开发 MFC C++ 应用程序,但在我的项目中尝试打开另一个对话框时遇到了问题。
看这个小视频我记录器:click here (Youtube)
我的一些代码:
CFindWindow window;
window.DoModal();
这是FindWindow.h
文件:
#pragma once
// CFindWindow dialog
class CFindWindow : public CDialogEx
DECLARE_DYNAMIC(CFindWindow)
public:
CFindWindow(CWnd* pParent = NULL); // standard constructor
virtual ~CFindWindow();
// Dialog Data
enum IDD = IDD_FINDWINDOW_DIALOG ;
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
;
我不确定您需要什么来帮助我解决这个问题,请告诉我,我会为您提供所需的一切。
提前致谢!
【问题讨论】:
MFC 合理使用了ASSERT
和ENSURE
。如果你在调试中运行并且你做错了什么,MFC 通常会告诉你。 VS 还附带了 MFC 的源代码,因此单步调试 MFC 代码也很有帮助。
您尝试过重建解决方案吗?
@ta.speot.is 把它写成答案,因为这是我最后想到的 :))但它现在有效。
我的 MFC 经验与更改相关!
【参考方案1】:
几乎不可能在不调试的情况下为您提供解决方案。
如果遵循以前帖子中的建议不能帮助您发布重复此行为的应用程序或测试应用程序。
【讨论】:
【参考方案2】:有时资源编译器不会检测到更改。重建解决方案有助于缓解这种情况。
【讨论】:
【参考方案3】:您将该代码放入按钮处理程序中。在那里放置一个断点以确保它确实被调用。或者,TRACE 宏也有助于记录调试构建的一些输出。仅凭提供的信息(而且该视频也没有多大帮助......)很难判断出了什么问题。
【讨论】:
我已经在window.DoModal();
上设置了断点,看起来代码正在运行...【参考方案4】:
检查是否有其他资源已经与 IDD_FINDWINDOW_DIALOG 具有相同的值。 检查您的 IDD_FINDWINDOW_DIALOG 的源代码并查看 id 号,看看是否有其他具有相同 id 的资源。
设置一个断点并进入 DoModal 并尝试。
或者将您的代码放在 try catch 块中,看看是否有任何异常。
检查单击按钮以调用 findwindow 窗体的主窗体是否覆盖了任何可能阻止 findwindow 弹出的事件。
【讨论】:
以上是关于我的对话框未在 MFC C++ 中显示的主要内容,如果未能解决你的问题,请参考以下文章
在网格视图中显示数据 - 基于 MFC c++ 对话框的应用程序