Leaked source code of windows server 2003
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.
 
 
 
 
 
 

368 lines
9.8 KiB

//******************************************************************************
// File: \wacker\TDLL\Key_sdlg.c Created: 6/5/98 By: Dwayne M. Newsome
//
// Copyright 1998 by Hilgraeve Inc. --- Monroe, MI
// All rights reserved
//
// Description:
// This file is the key summary dialog procedure. Its purpose is to display
// a list of defined key macros and allow for the creation, modification and
// deletion of key macros.
//
// $Revision: 6 $
// $Date: 2/25/02 1:17p $
// $Id: key_sdlg.c 1.1 1998/06/11 12:03:53 dmn Exp $
//
//******************************************************************************
#include <windows.h>
#pragma hdrstop
#include "stdtyp.h"
#include "mc.h"
#ifdef INCL_KEY_MACROS
#include <term\res.h>
#include "tdll.h"
#include "errorbox.h"
#include "globals.h"
#include "misc.h"
#include "hlptable.h"
#include "keyutil.h"
#if !defined(DlgParseCmd)
#define DlgParseCmd(i,n,c,w,l) i=LOWORD(w);n=HIWORD(w);c=(HWND)l;
#endif
#define IDC_LB_KEYS_KEYLIST 101
#define IDC_PB_KEYS_MODIFY 102
#define IDC_PB_KEYS_NEW 103
#define IDC_PB_KEYS_DELETE 104
//
// helper functions
//
static void setButtonState( HWND hDlg );
static int getSelectedMacro( HWND hDlg, keyMacro * pMacro );
//******************************************************************************
// FUNCTION:
// KeySummaryDlg
//
// DESCRIPTION:
// This is the dialog proc for the key summary dialog.
//
// ARGUMENTS: Standard Windows dialog manager
//
// RETURNS: Standard Windows dialog manager
//
//
BOOL CALLBACK KeySummaryDlg(HWND hDlg, UINT wMsg, WPARAM wPar, LPARAM lPar)
{
HWND hwndChild;
HWND listBox;
INT nId;
INT nNtfy;
INT iTabStop;
int iRet = 0;
int lCurSelected;
TCHAR errorMsg[256];
TCHAR errorMsgFmt[256];
TCHAR msgTitle[100];
TCHAR keyName[35];
keyMacro * pKeyMacro;
static DWORD aHlpTable[] = {IDC_LB_KEYS_KEYLIST , IDH_LB_KEYS_KEYLIST,
IDC_PB_KEYS_MODIFY , IDH_PB_KEYS_MODIFY,
IDC_PB_KEYS_NEW , IDH_PB_KEYS_NEW,
IDC_PB_KEYS_DELETE , IDH_PB_KEYS_DELETE,
IDCANCEL, IDH_CANCEL,
IDOK, IDH_OK,
0, 0};
//
// process messages
//
switch (wMsg)
{
case WM_INITDIALOG:
{
pKeyMacro = keysCreateKeyMacro();
pKeyMacro->hSession = (HSESSION) lPar;
if ( pKeyMacro == 0 )
{
EndDialog(hDlg, FALSE);
}
SetWindowLongPtr( hDlg, DWLP_USER, (LONG_PTR)pKeyMacro );
mscCenterWindowOnWindow( hDlg, GetParent(hDlg) );
iTabStop = 85;
listBox = GetDlgItem( hDlg, IDC_LB_KEYS_KEYLIST );
SendMessage( listBox, LB_SETTABSTOPS, (WPARAM)1, (LPARAM)&iTabStop );
keysLoadSummaryList( listBox );
SendMessage( listBox, LB_SETCURSEL, 0, 0 );
setButtonState( hDlg );
break;
}
case WM_DESTROY:
pKeyMacro = (keyMacro *)GetWindowLongPtr(hDlg, DWLP_USER);
free(pKeyMacro);
pKeyMacro = 0;
break;
case WM_CONTEXTMENU:
doContextHelp(aHlpTable, wPar, lPar, TRUE, TRUE);
break;
case WM_HELP:
doContextHelp(aHlpTable, wPar, lPar, FALSE, FALSE);
break;
case WM_COMMAND:
DlgParseCmd(nId, nNtfy, hwndChild, wPar, lPar);
switch (nId)
{
case IDOK:
EndDialog(hDlg, TRUE);
break;
case IDCANCEL:
EndDialog(hDlg, FALSE);
break;
case IDC_PB_KEYS_MODIFY:
pKeyMacro = (keyMacro *)GetWindowLongPtr(hDlg, DWLP_USER);
getSelectedMacro( hDlg, pKeyMacro );
pKeyMacro->editMode = KEYS_EDIT_MODE_EDIT;
if ( DoDialog(glblQueryDllHinst(), MAKEINTRESOURCE(IDD_KEYDLG),
hDlg, KeyDlg, (LPARAM)pKeyMacro ))
{
listBox = GetDlgItem( hDlg, IDC_LB_KEYS_KEYLIST );
keysLoadSummaryList( listBox );
SendMessage( listBox, LB_SETCURSEL, 0, 0 );
setButtonState( hDlg );
}
break;
case IDC_PB_KEYS_NEW:
pKeyMacro = (keyMacro *)GetWindowLongPtr(hDlg, DWLP_USER);
keysResetKeyMacro( pKeyMacro );
pKeyMacro->editMode = KEYS_EDIT_MODE_INSERT;
if ( DoDialog(glblQueryDllHinst(), MAKEINTRESOURCE(IDD_KEYDLG),
hDlg, KeyDlg, (LPARAM)pKeyMacro ))
{
listBox = GetDlgItem( hDlg, IDC_LB_KEYS_KEYLIST );
keysLoadSummaryList( listBox );
SendMessage( listBox, LB_SETCURSEL, 0, 0 );
setButtonState( hDlg );
}
break;
case IDC_PB_KEYS_DELETE:
{
LoadString(glblQueryDllHinst(), IDS_DELETE_KEY_MACRO,
errorMsgFmt, sizeof(errorMsgFmt) / sizeof(TCHAR));
LoadString(glblQueryDllHinst(), IDS_MB_TITLE_WARN, msgTitle,
sizeof(msgTitle) / sizeof(TCHAR));
pKeyMacro = (keyMacro *)GetWindowLongPtr(hDlg, DWLP_USER);
listBox = GetDlgItem( hDlg, IDC_LB_KEYS_KEYLIST );
lCurSelected = SendMessage( listBox, LB_GETCURSEL, 0, 0 );
getSelectedMacro( hDlg, pKeyMacro );
keysGetDisplayString( &pKeyMacro->keyName, 1, keyName, sizeof(keyName) );
wsprintf( errorMsg, errorMsgFmt, keyName );
if ((iRet = TimedMessageBox(hDlg, errorMsg, msgTitle,
MB_YESNO | MB_ICONEXCLAMATION, 0)) == IDYES)
{
keysRemoveMacro( pKeyMacro );
keysLoadSummaryList( listBox );
if ( lCurSelected > 0 )
{
lCurSelected--;
}
SendMessage( listBox, LB_SETCURSEL, lCurSelected, 0 );
setButtonState( hDlg );
}
break;
}
case IDC_LB_KEYS_KEYLIST:
{
switch ( nNtfy )
{
case LBN_SELCHANGE:
setButtonState( hDlg );
break;
case LBN_DBLCLK:
pKeyMacro = (keyMacro *)GetWindowLongPtr(hDlg, DWLP_USER);
getSelectedMacro( hDlg, pKeyMacro );
pKeyMacro->editMode = KEYS_EDIT_MODE_EDIT;
DoDialog( glblQueryDllHinst(),
MAKEINTRESOURCE(IDD_KEYDLG),
hDlg,
KeyDlg,
(LPARAM)pKeyMacro );
break;
default:
break;
}
}
default:
return FALSE;
}
break;
default:
return FALSE;
}
return TRUE;
}
//******************************************************************************
// Method:
// getSelectedMacro
//
// Description:
// Gets the definition of the selected macro from the macro summary list box.
//
// Arguments:
// hDlg - Handle to the key macro summary dialog
// pMacro - Pointer to the keyMacro structure to fill
//
// Returns:
// 0 if an error occured, non zero if the key is retrieved.
//
// Throws:
// None
//
// Author: Dwayne M. Newsome, 6/5/98
//
//
int getSelectedMacro( HWND hDlg, keyMacro * pMacro )
{
HWND listBox;
int lCurSelected;
int lSelectedMacro;
listBox = GetDlgItem( hDlg, IDC_LB_KEYS_KEYLIST );
lCurSelected = SendMessage( listBox, LB_GETCURSEL, 0, 0 );
if ( lCurSelected == LB_ERR )
{
return 0;
}
lSelectedMacro = SendMessage( listBox, LB_GETITEMDATA, lCurSelected, 0 );
if ( lSelectedMacro == LB_ERR )
{
return 0;
}
return keysGetMacro( lSelectedMacro, pMacro );
}
//******************************************************************************
// Method:
// setButtonState
//
// Description:
// Sets the states of the new, modify and delete buttons.
//
// Arguments:
// HWND hDlg
//
// Returns:
// void
//
// Throws:
// None
//
// Author: Dwayne M. Newsome, 6/4/98
//
//
void setButtonState( HWND hDlg )
{
BOOL fEnable = FALSE;
int nCount;
HWND listBox;
HWND modifyButton;
HWND deleteButton;
HWND newButton;
listBox = GetDlgItem( hDlg, IDC_LB_KEYS_KEYLIST );
nCount = SendMessage( listBox, LB_GETCOUNT, 0, 0 );
if (nCount > 0)
{
EnableWindow(listBox, TRUE);
fEnable = SendMessage( listBox, LB_GETCURSEL, 0, 0 ) != LB_ERR;
//
// do not allow more than keysMaxMacro keys macros to be defined
//
newButton = GetDlgItem( hDlg, IDC_PB_KEYS_NEW );
if (nCount >= KEYS_MAX_MACROS)
{
EnableWindow( newButton, FALSE );
}
else
{
EnableWindow( newButton, TRUE );
}
}
modifyButton = GetDlgItem( hDlg, IDC_PB_KEYS_MODIFY );
deleteButton = GetDlgItem( hDlg, IDC_PB_KEYS_DELETE );
EnableWindow( modifyButton, fEnable );
EnableWindow( deleteButton, fEnable );
if ( nCount <= 0 )
{
EnableWindow(listBox, FALSE);
newButton = GetDlgItem( hDlg, IDC_PB_KEYS_NEW );
SetFocus( newButton );
}
return;
}
#endif