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.
 
 
 
 
 
 

248 lines
8.4 KiB

//*-----------------------------------------------------------------------
//| MODULE: WCTMAIN.C
//| PROJECT: Windows Comparison Tool
//|
//| PURPOSE: This module contains the code to handle all commands and
//| main window action.
//|
//| REVISION HISTORY:
//| 04-16-92 w-steves Testdlgs (2.0) code complete
//| 10-16-90 randyki Clean up work, create history
//| 07-30-90 garysp Created file
//*-----------------------------------------------------------------------
#include "uihdr.h"
#ifndef WIN32
#pragma hdrstop ("uipch.pch")
#endif
//*-----------------------------------------------------------------------
//| WctCommandHandler
//|
//| PURPOSE: Handles all the commands from the main window.
//|
//| ENTRY: wParam - word parameter (part of message info)
//| lParam - longword parameter (part of message info)
//|
//| EXIT: None.
//*-----------------------------------------------------------------------
VOID WctCommandHandler(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
INT wCurItem = 0;
INT fDelete;
CHAR szTmpDsc[cchMaxDsc + 1];
CHAR sztmpFName[cchFileNameMax];
HCURSOR hOldCursor;
switch ( wParam ) {
default:
break;
case IDM_NEW:
if (WctFileNew() == TRUE)
{
WctInitMenu(TRUE);
WctFillList();
SetStaticItemText();
}
break;
case IDM_OLD:
if (WctFileOpen() == TRUE)
{
WctInitMenu(TRUE);
WctFillList();
SetStaticItemText();
}
break;
case IDM_IMPORT:
if (WctFileImport((LPSTR)&sztmpFName) == TRUE)
{
hOldCursor = SetCursor (hHourGlass);
if (hWnd) fTDLImport((LPSTR)&sztmpFName,szFullFName,
(IMPORTERR) lpfnImportCallBack);
WctFillList();
SetStaticItemText();
SetCursor (hOldCursor);
}
break;
case IDM_EXPORT:
if (WctFileExport((LPSTR)&sztmpFName) == TRUE)
{
hOldCursor = SetCursor (hHourGlass);
if (hWnd) fTDLExport(szFullFName, (LPSTR)&sztmpFName);
SetCursor (hOldCursor);
}
break;
case IDM_NEWDLG:
WctDialogNew();
break;
case IDM_EDITDLG:
WctDialogEdit();
break;
case IDM_DELDLG:
// Can handle multiple selected list box. It will start from
// the bottom of the list and delete each one accordingly.
//-----------------------------------------------------------
for (wCurItem = cDlg; wCurItem > 0; wCurItem--)
{
if(SendMessage(hWndList, LB_GETSEL, wCurItem, 0L))
{
SendMessage(hWndList, LB_GETTEXT, wCurItem,
(LONG)(LPSTR)szTmpDsc);
fDelete = WctError(hWndMain, MB_YESNO | MB_DEFBUTTON2 |
MB_ICONQUESTION, (INT) IDS_DELETEDLG,
(LPSTR)szTmpDsc);
if (fDelete == IDYES)
{
hOldCursor = SetCursor (hHourGlass);
if (fDelDialog(szFullFName,wCurItem)==WCT_NOERR)
SendMessage(hWndList, LB_DELETESTRING,
wCurItem, 0);
cDlg--;
WinAssert(cDlg >= 0);
SetStaticItemText();
SetCursor (hOldCursor);
}
}
}
break;
case IDM_COMPDLG:
WctDialogCompare();
break;
case IDM_PREVDLG:
ghViewWnd = WctViewControls(hWnd);
break;
case IDM_COMPPREF:
WctCompPref();
break;
#ifdef DOHELP
case IDM_HELP_INDEX:
fHelpFileUsed=TRUE;
WinHelp(hWnd, (LPSTR)szHelpFileName, HELP_INDEX, 0L) ;
break ;
case IDM_HELP_KEYBOARD:
fHelpFileUsed=TRUE;
WinHelp(hWnd, (LPSTR)szHelpFileName, HELP_CONTEXT, 100L) ;
break ;
case IDM_HELP_COMMANDS:
fHelpFileUsed=TRUE;
WinHelp(hWnd, (LPSTR)szHelpFileName, HELP_CONTEXT, 200L) ;
break ;
case IDM_HELP_PROCEDURES:
fHelpFileUsed=TRUE;
WinHelp(hWnd, (LPSTR)szHelpFileName, HELP_CONTEXT, 300L) ;
break ;
case IDM_HELP_HELP:
fHelpHelpUsed=TRUE;
WinHelp(hWnd, (LPSTR)szHelpHelpName, HELP_INDEX, 0L) ;
break ;
#endif
case IDM_ABOUT:
#ifdef WIN32
WctAbout ();
#else
AboutTestTool (hWndMain, MST_TESTDLGS, 0);
#endif
break;
case IDM_EXIT:
PostMessage(hWndMain, WM_SYSCOMMAND, SC_CLOSE, 0L);
break;
}
return;
}
//*-----------------------------------------------------------------------
//| WctListBoxEvent
//|
//| PURPOSE: Process events for the main window (listbox)
//|
//| ENTRY: wParam, lParam - parameters given as message parms
//|
//| EXIT: None.
//*-----------------------------------------------------------------------
VOID WctListBoxEvent(WPARAM wParam, LPARAM lParam)
{
INT wCurItem = 0, wCtrlKey = 0, wIdMsg = 0;
CHAR szKeyboardState[266];
// Should this be an assert LOWORD(lParam)==hWndList
//----------------------------------------------------------------
if ( GET_WM_COMMAND_HWND (wParam, lParam) != hWndList )
return;
switch ( GET_WM_COMMAND_ID (wParam, lParam) ){
default:
break;
case LBN_DBLCLK:
// Find the Selected Item
//-----------------------------------------------------
for (wCurItem = 0; wCurItem <= cDlg; wCurItem++)
if (SendMessage(hWndList, LB_GETSEL, wCurItem, 0L))
break;
// NO ITEM SELECTED 8/21/90 BUG FIX - SOURCE TERESAME.
// Changed vars (wCurItem, wCtrlKey, wIdMsg to int
// Just break if no item is selected.
if (wCurItem == LB_ERR)
break;
GetKeyboardState( (BYTE FAR *)szKeyboardState );
wCtrlKey = (128 & szKeyboardState[VK_CONTROL]);
if (wCurItem == 0)
wIdMsg = IDM_NEWDLG;
else
wIdMsg = ((wCtrlKey == 0)? IDM_EDITDLG : IDM_COMPDLG);
SendMessage(hWndMain, WM_COMMAND, wIdMsg, 0L);
break;
}
return;
}
//*------------------------------------------------------------------------
//| WctError
//|
//| PURPOSE: Flashes a Message Box to the user. The format string is
//| taken from the STRINGTABLE.
//|
//| ENTRY: hwnd - handle of the window that is invoking the alert
//| bflags - the flags to be used by the MessageBox
//| id - address of additional string information to be
//| sent to message box.
//| ... - Other parameters sent to wsprintf
//|
//| EXIT: Returns value returned from message box.
//*------------------------------------------------------------------------
INT FAR WctError(HWND hwnd, WORD bFlags, INT id, ...)
{
CHAR sz[160];
CHAR szFmt[128];
va_list ap;
LoadString(hgInstWct, id, szFmt, sizeof(szFmt));
va_start( ap, id );
wvsprintf(sz, szFmt, ap);
va_end( ap );
LoadString(hgInstWct, IDS_APPNAME, szFmt, sizeof(szFmt));
return (MessageBox(hwnd, sz, szFmt, bFlags));
}