265 lines
4.9 KiB
C
265 lines
4.9 KiB
C
/*++
|
|
|
|
Copyright (c) 1990-1998 Microsoft Corporation
|
|
All rights reserved
|
|
|
|
Module Name:
|
|
|
|
dialogs.c
|
|
|
|
Abstract:
|
|
|
|
// @@BEGIN_DDKSPLIT
|
|
Environment:
|
|
|
|
User Mode -Win32
|
|
|
|
Revision History:
|
|
// @@END_DDKSPLIT
|
|
--*/
|
|
|
|
#include "precomp.h"
|
|
#pragma hdrstop
|
|
|
|
#include "dialogs.h"
|
|
|
|
WCHAR szLcmHelpFile[] = L"WINDOWS.HLP";
|
|
|
|
const DWORD g_aHelpIDs[]=
|
|
{
|
|
IDD_PF_EF_OUTPUTFILENAME, 8810218, // Print to File: "" (Edit)
|
|
0, 0
|
|
};
|
|
|
|
/* PortIsValid
|
|
*
|
|
* Validate the port by attempting to create/open it.
|
|
*/
|
|
BOOL
|
|
PortIsValid(
|
|
LPWSTR pPortName
|
|
)
|
|
{
|
|
HANDLE hFile;
|
|
BOOL Valid;
|
|
|
|
//
|
|
// For COM and LPT ports, no verification
|
|
//
|
|
if ( IS_COM_PORT( pPortName ) ||
|
|
IS_LPT_PORT( pPortName ) ||
|
|
IS_FILE_PORT( pPortName ) )
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
hFile = CreateFile(pPortName,
|
|
GENERIC_WRITE,
|
|
FILE_SHARE_READ,
|
|
NULL,
|
|
OPEN_EXISTING,
|
|
FILE_ATTRIBUTE_NORMAL,
|
|
NULL);
|
|
|
|
if (hFile == INVALID_HANDLE_VALUE) {
|
|
hFile = CreateFile(pPortName,
|
|
GENERIC_WRITE,
|
|
FILE_SHARE_READ,
|
|
NULL,
|
|
OPEN_ALWAYS,
|
|
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE,
|
|
NULL);
|
|
}
|
|
|
|
if (hFile != INVALID_HANDLE_VALUE) {
|
|
CloseHandle(hFile);
|
|
Valid = TRUE;
|
|
} else {
|
|
Valid = FALSE;
|
|
}
|
|
|
|
return Valid;
|
|
}
|
|
|
|
/*
|
|
*
|
|
*/
|
|
INT_PTR APIENTRY
|
|
PrintToFileDlg(
|
|
HWND hwnd,
|
|
UINT msg,
|
|
WPARAM wparam,
|
|
LPARAM lparam
|
|
)
|
|
{
|
|
switch(msg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
return PrintToFileInitDialog(hwnd, (PHANDLE)lparam);
|
|
|
|
case WM_COMMAND:
|
|
switch (LOWORD(wparam))
|
|
{
|
|
case IDOK:
|
|
return PrintToFileCommandOK(hwnd);
|
|
|
|
case IDCANCEL:
|
|
return PrintToFileCommandCancel(hwnd);
|
|
}
|
|
break;
|
|
|
|
case WM_HELP:
|
|
case WM_CONTEXTMENU:
|
|
return LocalHelp(hwnd, msg, wparam, lparam);
|
|
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
/*
|
|
*
|
|
*/
|
|
BOOL
|
|
PrintToFileInitDialog(
|
|
HWND hwnd,
|
|
PHANDLE phFile
|
|
)
|
|
{
|
|
BringWindowToTop( hwnd );
|
|
|
|
SetFocus(hwnd);
|
|
|
|
SetWindowLongPtr( hwnd, GWLP_USERDATA, (LONG_PTR)phFile );
|
|
|
|
SendDlgItemMessage( hwnd, IDD_PF_EF_OUTPUTFILENAME, EM_LIMITTEXT, MAX_PATH, 0);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
/*
|
|
*
|
|
*/
|
|
BOOL
|
|
PrintToFileCommandOK(
|
|
HWND hwnd
|
|
)
|
|
{
|
|
WCHAR pFileName[MAX_PATH];
|
|
WIN32_FIND_DATA FindData;
|
|
PHANDLE phFile;
|
|
HANDLE hFile;
|
|
HANDLE hFind;
|
|
|
|
phFile = (PHANDLE)GetWindowLongPtr( hwnd, GWLP_USERDATA );
|
|
|
|
GetDlgItemText( hwnd, IDD_PF_EF_OUTPUTFILENAME,
|
|
pFileName, MAX_PATH );
|
|
|
|
hFind = FindFirstFile( pFileName, &FindData );
|
|
|
|
/* If the file already exists, get the user to verify
|
|
* before we overwrite it:
|
|
*/
|
|
if( hFind != INVALID_HANDLE_VALUE )
|
|
{
|
|
FindClose( hFind );
|
|
|
|
if( LcmMessage( hwnd, MSG_CONFIRMATION, IDS_LOCALMONITOR,
|
|
IDS_OVERWRITE_EXISTING_FILE )
|
|
!= IDOK )
|
|
{
|
|
return TRUE;
|
|
}
|
|
}
|
|
|
|
|
|
hFile = CreateFile( pFileName, GENERIC_WRITE, FILE_SHARE_READ, NULL,
|
|
OPEN_ALWAYS,
|
|
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,
|
|
NULL );
|
|
|
|
if( hFile == INVALID_HANDLE_VALUE )
|
|
{
|
|
ReportError( hwnd, IDS_LOCALMONITOR, IDS_COULD_NOT_OPEN_FILE );
|
|
}
|
|
|
|
else
|
|
{
|
|
*phFile = hFile;
|
|
EndDialog( hwnd, TRUE );
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/*
|
|
*
|
|
*/
|
|
BOOL
|
|
PrintToFileCommandCancel(
|
|
HWND hwnd
|
|
)
|
|
{
|
|
EndDialog(hwnd, FALSE);
|
|
return TRUE;
|
|
}
|
|
|
|
/*++
|
|
|
|
Routine Name:
|
|
|
|
LocalHelp
|
|
|
|
Routine Description:
|
|
|
|
Handles context sensitive help for the configure LPTX:
|
|
port and the dialog for adding a local port.
|
|
|
|
Arguments:
|
|
|
|
UINT uMsg,
|
|
HWND hDlg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
|
|
Return Value:
|
|
|
|
TRUE if LcmMessage handled, otherwise FALSE.
|
|
|
|
--*/
|
|
BOOL
|
|
LocalHelp(
|
|
IN HWND hDlg,
|
|
IN UINT uMsg,
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam
|
|
)
|
|
{
|
|
BOOL bStatus = FALSE;
|
|
|
|
switch( uMsg ){
|
|
|
|
case WM_HELP:
|
|
|
|
bStatus = WinHelp((HWND)((LPHELPINFO)lParam)->hItemHandle,
|
|
szLcmHelpFile,
|
|
HELP_WM_HELP,
|
|
(ULONG_PTR)g_aHelpIDs );
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
|
|
bStatus = WinHelp((HWND)wParam,
|
|
szLcmHelpFile,
|
|
HELP_CONTEXTMENU,
|
|
(ULONG_PTR)g_aHelpIDs );
|
|
break;
|
|
|
|
}
|
|
|
|
return bStatus;
|
|
}
|