PRB: Context Sensitive Help Problems in OLE Common DialogsLast reviewed: June 16, 1997Article ID: Q167848 |
The information in this article applies to:
SYMPTOMSWhen you invoke context-sensitive Help for some OLE common dialogs using the "?" button on the title bar or the F1 key, a window with the Help text appears along with the following error message:
"The topic does not exist. Contact your application vendor for an updated Help file. (129)"This only happens with MFC 4.2 and later versions.
CAUSEThis is due to a bug in the OLE common dialog implementation. After handling the WM_HELP message and displaying the window with the Help text, the OLE common dialog forwards the message to the parent of the common dialog. Because this Help ID does not exist in the .hlp file for the project, an error message is displayed saying that the Help topic does not exist.
RESOLUTIONBecause the WM_HELP message is propagated to the parent, the workaround involves handling the message in the parent and preventing the error message from appearing. The following code does this:
//main frame is the parent of the OLE common dialog BOOL CMainFrame::OnHelpInfo(HELPINFO* pHelpInfo) { //if there is pop-up window (dialog) and it is derived from //COleDialog (base class for OLE common dialogs) just return. CWnd *pWnd = FromHandle(::GetLastActivePopup(m_hWnd)); if (pWnd->IsKindOf(RUNTIME_CLASS( COleDialog ))) return TRUE; return CMDIFrameWnd::OnHelpInfo(pHelpInfo); } STATUSMicrosoft is researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.
MORE INFORMATIONTo reproduce this problem, build and run the OCLIENT sample that shipped with Visual C++ 4.2 or later. From the edit menu, select Insert Object. This brings up the COleInsertDialog. Now, using the "?" button or pressing the F1 key, bring up context-sensitive Help for any of the controls. You will notice that along with the Help text window, an error message also appears.
|
Additional query words: ole common dialog context sensitive help
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |