PRB: MFC Active Document Appears to Hang When Printed from Internet Explorer (178060)



The information in this article applies to:

  • Microsoft Internet Explorer (Programming) 3.0
  • Microsoft Internet Explorer (Programming) 3.01
  • Microsoft Internet Explorer (Programming) 3.02
  • Microsoft Internet Explorer (Programming) 4.0
  • Microsoft Internet Explorer (Programming) 4.01
  • Microsoft Visual C++, 32-bit Enterprise Edition 4.2
  • Microsoft Visual C++, 32-bit Enterprise Edition 4.2b
  • Microsoft Visual C++, 32-bit Enterprise Edition 5.0
  • Microsoft Visual C++, 32-bit Professional Edition 4.2
  • Microsoft Visual C++, 32-bit Professional Edition 4.2b
  • Microsoft Visual C++, 32-bit Professional Edition 5.0

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.

REFERENCES

180152 HOWTO: Print from an Active Document Server

Modification Type:MinorLast Reviewed:3/16/2005
Keywords:kbprb KB178060