MFC does not call the CPrintDialog::OnInitDialog function in Visual C++ 6.0
This article was previously published under Q193272 On This PageSYMPTOMS
The OnInitDialog() function (which is called in response to a WM_INITDIALOG
message) for a CPrintDialog-derived class, was called in MFC prior to
Visual C++ 6.0. However, this is no longer true for MFC DLLs of Visual C++
6.0. Therefore, programs that rely on OnInitDialog() to be called will not
work as expected.
CAUSE
Previously, MFC set up a message hook for CPrintDialog. This hook was the
only way to catch a WM_INITDIALOG message. MFC for Visual C++ 6.0 purposely
removed this hook so MFC applications would automatically get the new Print
dialog by default on Windows 2000; however, this causes applications that
rely on CPringDialog::OnInitDialog() to fail to work.
RESOLUTION
Set up the message hook function, _AfxCommDlgProc(), in the
constructor of your CPrintDialog-derived class as shown below:
Then, make your project statically linked to MFC.
STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed
at the beginning of this article. This bug has been fixed in the Visual
Studio 6.0 Service Pack 1. To obtain this service pack, visit the following MIcrosoft Developer Network (MSDN) Web site: http://msdn2.microsoft.com/en-us/vstudio/Aa718362.aspx (http://msdn2.microsoft.com/en-us/vstudio/Aa718362.aspx)
For more information about Visual Studio 6.0 Service Pack 1, click the following article numbers to view the articles in the Microsoft Knowledge Base:
193009 (http://support.microsoft.com/kb/193009/)
Visual Studio 6.0 Service Pack 1 readme
194022 (http://support.microsoft.com/kb/194022/) Visual Studio 6.0 service packs, what, where, why
194295 (http://support.microsoft.com/kb/194295/) How to tell that a Visual Studio service pack is installed
MORE INFORMATIONSteps to reproduce the behavior
APPLIES TO
| Article Translations
| ||||||||||||||||||||||||||||||

Back to the top
