我有一个名为CMyPrintDialog的类派生自MFC的CPrintDialog。它在IE中用作ActiveX,项目静态链接到MFC。它在IE8中运行良好多年。 但是该项目的二进制文件在IE10上运行不佳。打印对话框可能会弹出,但遗憾的是它的OnInitDialog从未被调用并导致问题。 奇怪的是,如果我将VS调试器附加到IE,将正确调用OnInitDialog并且自定义打印对话框可以正常工作。 似乎微软已经改变了一些并导致了问题。
我找到了a similar link,但它不起作用。
万分感谢任何想法。
答案 0 :(得分:1)
这个问题是由IE9之后的IE新功能引起的 - “Hang Resistance”。我们可以通过禁用新功能来避免此问题:将值设置为0,并关闭所有IE窗口。 HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Main \ Type:REG_DWORD名称:HangRecovery值:0
答案 1 :(得分:0)
我没有明白你想说的话,考虑CPrintDialog使你的应用程序崩溃IE10。你需要做的是,
在
的构造函数中设置消息钩子函数_AfxCommDlgProc()CPrintDialog派生类如下所示:
// CMyPrintDialog is a CPrintDialog-derived class.
CMyPrintDialog::CMyPrintDialog(DWORD dwFlags)
: CPrintDialog(FALSE,dwFlags)
{
//{{AFX_DATA_INIT(CMyPrintDialog)
//}}AFX_DATA_INIT
// MFCBUG: MFC 6.0 doesn't set the message hook!
m_pd.Flags |= PD_ENABLEPRINTHOOK | PD_ENABLESETUPHOOK;
// _AfxCommDlgProc is exported from static MFC libraries
m_pd.lpfnPrintHook = _AfxCommDlgProc;
m_pd.lpfnSetupHook = _AfxCommDlgProc;
}