我目前在MFCPropertySheet中有一系列MFCPropertyPages,它们都包含各种控件。
但是,在一个特定的对话框中,我有一个MFCFontComboBox。这个特定的PropertyPage正确加载大约5%的时间。但是,在其他95%的情况下,它要么跳到PropertySheet中的第一个PropertyPage,要么转到下一个PropertyPage。我似乎无法让PropertyPage 100%的时间加载或100%的时间失败 - 这使得这个问题非常难以调试。但是,我所做的是从PropertyPage和PropertyPage中删除MFCFontComboBox从那时起加载完全没问题!因此,我确定它是导致此问题的MFCFontComboBox。
我已将MFCFontComboBox的ID(包括资源编号ID)更改为不同的值,但无济于事。我也尝试将类型更改为Droplist等,并将所有外观和行为值设置为全部为true且全部为false,但它似乎仍然无法解决问题或导致它比以前更多或更少工作。
我注意到,与其他PropertyPages相比,当它出现时,它加载的速度比其他PropertyPages慢了大约半秒。
PropertyPage的代码与我使用的所有代码的形式相同。目前它在这里:
#include "stdafx.h"
#include "CfgUtilityApp.h"
#include "Settings_Annotation.h"
// CSettings_System dialog
IMPLEMENT_DYNAMIC(CSettings_Annotation, CMFCPropertyPage)
CSettings_Annotation::CSettings_Annotation()
: CMFCPropertyPage(CSettings_Annotation::IDD)
{
}
CSettings_Annotation::~CSettings_Annotation()
{
}
void CSettings_Annotation::DoDataExchange(CDataExchange* pDX)
{
CMFCPropertyPage::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CSettings_Annotation, CMFCPropertyPage)
END_MESSAGE_MAP()
// CSettings_System message handlers
BOOL CSettings_Annotation::OnInitDialog()
{
return CMFCPropertyPage::OnInitDialog();
}
我没有收到任何错误或崩溃。然而!调试它,我发现PropertyPage是构造的但是当MFCFontComboBox存在时它不会进入OnInitDialog()函数。此外,从属性表中手动调用OnInitDialog()会导致程序挂起。删除MFCFontComboBox允许任何一个正确工作。
此特定PropertySheet位于一个DLL中,该DLL通过可执行文件在单独的线程上调用。
我试图将对话框创建为指针,然后将其添加到工作表中,并且还创建一个成员并将其传入。没有人避免这个问题。
我已按照此处所述构建了我的PropertySheet和PropertyPages:http://www.functionx.com/visualc/dialogboxes/mfcpspp.htm
这最初是我重新配置的现有DLL项目的可执行端口。在resource.h或.rc文件中可能存在错误,但我检查了可能发生的任何事情。我觉得这个端口可能导致了这个问题。
请帮我调试我的应用程序。这个问题困扰了我。谢谢!