You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
3.3 KiB
117 lines
3.3 KiB
/*******************************************************************************
|
|
*
|
|
* (C) COPYRIGHT MICROSOFT CORPORATION, 1998
|
|
*
|
|
* TITLE: WIACSH.CPP
|
|
*
|
|
* VERSION: 1.0
|
|
*
|
|
* AUTHOR: ShaunIv
|
|
*
|
|
* DATE: 1/20/2000
|
|
*
|
|
* DESCRIPTION: Helper functions for context sensitive help
|
|
*
|
|
*******************************************************************************/
|
|
#include "precomp.h"
|
|
#pragma hdrstop
|
|
#include "wiacsh.h"
|
|
|
|
//
|
|
// If the help ID is >= this number, it must be an item that lives in windows.hlp,
|
|
// otherwise, it lives in whatever the WIA help file is called (currently camera.hlp)
|
|
//
|
|
#define MAX_WIA_HELP_ID 20000
|
|
|
|
namespace WiaHelp
|
|
{
|
|
static LPCTSTR DetermineHelpFileName( HWND hWnd, const DWORD *pdwContextIds )
|
|
{
|
|
//
|
|
// Can't happen, but still...
|
|
//
|
|
if (!pdwContextIds)
|
|
{
|
|
return WIA_SPECIFIC_HELP_FILE;
|
|
}
|
|
|
|
//
|
|
// If it isn't a window, it isn't a standard id
|
|
//
|
|
if (!hWnd || !IsWindow(hWnd))
|
|
{
|
|
return WIA_SPECIFIC_HELP_FILE;
|
|
}
|
|
|
|
//
|
|
// If it doesn't have a window id, it isn't a standard id either
|
|
//
|
|
LONG nWindowId = GetWindowLong( hWnd, GWL_ID );
|
|
if (!nWindowId)
|
|
{
|
|
return WIA_SPECIFIC_HELP_FILE;
|
|
}
|
|
|
|
for (const DWORD *pdwCurr = pdwContextIds;*pdwCurr;pdwCurr+=2)
|
|
{
|
|
//
|
|
// If this is the window ID we are looking for...
|
|
//
|
|
if (nWindowId == static_cast<LONG>(pdwCurr[0]))
|
|
{
|
|
//
|
|
// return true if its help id is greater than or equal to the max legal id number for wia
|
|
//
|
|
return (pdwCurr[1] >= MAX_WIA_HELP_ID ? WIA_STANDARD_HELP_FILE : WIA_SPECIFIC_HELP_FILE);
|
|
}
|
|
}
|
|
|
|
//
|
|
// Not found
|
|
//
|
|
return WIA_SPECIFIC_HELP_FILE;
|
|
}
|
|
|
|
LRESULT HandleWmHelp( WPARAM wParam, LPARAM lParam, const DWORD *pdwContextIds )
|
|
{
|
|
if (pdwContextIds)
|
|
{
|
|
LPHELPINFO pHelpInfo = reinterpret_cast<LPHELPINFO>(lParam);
|
|
if (pHelpInfo && pHelpInfo->iContextType == HELPINFO_WINDOW)
|
|
{
|
|
//
|
|
// Call WinHelp
|
|
//
|
|
WinHelp(
|
|
reinterpret_cast<HWND>(pHelpInfo->hItemHandle),
|
|
DetermineHelpFileName( reinterpret_cast<HWND>(pHelpInfo->hItemHandle), pdwContextIds ),
|
|
HELP_WM_HELP,
|
|
reinterpret_cast<ULONG_PTR>(pdwContextIds)
|
|
);
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
LRESULT HandleWmContextMenu( WPARAM wParam, LPARAM lParam, const DWORD *pdwContextIds )
|
|
{
|
|
if (pdwContextIds)
|
|
{
|
|
HWND hWnd = reinterpret_cast<HWND>(wParam);
|
|
if (hWnd)
|
|
{
|
|
//
|
|
// Call WinHelp
|
|
//
|
|
WinHelp(
|
|
hWnd,
|
|
DetermineHelpFileName( hWnd, pdwContextIds ),
|
|
HELP_CONTEXTMENU,
|
|
reinterpret_cast<ULONG_PTR>(pdwContextIds)
|
|
);
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
} // End namespace WiaHelp
|