使用CMFCPropertyGridFileProperty时调试断言

时间:2017-01-23 08:54:06

标签: c++ visual-studio mfc

我正在尝试使用Visual Studio 2015在我的MFC属性网格中实现一个pick-folder选项。就像这样:

在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);
}

现在,编译成功,并且该项目显示在Property Grid中。但是,当我单击项目上的按钮以在单独的对话框中选择一个文件夹时,我收到一个运行时错误,说“#34; Debug Assertion Failed!"表示mfc140ud.dll存在问题。

enter image description here

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

1 个答案:

答案 0 :(得分:0)

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

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