【问题标题】:Debug Assertion when using CMFCPropertyGridFileProperty使用 CMFCPropertyGridFileProperty 时的调试断言
【发布时间】:2017-01-23 08:54:05
【问题描述】:

我正在尝试使用 Visual Studio 2015 在我的 MFC 属性网格中实现选择文件夹选项。像这样:

在 Properties.h 中:

CMFCPropertyGridCtrl            GridCtrl;
CMFCPropertyGridFileProperty    VideoFolder;

在 Properties.cpp 中:

Properties::Properties() : VideoFolder(L"Folder",L"C:\\Users\\")    
{...}

int Properties::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
[...]
GridCtrl.Create(WS_CHILD | WS_BORDER | WS_VISIBLE | WS_TABSTOP, Rect, this, NULL);
GridCtrl.AddProperty(ICANDI);
ICANDI->AddSubItem(&VideoFolder);
}

现在,编译成功,该项目按预期显示在属性网格中。但是当我单击项目上的按钮以在单独的对话框中选择一个文件夹时,我收到一个运行时错误,提示“调试断言失败!”表示 mfc140ud.dll 有问题。

有趣的是:这是在 Visual Studio 2008 中工作的,查看 Visual Studio 2008 Feature Pack 中的代码示例。有一个名为 NewControls 的示例,它调用相同的例程并且运行时不会崩溃。

【问题讨论】:

  • 这可能有助于显示断言.....
  • “按重试调试应用程序” - 这将带您直接找到失败的表达式。这是您分析的一个很好的起点。您的问题也应该包含此信息。

标签: c++ visual-studio mfc


【解决方案1】:

我遇到了同样的断言问题,并找到了适合我的解决方案:

  • 我的 Visual Studio 解决方案项目是一个对话框项目,我使用的是 CWinApp 类。
  • 如果您想使用文件夹选择器 (CShellManager::BrowseForFolder()) 那么您必须改为将 CWinApp 类更改为 CWinAppEx。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多