Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

1072 lines
24 KiB

/*
Enhanced NCSA Mosaic from Spyglass
"Guitar"
Copyright 1994 Spyglass, Inc.
All Rights Reserved
Author(s):
Eric W. Sink [email protected]
Jeff Hostetler [email protected]
*/
/* w32cmd.c -- handle dispatch of WM_COMMAND (for menus, accelerators, etc.) */
#include "all.h"
/*
//
// Typedef for the ShellAbout function
//
typedef void (WINAPI *LPFNSHELLABOUT)(HWND, LPTSTR, LPTSTR, HICON);
#ifdef _UNICODE
#define FN_ABOUT _T("ShellAboutW")
#else
#define FN_ABOUT "ShellAboutA"
#endif // _UNICODE
*/
#ifdef _GIBRALTAR
#ifdef _USE_MAPI
static VOID
CC_OnItem_Mail(
HWND hWnd
)
{
MapiSendMail(hWnd, NULL);
}
#endif // _USE_MAPI
void
ShowPageSetup(
HWND hWnd
)
{
PAGESETUPDLG psd;
char szTemp[4];
BOOL fMetricConversion = FALSE;
ZeroMemory(&psd, sizeof(psd));
psd.lStructSize = sizeof(PAGESETUPDLG);
psd.Flags = PSD_DEFAULTMINMARGINS | PSD_INWININIINTLMEASURE | PSD_MARGINS;
psd.hwndOwner = hWnd;
psd.hDevMode = wg.hDevMode;
psd.hDevNames = wg.hDevNames;
psd.hInstance = wg.hInstance;
if (GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_IMEASURE, szTemp, NrElements(szTemp)) &&
szTemp[0] == '0')
{
psd.rtMargin.left = CONVERTTOMM(gPrefs.rtMargin.left);
psd.rtMargin.right = CONVERTTOMM(gPrefs.rtMargin.right);
psd.rtMargin.top = CONVERTTOMM(gPrefs.rtMargin.top);
psd.rtMargin.bottom = CONVERTTOMM(gPrefs.rtMargin.bottom);
fMetricConversion = TRUE;
}
else
{
memcpy(&psd.rtMargin, &gPrefs.rtMargin, sizeof(psd.rtMargin));
}
if (PageSetupDlg(&psd))
{
wg.hDevMode = psd.hDevMode;
wg.hDevNames = psd.hDevNames;
if (fMetricConversion)
{
gPrefs.rtMargin.left = CONVERTTOINCHES(psd.rtMargin.left);
gPrefs.rtMargin.right = CONVERTTOINCHES(psd.rtMargin.right);
gPrefs.rtMargin.top = CONVERTTOINCHES(psd.rtMargin.top);
gPrefs.rtMargin.bottom = CONVERTTOINCHES(psd.rtMargin.bottom);
}
else
{
memcpy(&gPrefs.rtMargin, &psd.rtMargin, sizeof(gPrefs.rtMargin));
}
}
}
#endif // _GIBRALTAR
char szLastURLTyped[MAX_URL_STRING + 1];
static VOID CC_Forward(HWND hWnd, int id)
{
/* forward message to child (document contents) */
struct Mwin * tw = GetPrivateData(hWnd);
if (tw && tw->win)
{
XX_DMsg(DBG_MENU,
("CC_Forward: forwarding message 0x%x to window 0x%x.\n",
id, tw->win));
(void) SendMessage(tw->win, WM_COMMAND, (WPARAM) id, 0L);
}
else
{
char szError[1024];
sprintf(szError, GTR_GetString(SID_WINERR_UNABLE_TO_FORWARD_MESSAGE_D), id);
ERR_ReportWinError(NULL, SID_ERR_SIMPLY_SHOW_ARGUMENTS_S_S, szError, NULL);
}
return;
}
/*****************************************************************/
/*****************************************************************/
/*****************************************************************/
#ifdef DISABLED_BY_DAN /* No more FEATURE_OPTIONS_MENU for this. */
static VOID CC_OnItem_HistorySettings(HWND hWnd)
{
DlgHIST_RunDialog(hWnd, &gPrefs);
return;
}
static void CC_OnItem_SetHomePage(HWND hWnd)
{
char buf[MAX_URL_STRING+1];
if (0 == DlgPrompt_RunDialog(hWnd, RES_MENU_LABEL_OPT_SETHOMEPAGE_SHORT, GTR_GetString(SID_DLG_ENTER_URL), gPrefs.szHomeURL, buf, MAX_URL_STRING))
{
strcpy(gPrefs.szHomeURL, buf);
SavePreferences(&gPrefs);
}
}
/*
static void CC_OnItem_ProxyServer(HWND hWnd)
{
char buf[MAX_URL_STRING+1];
if (0 == DlgPrompt_RunDialog(hWnd, RES_MENU_LABEL_OPT_PROXYSERVER_SHORT, GTR_GetString(SID_DLG_ENTER_URL), gPrefs.szProxy, buf, MAX_URL_STRING))
{
strcpy(gPrefs.szProxy, buf);
SavePreferences(&gPrefs);
}
}
static VOID CC_OnItem_Styles(HWND hWnd)
{
DlgSTY_RunDialog(hWnd, &gPrefs);
return;
}
*/
static VOID CC_OnItem_Temp(HWND hWnd)
{
DlgTemp_RunDialog(hWnd, &gPrefs);
return;
}
static VOID CC_OnItem_LoadImagesAuto(HWND hWnd)
{
gPrefs.bAutoLoadImages = !gPrefs.bAutoLoadImages;
}
#endif /* 0 */
static VOID CC_OnItem_Viewers(HWND hWnd)
{
DlgViewers_RunDialog(hWnd);
return;
}
#ifdef PROTOCOL_HELPERS
static VOID CC_OnItem_Protocols(HWND hWnd)
{
DlgProtocols_RunDialog(hWnd);
return;
}
#endif /* PROTOCOL_HELPERS */
static VOID CC_OnItem_Stop(HWND hWnd)
{
struct Mwin *tw;
tw = GetPrivateData(hWnd);
if (tw)
{
Async_TerminateByWindow(tw);
}
}
void OpenLocalDocument(HWND hWnd, char *s)
{
char path[_MAX_PATH + 1];
char buf[MAX_URL_STRING + 1];
struct Mwin * tw;
strcpy(path, s);
FixPathName(path);
strcpy(buf, "file:///");
strcat(buf, path);
#ifdef _GIBRALTAR
tw = GetPrivateData(hWnd);
CreateOrLoad(tw, buf, NULL);
#else
#ifdef FEATURE_CHANGEURL
GTR_NewWindow(buf, NULL);
#else
tw = GetPrivateData(hWnd);
CreateOrLoad(tw, buf, NULL);
#endif
#endif // _GIBRALTAR
}
#ifndef FEATURE_CHANGEURL
static VOID CC_OnNewWindow(HWND hWnd)
{
#ifndef _GIBRALTAR
GTR_NewWindow(NULL, NULL, 0, FALSE, FALSE, NULL, NULL);
#endif // _GIBRALTAR
return;
}
#endif
/*
static VOID CC_OnOpenLocal(HWND hWnd)
{
extern char szLastURLTyped[MAX_URL_STRING + 1];
DlgOpen_RunDialog(hWnd);
return;
}
*/
#ifdef FEATURE_CHANGEURL
static VOID CC_OnChangeURL(HWND hWnd)
{
extern char szLastURLTyped[MAX_URL_STRING + 1];
if (0 == DlgPrompt_RunDialog(hWnd, RES_MENU_LABEL_CHANGEURL_SHORT, GTR_GetString(SID_DLG_ENTER_URL), szLastURLTyped, szLastURLTyped, MAX_URL_STRING))
{
struct Mwin * tw = GetPrivateData(hWnd);
CreateOrLoad(tw,szLastURLTyped,NULL);
}
return;
}
#endif
/* This function is called by Prompt dialog created in CC_OnOpenURL if the user selects OK */
VOID CC_OnOpenURL_End_Dialog(HWND hWnd)
{
#ifdef _GIBRALTAR
CreateOrLoad(GetPrivateData(hWnd), szLastURLTyped, NULL);
#else
#ifdef FEATURE_CHANGEURL
GTR_NewWindow(szLastURLTyped, NULL);
#else
CreateOrLoad(GetPrivateData(hWnd), szLastURLTyped, NULL);
#endif
#endif // _GIBRALTAR
}
static VOID CC_OnOpenURL(HWND hWnd)
{
extern char szLastURLTyped[MAX_URL_STRING + 1];
#ifdef _GIBRALTAR
DlgPrompt_RunDialog(hWnd, GTR_GetString(SID_DLG_OPEN_TITLE), szLastURLTyped, szLastURLTyped,
MAX_URL_STRING, (FARPROC) CC_OnOpenURL_End_Dialog);
#else
DlgPrompt_RunDialog(hWnd, RES_MENU_LABEL_OPENURL_SHORT, "Enter URL:", szLastURLTyped, szLastURLTyped,
MAX_URL_STRING, (FARPROC) CC_OnOpenURL_End_Dialog);
#endif // _GIBRALTAR
}
static VOID CC_OnAboutBox(HWND hWnd)
{
/*
//
// Display standard WIN32 About dialog
//
HMODULE hMod;
LPFNSHELLABOUT lpfn;
if (hMod = LoadLibrary("SHELL32"))
{
if (lpfn = (LPFNSHELLABOUT)GetProcAddress(hMod, FN_ABOUT))
{
//
// BUGBUG: DBCS
//
(*lpfn)(hWnd, TEXT("Internet Explorer"), "",
LoadIcon(wg.hInstance, MAKEINTRESOURCE(RES_ICO_FRAME)));
}
FreeLibrary(hMod);
}
else
{
//
// Something wrong here
//
MessageBeep( MB_ICONEXCLAMATION );
}
*/
DlgAbout_RunDialog(hWnd);
}
static VOID CC_OnItem_Exit(HWND hWnd)
{
struct Mwin * tw = GetPrivateData(hWnd);
int response;
if (Async_DoThreadsExist())
{
Hidden_EnableAllChildWindows(FALSE, FALSE);
response = MessageBox(NULL, GTR_GetString(SID_DLG_CONFIRM_EXIT),
vv_ApplicationFullName, MB_YESNO);
Hidden_EnableAllChildWindows(TRUE, FALSE);
if (response == IDNO)
return;
}
(void) Plan_CloseAll();
return;
}
static VOID CC_OnItem_Close(HWND hWnd)
{
struct Mwin * tw = GetPrivateData(hWnd);
(void) SendMessage(tw->hWndFrame, WM_CLOSE, (WPARAM) NULL, 0L);
return;
}
static VOID CC_OnItem_Back(HWND hWnd)
{
CC_Forward(hWnd, RES_MENU_ITEM_BACK);
return;
}
static VOID CC_OnItem_Home(HWND hWnd)
{
CC_Forward(hWnd, RES_MENU_ITEM_HOME);
return;
}
#ifdef _GIBRALTAR
static VOID CC_OnItem_SearchInternet(HWND hWnd)
{
CC_Forward(hWnd, RES_MENU_ITEM_SEARCH_INTERNET);
return;
}
static VOID CC_OnItem_Cache(HWND hWnd)
{
DlgCACHE_RunDialog(hWnd);
return;
}
#endif // _GIBRALTAR
static VOID CC_OnItem_Preferences(HWND hWnd)
{
DlgPREF_RunDialog(hWnd);
return;
}
static VOID CC_OnItem_Hotlist(HWND hWnd)
{
DlgHOT_RunDialog(FALSE);
return;
}
static VOID CC_OnItem_GlobalHistory(HWND hWnd)
{
DlgHOT_RunDialog(TRUE);
return;
}
static VOID CC_OnItem_Find(HWND hWnd)
{
CC_Forward(hWnd, RES_MENU_ITEM_FIND);
return;
}
static VOID CC_OnItem_Forward(HWND hWnd)
{
CC_Forward(hWnd, RES_MENU_ITEM_FORWARD);
return;
}
static VOID CC_OnItem_CUT(HWND hWnd)
{
CC_Forward(hWnd, RES_MENU_ITEM_CUT);
return;
}
static VOID CC_OnItem_COPY(HWND hWnd)
{
CC_Forward(hWnd, RES_MENU_ITEM_COPY);
return;
}
static VOID CC_OnItem_PASTE(HWND hWnd)
{
CC_Forward(hWnd, RES_MENU_ITEM_PASTE);
return;
}
static VOID CC_OnItem_PRINT(HWND hWnd)
{
CC_Forward(hWnd, RES_MENU_ITEM_PRINT);
return;
}
static VOID CC_OnItem_PAGESETUP(HWND hWnd)
{
#ifdef _GIBRALTAR
ShowPageSetup(hWnd);
#else
DlgPage_RunDialog(hWnd, &gPrefs.page);
#endif // _GIBRALTAR
}
#ifndef _GIBRALTAR
//
// Not supported on Gibraltar
//
static VOID CC_OnItem_PRINTSETUP(HWND hWnd)
{
BOOL bResult;
struct Mwin * tw = GetPrivateData(hWnd);
bResult = DlgPrnt_RunDialog(tw, hWnd, FALSE);
return;
}
#endif // _GIBRALTAR
static VOID CC_OnItemHelp(HWND hWnd)
{
OpenHelpWindow(hWnd);
return;
}
static VOID CC_OnItem_ContentsHelp(HWND hWnd)
{
char *ext;
char szHelp[_MAX_PATH];
char path[_MAX_PATH];
if (gPrefs.szHelpFile[0])
{
ext = strrchr(gPrefs.szHelpFile, '.');
PREF_GetHelpDirectory(path);
if (ext && 0 == _stricmp(ext, ".hlp"))
{
sprintf(szHelp, "%s%s", path, gPrefs.szHelpFile);
WinHelp(wg.hWndHidden, szHelp, HELP_CONTENTS, 0);
}
}
}
static VOID CC_OnItem_SearchHelp(HWND hWnd)
{
char *ext;
char szHelp[_MAX_PATH];
char path[_MAX_PATH];
if (gPrefs.szHelpFile[0])
{
ext = strrchr(gPrefs.szHelpFile, '.');
PREF_GetHelpDirectory(path);
if (ext && 0 == _stricmp(ext, ".hlp"))
{
sprintf(szHelp, "%s%s", path, gPrefs.szHelpFile);
/* TODO: Figure out how to get searching */
WinHelp(wg.hWndHidden, szHelp, HELP_PARTIALKEY, (DWORD) "");
}
}
}
VOID
ShowDialogHelp(
HWND hWnd,
UINT nDialogID
)
{
char *ext;
char szHelp[_MAX_PATH];
char path[_MAX_PATH];
DWORD dwData;
if (gPrefs.szHelpFile[0])
{
ext = strrchr(gPrefs.szHelpFile, '.');
PREF_GetHelpDirectory(path);
if (ext && 0 == _stricmp(ext, ".hlp"))
{
sprintf(szHelp, "%s%s", path, gPrefs.szHelpFile);
dwData = MAKELONG(nDialogID, 0x0002);
WinHelp(wg.hWndHidden, szHelp, HELP_CONTEXT, dwData);
}
}
}
#ifdef FEATURE_HTML_HIGHLIGHT
static void CC_OnItem_LaunchSearchApp(HWND hWnd)
{
int err;
struct Mwin * tw = GetPrivateData(hWnd);
err = WinExec(gPrefs.szSearchEngine, SW_SHOW);
if (err <= 31)
{
ERR_ReportError(tw, SID_ERR_UNABLE_TO_LAUNCH_CHECK_PATH_S, gPrefs.szSearchEngine, NULL);
}
}
#endif /* FEATURE_HTML_HIGHLIGHT */
#ifdef FEATURE_HELP_TOPIC
static VOID CC_OnItem_GettingStarted(HWND hWnd)
{
char *ext;
char szHelp[_MAX_PATH];
char path[_MAX_PATH];
if (gPrefs.szHelpFile[0])
{
ext = strrchr(gPrefs.szHelpFile, '.');
PREF_GetHelpDirectory(path);
if (ext && 0 == _stricmp(ext, ".hlp"))
{
sprintf(szHelp, "%s%s", path, gPrefs.szHelpFile);
/* TODO: Figure out how to get searching */
WinHelp(wg.hWndHidden, szHelp, HELP_CONTEXT, FEATURE_HELP_TOPIC);
}
}
}
#endif /* FEATURE_GETTING_HELP */
static VOID CC_OnItem_HelpHelp(HWND hWnd)
{
char *ext;
char szHelp[_MAX_PATH];
char path[_MAX_PATH];
if (gPrefs.szHelpFile[0])
{
ext = strrchr(gPrefs.szHelpFile, '.');
PREF_GetHelpDirectory(path);
if (ext && 0 == _stricmp(ext, ".hlp"))
{
sprintf(szHelp, "%s%s", path, gPrefs.szHelpFile);
WinHelp(wg.hWndHidden, szHelp, HELP_HELPONHELP, 0);
}
}
}
static VOID CC_OnItem_TileWindows(HWND hWnd)
{
TW_TileWindows();
}
static VOID CC_OnItem_CascadeWindows(HWND hWnd)
{
TW_CascadeWindows();
}
static VOID CC_OnItem_SwitchWindow(HWND hWnd)
{
HWND hwndNext;
/* User pressed Ctrl-Tab. Go to the next window in the following order:
HTML document window
Image viewer window
Sound player window
This order is consistent with how the windows appear under the window menu */
hwndNext = TW_GetNextWindow(hWnd);
if (hwndNext)
TW_RestoreWindow(hwndNext);
}
#ifdef _GIBRALTAR
static VOID CC_OnItem_Toolbar(HWND hWnd)
{
gPrefs.tb.bShowToolBar = !gPrefs.tb.bShowToolBar;
TBar_ToggleGwcMenu();
}
static VOID CC_OnItem_Location(HWND hWnd)
{
gPrefs.bShowLocation = !gPrefs.bShowLocation;
GWC_DOC_ToggleLocation();
}
static VOID CC_OnItem_StatusBar(HWND hWnd)
{
gPrefs.bShowStatusBar = !gPrefs.bShowStatusBar;
BHBar_ToggleBar();
}
//
// The font style or size has changed. Redraw the
// documents
//
static void
UpdateFont(
HWND hWnd,
BOOL fResolve
)
{
struct Mwin *tw;
if (fResolve)
{
ResolveFontType();
}
FONT_FlushCache();
W3Doc_UpdateBasePointSizes();
//
// Update toolbar controls
//
for (tw = Mlist; tw; tw = tw->next)
{
TBar_UpdateTBar(tw);
}
}
static VOID CC_OnItem_FontSmallest(HWND hWnd)
{
gPrefs.iUserTextSize = FONT_SMALLEST;
UpdateFont(hWnd, FALSE);
}
static VOID CC_OnItem_FontSmall(HWND hWnd)
{
gPrefs.iUserTextSize = FONT_SMALL;
UpdateFont(hWnd, FALSE);
}
static VOID CC_OnItem_FontMedium(HWND hWnd)
{
gPrefs.iUserTextSize = FONT_MEDIUM;
UpdateFont(hWnd, FALSE);
}
static VOID CC_OnItem_FontLarge(HWND hWnd)
{
gPrefs.iUserTextSize = FONT_LARGE;
UpdateFont(hWnd, FALSE);
}
static VOID CC_OnItem_FontLargest(HWND hWnd)
{
gPrefs.iUserTextSize = FONT_LARGEST;
UpdateFont(hWnd, FALSE);
}
static VOID CC_OnItem_FontPlain(HWND hWnd)
{
gPrefs.iUserTextType = FONT_PLAIN;
UpdateFont(hWnd, TRUE);
}
static VOID CC_OnItem_FontFancy(HWND hWnd)
{
gPrefs.iUserTextType = FONT_FANCY;
UpdateFont(hWnd, TRUE);
}
static VOID CC_OnItem_FontMixed(HWND hWnd)
{
gPrefs.iUserTextType = FONT_MIXED;
UpdateFont(hWnd, TRUE);
}
static VOID CC_OnItem_LoadImagesAuto(HWND hWnd)
{
gPrefs.bAutoLoadImages = !gPrefs.bAutoLoadImages;
}
static VOID CC_OnItem_Index(HWND hWnd)
{
}
static VOID CC_OnItem_FontPlus(HWND hWnd)
{
if (gPrefs.iUserTextSize < FONT_LARGEST)
{
++gPrefs.iUserTextSize;
UpdateFont(hWnd, FALSE);
}
}
static VOID CC_OnItem_FontMinus(HWND hWnd)
{
if (gPrefs.iUserTextSize > FONT_SMALLEST)
{
--gPrefs.iUserTextSize;
UpdateFont(hWnd, FALSE);
}
}
static VOID CC_OnItem_Gateway(HWND hWnd)
{
DlgGATE_RunDialog(hWnd);
}
#endif // _GIBRALTAR
/*================================================================*
*================================================================*
*================================================================*/
#define FORWARD_TO_ACTIVE_MDI_CHILD ((LPVOID)-1)
LRESULT CC_OnCommand(HWND hWnd, int wId, HWND hWndCtl, UINT wNotifyCode)
{
register WORD wNdx;
struct Mwin * tw;
XX_DMsg(DBG_MENU, ("\nMENU COMMAND %x\n\n", wId));
switch(wId)
{
#ifdef FEATURE_CHANGEURL
case RES_MENU_ITEM_CHANGEURL:
CC_OnChangeURL(hWnd);
return 0;
#endif
#ifdef FEATURE_HTML_HIGHLIGHT
case RES_MENU_ITEM_SEARCH_LAUNCH:
CC_OnItem_LaunchSearchApp(hWnd);
return 0;
#endif
#ifdef PROTOCOL_HELPERS
case RES_MENU_ITEM_PROTOCOLS:
CC_OnItem_Protocols(hWnd);
return 0;
#endif
#ifdef FEATURE_OPTIONS_MENU
case RES_MENU_ITEM_OPT_HISTORYSETTINGS:
CC_OnItem_HistorySettings(hWnd);
return 0;
case RES_MENU_ITEM_OPT_TEMPDIRECTORY:
CC_OnItem_Temp(hWnd);
return 0;
#endif
//#ifdef FEATURE_WINHELP
case RES_MENU_ITEM_CONTENTS_HELP:
CC_OnItem_ContentsHelp(hWnd);
return 0;
case RES_MENU_ITEM_SEARCH_HELP:
CC_OnItem_SearchHelp(hWnd);
return 0;
case RES_MENU_ITEM_HELP_HELP:
CC_OnItem_HelpHelp(hWnd);
return 0;
//#endif
#ifdef FEATURE_HELP_TOPIC
case RES_MENU_ITEM_GETTING_HELP:
CC_OnItem_GettingStarted(hWnd);
return 0;
#endif
case RES_MENU_ITEM_NEWWINDOW:
CC_OnNewWindow(hWnd);
return 0;
case RES_MENU_ITEM_OPENURL:
CC_OnOpenURL(hWnd);
return 0;
/*
case RES_MENU_ITEM_OPENLOCAL:
CC_OnOpenLocal(hWnd);
return 0;
*/
case RES_MENU_ITEM_CLOSE:
CC_OnItem_Close(hWnd);
return 0;
case RES_MENU_ITEM_PRINT:
CC_OnItem_PRINT(hWnd);
return 0;
case RES_MENU_ITEM_PAGESETUP:
CC_OnItem_PAGESETUP(hWnd);
return 0;
case RES_MENU_ITEM_EXIT:
CC_OnItem_Exit(hWnd);
return 0;
#ifndef _GIBRALTAR
case RES_MENU_ITEM_UNDO:
CC_OnItem_UNDO(hWnd);
return 0;
#endif // _GIBRALTAR
case RES_MENU_ITEM_CUT:
CC_OnItem_CUT(hWnd);
return 0;
case RES_MENU_ITEM_PASTE:
CC_OnItem_PASTE(hWnd);
return 0;
case RES_MENU_ITEM_COPY:
CC_OnItem_COPY(hWnd);
return 0;
case RES_MENU_ITEM_FIND:
CC_OnItem_Find(hWnd);
return 0;
case RES_MENU_ITEM_PREFERENCES:
CC_OnItem_Preferences(hWnd);
return 0;
case RES_MENU_ITEM_BACK:
CC_OnItem_Back(hWnd);
return 0;
case RES_MENU_ITEM_FORWARD:
CC_OnItem_Forward(hWnd);
return 0;
case RES_MENU_ITEM_GLOBALHISTORY:
CC_OnItem_GlobalHistory(hWnd);
return 0;
case RES_MENU_ITEM_HOTLIST:
CC_OnItem_Hotlist(hWnd);
return 0;
case RES_MENU_ITEM_TILEWINDOWS:
CC_OnItem_TileWindows(hWnd);
return 0;
case RES_MENU_ITEM_CASCADEWINDOWS:
CC_OnItem_CascadeWindows(hWnd);
return 0;
case RES_MENU_ITEM_HELPPAGE:
CC_OnItemHelp(hWnd);
return 0;
case RES_MENU_ITEM_ABOUTBOX:
CC_OnAboutBox(hWnd);
return 0;
case RES_MENU_ITEM_HOME:
CC_OnItem_Home(hWnd);
return 0;
case RES_MENU_ITEM_VIEWERS:
CC_OnItem_Viewers(hWnd);
return 0;
case RES_MENU_ITEM_STOP:
CC_OnItem_Stop(hWnd);
return 0;
case RES_MENU_ITEM_SWITCHWINDOW:
CC_OnItem_SwitchWindow(hWnd);
return 0;
#ifdef _GIBRALTAR
case RES_MENU_ITEM_CACHE:
CC_OnItem_Cache(hWnd);
return 0;
case RES_MENU_ITEM_SEARCH_INTERNET:
CC_OnItem_SearchInternet(hWnd);
return 0;
case RES_MENU_ITEM_TOOLBAR:
CC_OnItem_Toolbar(hWnd);
return 0;
case RES_MENU_ITEM_LOCATION:
CC_OnItem_Location(hWnd);
return 0;
case RES_MENU_ITEM_STATUSBAR:
CC_OnItem_StatusBar(hWnd);
return 0;
case RES_MENU_ITEM_SMALLEST:
CC_OnItem_FontSmallest(hWnd);
return 0;
case RES_MENU_ITEM_SMALL:
CC_OnItem_FontSmall(hWnd);
return 0;
case RES_MENU_ITEM_MEDIUM:
CC_OnItem_FontMedium(hWnd);
return 0;
case RES_MENU_ITEM_LARGE:
CC_OnItem_FontLarge(hWnd);
return 0;
case RES_MENU_ITEM_LARGEST:
CC_OnItem_FontLargest(hWnd);
return 0;
case RES_MENU_ITEM_PLAIN:
CC_OnItem_FontPlain(hWnd);
return 0;
case RES_MENU_ITEM_FANCY:
CC_OnItem_FontFancy(hWnd);
return 0;
case RES_MENU_ITEM_MIXED:
CC_OnItem_FontMixed(hWnd);
return 0;
case RES_MENU_ITEM_SHOWIMAGES:
CC_OnItem_LoadImagesAuto(hWnd);
return 0;
case RES_MENU_ITEM_FONTPLUS:
CC_OnItem_FontPlus(hWnd);
return 0;
case RES_MENU_ITEM_FONTMINUS:
CC_OnItem_FontMinus(hWnd);
return 0;
case RES_MENU_ITEM_GATEWAY:
CC_OnItem_Gateway(hWnd);
return 0;
#ifdef _USE_MAPI
case RES_MENU_ITEM_MAIL:
CC_OnItem_Mail(hWnd);
return 0;
#endif // _USE_MAPI
#endif // _GIBRALTAR
#ifdef FEATURE_HTML_HIGHLIGHT
case RES_MENU_ITEM_FINDFIRSTHIGHLIGHT:
case RES_MENU_ITEM_FINDNEXTHIGHLIGHT:
case RES_MENU_ITEM_FINDPREVIOUSHIGHLIGHT:
#endif
case RES_MENU_ITEM_HTMLSOURCE:
case RES_MENU_ITEM_SAVEAS:
case RES_MENU_ITEM_ADDCURRENTTOHOTLIST:
case RES_MENU_ITEM_RELOAD:
case RES_MENU_ITEM_LOADALLIMAGES:
case RES_MENU_ITEM_FINDAGAIN:
case RES_MENU_ITEM_SELECTALL:
case RES_MENU_ITEM_POPUP_LOAD:
case RES_MENU_ITEM_POPUP_SHOW:
case RES_MENU_ITEM_POPUP_SAVEAS:
case RES_MENU_ITEM_POPUP_COPY:
case RES_MENU_ITEM_POPUP_WALLPAPER:
case RES_MENU_ITEM_POPUP_OPEN:
case RES_MENU_ITEM_POPUP_OPENINNEWWINDOW:
case RES_MENU_ITEM_POPUP_DOWNLOAD:
case RES_MENU_ITEM_POPUP_ADDTOHOTLIST:
case RES_MENU_ITEM_POPUP_SETHOMEPAGE:
case RES_MENU_ITEM_POPUP_DUPLICATE:
case RES_MENU_ITEM_POPUP_VIEW_BACKGROUND:
case RES_MENU_ITEM_POPUP_BACKGROUND_WALLPAPER:
/*
Forward these to the currently active window
*/
CC_Forward(hWnd, wId);
return 0;
#ifdef FEATURE_CYBERWALLET
case RES_MENU_ITEM_CYBERWALLET:
Wallet_DoAboutBox(hWnd);
return 0;
#endif
default:
if ((wId >= RES_MENU_ITEM_URL__FIRST__) &&
(wId <= RES_MENU_ITEM_URL__LAST__))
{
tw = GetPrivateData(hWnd);
wNdx = wId - RES_MENU_ITEM_URL__FIRST__;
PREF_HandleCustomURLMenuItem(tw,wNdx);
return (0);
}
if ((wId >= RES_MENU_CHILD__FIRST__) &&
(wId <= RES_MENU_CHILD__LAST__))
{
TW_ActivateWindowFromList(wId, -1, NULL);
return 0;
}
if (wId == RES_MENU_CHILD_MOREWINDOWS)
{
DlgSelectWindow_RunDialog(hWnd);
return 0;
}
if ((wId >= RES_MENU_ITEM_SPM__FIRST__) &&
(wId <= RES_MENU_ITEM_SPM__LAST__))
{
tw = GetPrivateData(hWnd);
if (Hidden_EnableAllChildWindows(FALSE,TRUE))
{
OpaqueOSData osd;
HTSPMStatusCode hsc;
unsigned char * szMoreInfo;
szMoreInfo = NULL;
osd.tw = tw;
osd.request = NULL;
hsc = HTSPM_OS_DoMenuCommand(&osd,wId,&szMoreInfo);
Hidden_EnableAllChildWindows(TRUE,TRUE);
if (hsc==HTSPM_STATUS_MOREINFO) /* user asked for more information */
{ /* send them to a spm-defined url. */
if (szMoreInfo && *szMoreInfo)
CreateOrLoad(tw,szMoreInfo,NULL);
if (szMoreInfo)
GTR_FREE(szMoreInfo);
}
}
return (0);
}
/* We couldn't handle the command - pass to Windows */
FORWARD_WM_COMMAND(hWnd, wId, hWndCtl, wNotifyCode, Frame_DefProc);
return 0;
}
}