Microsoft KB Archive/178060

= PRB: MFC Active Document Appears to Hang When Printed from Internet Explorer =

Article ID: 178060

Article Last Modified on 3/16/2005

-

APPLIES TO


 * Microsoft Internet Explorer 3.0
 * Microsoft Internet Explorer 3.01
 * Microsoft Internet Explorer 3.02
 * Microsoft Internet Explorer 4.0 128-Bit Edition
 * Microsoft Internet Explorer 4.01 Service Pack 2
 * Microsoft Visual C++ 4.2 Enterprise Edition
 * Microsoft Visual C++ 4.2 Enterprise Edition
 * Microsoft Visual C++ 5.0 Enterprise Edition
 * Microsoft Visual C++ 4.2 Professional Edition
 * Microsoft Visual C++ 4.2 Professional Edition
 * Microsoft Visual C++ 5.0 Professional Edition

-



This article was previously published under Q178060



SYMPTOMS
When an Active Document is viewed in Internet Explorer and the document is printed using the IOLECommandTarget command mechanism, the Active Document server appears to hang.



CAUSE
The Active Document View window is disabled during the print operation and not enabled on completion.



RESOLUTION
Override CView::OnFilePrint, the default handler for ID_FILE_PRINT, in the Active Document server CView-derived class and insert a call to EnableWindow as follows:

void CMyView::OnFilePrint {  CView::OnFilePrint; AfxGetMainWnd->EnableWindow;  // TRUE by default }

NOTE: Make sure you call the base-class OnFilePrint before the call to EnableWindow. ClassWizard does not insert this call for you.



MORE INFORMATION
Internet Explorer issues the Print command to the Active Document server through a call to IOleCommandTarget::Exec using the OLECMDID_PRINT identifier. The BINDSCRB sample code demonstrates mapping this command to ID_FILE_PRINT by adding the ON_OLECMD_PRINT macro to the document's OLECMD map.

However, after printing, the Active Document server no longer accepts input.

Steps to Reproduce Behavior

 * 1) Build the MFC BINDSCRB sample provided with Microsoft Visual C++.
 * 2) Run the resulting application to register the server and save a Scribble document.
 * 3) Drag the Scribble document to Internet Explorer to activate the BINDSCRB server and display the Scribble document.
 * 4) Select Print from the Internet Explorer File menu. The document will be output to the printer, but the view is disabled and will not accept any input.

