home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * The contents of this file are subject to the Netscape Public License
- * Version 1.0 (the "NPL"); you may not use this file except in
- * compliance with the NPL. You may obtain a copy of the NPL at
- * http://www.mozilla.org/NPL/
- *
- * Software distributed under the NPL is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
- * for the specific language governing rights and limitations under the
- * NPL.
- *
- * The Initial Developer of this code under the NPL is Netscape
- * Communications Corporation. Portions created by Netscape are
- * Copyright (C) 1998 Netscape Communications Corporation. All Rights
- * Reserved.
- */
-
- #include "stdafx.h"
- #include "olehelp.h"
-
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
-
- /////////////////////////////////////////////////////////////////////////////
- // COleHelp
-
- #ifndef _AFXDLL
- #undef new
- #endif
- IMPLEMENT_DYNCREATE(COleHelp, CCmdTarget)
- #ifndef _AFXDLL
- #define new DEBUG_NEW
- #endif
-
- COleHelp::COleHelp()
- {
- EnableAutomation();
-
- // To keep the application running as long as an OLE automation
- // object is active, the constructor calls AfxOleLockApp.
- TRACE("Creating COleHelp\n");
-
- AfxOleLockApp();
-
- // Create a slave context for us to use.
- m_pSlaveCX = new CStubsCX(::HtmlHelp, MWContextHTMLHelp);
- }
-
- COleHelp::~COleHelp()
- {
- // To terminate the application when all objects created with
- // with OLE automation, the destructor calls AfxOleUnlockApp.
- TRACE("Destroying COleHelp\n");
-
- AfxOleUnlockApp();
-
- // Destroy the slave context.
- if(m_pSlaveCX) {
- m_pSlaveCX->NiceDestroyContext();
- }
- }
-
-
- void COleHelp::OnFinalRelease()
- {
- // When the last reference for an automation object is released
- // OnFinalRelease is called. The base class will automatically
- // deletes the object. Add additional cleanup required for your
- // object before calling the base class.
-
- CCmdTarget::OnFinalRelease();
- }
-
-
- BEGIN_MESSAGE_MAP(COleHelp, CCmdTarget)
- //{{AFX_MSG_MAP(COleHelp)
- // NOTE - the ClassWizard will add and remove mapping macros here.
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
- BEGIN_DISPATCH_MAP(COleHelp, CCmdTarget)
- //{{AFX_DISPATCH_MAP(COleHelp)
- DISP_FUNCTION(COleHelp, "HtmlHelp", HtmlHelp, VT_EMPTY, VTS_BSTR VTS_BSTR VTS_BSTR)
- //}}AFX_DISPATCH_MAP
- END_DISPATCH_MAP()
-
- // Note: we add support for IID_IOleHelp to support typesafe binding
- // from VBA. This IID must match the GUID that is attached to the
- // dispinterface in the .ODL file.
-
- #ifndef MOZ_COMMUNICATOR_IIDS
- /* 2e696aa0-f8ad-11d0-b09a-00805f8a1db7 */
- static const IID IID_IOleHelp =
- { 0x2e696aa0, 0xf8ad, 0x11d0, {0xb0, 0x9a, 0x00, 0x80, 0x5f, 0x8a, 0x1d, 0xb7} };
- #else
- // {60403D80-872B-11CF-ACC8-0080C82BE3B6}
- static const IID IID_IOleHelp =
- { 0x60403d80, 0x872b, 0x11cf, { 0xac, 0xc8, 0x0, 0x80, 0xc8, 0x2b, 0xe3, 0xb6 } };
- #endif /* MOZ_COMMUNICATOR_IIDS */
-
- BEGIN_INTERFACE_MAP(COleHelp, CCmdTarget)
- INTERFACE_PART(COleHelp, IID_IOleHelp, Dispatch)
- END_INTERFACE_MAP()
-
- #ifndef MOZ_COMMUNICATOR_IIDS
- // {60403D81-872B-11CF-ACC8-0080C82BE3B6}
- IMPLEMENT_OLECREATE(COleHelp, "Netscape.Help.1", 0xd0b2c060, 0xf8ad, 0x11d0, 0xb0, 0x9a, 0x0, 0x80, 0x5f, 0x8a, 0x1d, 0xb7)
- #else
- // {60403D81-872B-11CF-ACC8-0080C82BE3B6}
- IMPLEMENT_OLECREATE(COleHelp, "Netscape.Help.1", 0x60403d81, 0x872b, 0x11cf, 0xac, 0xc8, 0x0, 0x80, 0xc8, 0x2b, 0xe3, 0xb6)
- #endif // MOZ_COMMUNICATOR_IIDS
-
- /////////////////////////////////////////////////////////////////////////////
- // COleHelp message handlers
-
- void COleHelp::HtmlHelp(LPCTSTR pMapFileUrl, LPCTSTR pId, LPCTSTR pSearch)
- {
- // Make sure we have a slave context for us to use.
- if(m_pSlaveCX && !m_pSlaveCX->IsDestroyed()) {
- char *p_Map = NULL;
- char *p_Id = NULL;
- char *p_Search = NULL;
-
- if(pMapFileUrl) {
- p_Map = XP_STRDUP(pMapFileUrl);
-
- CString csUrl;
- WFE_ConvertFile2Url(csUrl, p_Map);
- XP_FREE(p_Map);
- p_Map = XP_STRDUP(csUrl);
- }
- if(pId) {
- p_Id = XP_STRDUP(pId);
- }
- if(pSearch) {
- p_Search = XP_STRDUP(pSearch);
- }
-
- NET_GetHTMLHelpFileFromMapFile(m_pSlaveCX->GetContext(), p_Map, p_Id, p_Search);
-
- if(p_Map) {
- XP_FREE(p_Map);
- }
- if(p_Id) {
- XP_FREE(p_Id);
- }
- if(p_Search) {
- XP_FREE(p_Search);
- }
- }
- }
-