windows-nt/Source/XPSP1/NT/termsrv/admtools/tscc/snapin/asyncdlg.h

421 lines
8 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
//Copyright (c) 1998 - 1999 Microsoft Corporation
#ifndef _ASYNCDLG_H
#define _ASYNCDLG_H
#define ULONG_DIGIT_MAX 12
#define UINT_DIGIT_MAX 7
#define UCHAR_DIGIT_MAX 5
#define WM_ADDWINSTATION (WM_USER + 0)
#define WM_LISTINITERROR (WM_USER + 1)
#define WM_EDITSETFIELDSERROR (WM_USER + 2)
#define WM_ASYNCTESTERROR (WM_USER + 3)
#define WM_ASYNCTESTABORT (WM_USER + 4)
#define WM_ASYNCTESTSTATUSREADY (WM_USER + 5)
#define WM_ASYNCTESTINPUTREADY (WM_USER + 6)
#define WM_ASYNCTESTWRITECHAR (WM_USER + 7)
#define NUM_LEDS 6
#define MAX_COMMAND_LEN 255
////////////////////////////////////////////////////////////////////////////////
class CAsyncDlg
{
HWND m_hDlg;
ICfgComp * m_pCfgcomp;
INT_PTR m_nHexBase;
TCHAR m_szWinstation[ WINSTATIONNAME_LENGTH + 1 ];
TCHAR m_szWDName[ WDNAME_LENGTH + 1 ];
INT m_nOldAsyncDeviceNameSelection;
INT m_nOldAsyncConnectType;
INT m_nOldBaudRate;
INT m_nOldModemCallBack;
public:
ASYNCCONFIG m_ac;
ASYNCCONFIG m_oldAC;
USERCONFIG m_uc;
public:
CAsyncDlg( );
BOOL OnInitDialog( HWND , LPTSTR , LPTSTR , ICfgComp * );
void OnClickedAsyncModemcallbackPhonenumberInherit( );
void OnClickedAsyncModemcallbackInherit( );
void OnClickedModemProperties();
BOOL OnSelchangeAsyncDevicename( );
BOOL OnSelchangeAsyncConnect();
BOOL OnSelchangeAsyncModemcallback() ;
void OnSelchangeAsyncModemcallbackPhoneNumber() ;
BOOL OnSelchangeAsyncBaudrate();
BOOL OnCommand( WORD , WORD , HWND , PBOOL );
HRESULT SetDefaults( );
HRESULT DoAsyncAdvance( );
BOOL DoAsyncTest( );
BOOL AsyncRelease( );
BOOL GetAsyncFields(ASYNCCONFIG& AsyncConfig,USERCONFIG UsrCfg);
HRESULT SetAsyncFields(ASYNCCONFIG& AsyncConfig , PUSERCONFIG );
};
////////////////////////////////////////////////////////////////////////////////
class CAdvancedAsyncDlg
{
/*
* Member variables.
*/
public:
ASYNCCONFIG m_Async;
BOOL m_bReadOnly;
BOOL m_bModem;
INT_PTR m_nHexBase;
ULONG m_nWdFlag;
HWND m_hDlg;
ICfgComp *m_pCfgcomp;
/*
* Implementation.
*/
public:
CAdvancedAsyncDlg();
static INT_PTR CALLBACK DlgProc( HWND , UINT , WPARAM , LPARAM );
BOOL OnCommand( WORD , WORD , HWND );
int GetCheckedRadioButton( int , int );
BOOL OnInitDialog( HWND hDlg , WPARAM wp , LPARAM lp );
/*
* Operations.
*/
protected:
BOOL HandleEnterEscKey(int nID);
void SetFields();
void SetHWFlowText();
void SetGlobalFields();
void SetHWFields();
void SetSWFields();
BOOL GetFields();
void GetFlowControlFields();
BOOL GetGlobalFields();
BOOL GetHWFields();
BOOL GetSWFields( BOOL bValidate );
/*
* Message map / commands.
*/
protected:
void OnClickedAsyncAdvancedFlowcontrolHardware();
void OnClickedAsyncAdvancedFlowcontrolSoftware();
void OnClickedAsyncAdvancedFlowcontrolNone();
void OnClickedAsyncAdvancedBasedec();
void OnClickedAsyncAdvancedBasehex();
void OnCloseupAsyncAdvancedHwrx();
void OnSelchangeAsyncAdvancedHwrx();
void OnCloseupAsyncAdvancedHwtx();
void OnSelchangeAsyncAdvancedHwtx();
void OnOK();
void OnCancel();
};
////////////////////////////////////////////////////////////////////////////////
class cwnd
{
public:
HWND m_hWnd;
WNDPROC m_oldproc;
};
////////////////////////////////////////////////////////////////////////////////
// CEchoEditControl class
//
class CEchoEditControl : public cwnd
{
friend class CAsyncTestDlg;
/*
* Member variables.
*/
public:
BOOL m_bProcessingOutput;
HWND m_hDlg;
int m_FontHeight;
int m_FontWidth;
int m_FormatOffsetX;
int m_FormatOffsetY;
/*
* Message map / commands.
*/
void OnChar (UINT nChar, UINT nRepCnt, UINT nFlags);
void SubclassDlgItem( HWND , int );
static LRESULT CALLBACK WndProc( HWND , UINT , WPARAM , LPARAM );
}; // end CEchoEditControl class interface
////////////////////////////////////////////////////////////////////////////////
// CLed class
//
class CLed : public cwnd
{
private:
HBRUSH m_hBrush;
BOOL m_bOn;
/*
* Implementation.
*/
public:
CLed( HBRUSH hBrush );
/*
* Operations.
*/
public:
void Subclass( HWND , int );
void Update(int nOn);
void Toggle();
/*
* Message map / commands.
*/
void OnPaint( HWND );
static LRESULT CALLBACK WndProc( HWND , UINT , WPARAM , LPARAM );
};
////////////////////////////////////////////////////////////////////////////////
class CThread
{
/*
* Member variables.
*/
public:
HANDLE m_hThread;
DWORD m_dwThreadID;
/*
* Implementation
*/
public:
virtual ~CThread();
CThread();
static DWORD __stdcall ThreadEntryPoint(LPVOID lpParam);
virtual DWORD RunThread() = 0;
/*
* Operations: primary thread
*/
HANDLE CreateThread( DWORD cbStack = 0 , DWORD fdwCreate = 0 );
}; // end CThread class interface
////////////////////////////////////////////////////////////////////////////////
// CATDlgInputThread class
//
#define MAX_STATUS_SEMAPHORE_COUNT 1
#define MAX_SLEEP_COUNT 10
class CATDlgInputThread : public CThread
{
/*
* Member variables.
*/
public:
HWND m_hDlg;
HANDLE m_hDevice;
ASYNCCONFIG m_ac;
PROTOCOLSTATUS m_Status;
BYTE m_Buffer[MAX_COMMAND_LEN+1];
DWORD m_BufferBytes;
DWORD m_ErrorStatus;
HANDLE m_hConsumed;
BOOL m_bExit;
DWORD m_EventMask;
OVERLAPPED m_OverlapSignal;
OVERLAPPED m_OverlapRead;
/*
* Implementation
*/
CATDlgInputThread();
virtual ~CATDlgInputThread();
virtual DWORD RunThread();
/*
* Operations: primary thread.
*/
void SignalConsumed();
void ExitThread();
/*
* Operations: secondary thread.
*/
void NotifyAbort( UINT idError );
int CommInputNotify();
int CommStatusAndNotify();
int PostInputRead();
int PostStatusRead();
}; // end CATDlgInputThread class interface
///////////////////////////////////////////////////////////////////////////////
// CAsyncTestDlg class
//
class CAsyncTestDlg
{
/*
* Member variables.
*/
HWND m_hDlg;
ICfgComp * m_pCfgComp;
public:
ASYNCCONFIG m_ac;
PDCONFIG m_PdConfig1;
PWINSTATIONNAME m_pWSName;
CEchoEditControl m_EditControl;
protected:
HANDLE m_hDevice;
HBRUSH m_hRedBrush;
UINT_PTR m_LEDToggleTimer;
PROTOCOLSTATUS m_Status;
CATDlgInputThread *m_pATDlgInputThread;
OVERLAPPED m_OverlapWrite;
BYTE m_Buffer[MAX_COMMAND_LEN+1];
INT_PTR m_CurrentPos;
DWORD m_BufferBytes;
TCHAR m_szModemInit[MAX_COMMAND_LEN+1];
TCHAR m_szModemDial[MAX_COMMAND_LEN+1];
TCHAR m_szModemListen[MAX_COMMAND_LEN+1];
HANDLE m_hModem;
BOOL m_bDeletedWinStation;
CLed * m_pLeds[NUM_LEDS];
WINSTATIONCONFIG2 m_WSConfig;
/*
* Implementation.
*/
public:
CAsyncTestDlg(ICfgComp * pCfgComp = NULL);
~CAsyncTestDlg();
/*
* Operations.
*/
void NotifyAbort( UINT idError );
BOOL DeviceSetParams();
BOOL DeviceWrite();
void SetInfoFields( PPROTOCOLSTATUS pCurrent, PPROTOCOLSTATUS pNew );
void OutputToEditControl( BYTE *pBuffer, int *pIndex );
/*
* Message map / commands.
*/
BOOL OnInitDialog( HWND hDlg , WPARAM wp , LPARAM lp );
BOOL OnCommand( WORD , WORD , HWND );
void OnTimer(UINT nIDEvent);
LRESULT OnAsyncTestError(WPARAM wParam, LPARAM lParam);
LRESULT OnAsyncTestAbort(WPARAM wParam, LPARAM lParam);
LRESULT OnAsyncTestStatusReady(WPARAM wParam, LPARAM lParam);
LRESULT OnAsyncTestInputReady(WPARAM wParam, LPARAM lParam);
LRESULT OnAsyncTestWriteChar(WPARAM wParam, LPARAM lParam);
void OnClickedAtdlgModemDial();
void OnClickedAtdlgModemInit();
void OnClickedAtdlgModemListen();
void OnNcDestroy();
cwnd *GetDlgItem( int nRes );
static INT_PTR CALLBACK DlgProc( HWND , UINT , WPARAM , LPARAM );
}; // end CAsyncTestDlg class interface
#define ASYNC_LED_TOGGLE_MSEC 200
#endif // _ASYNCDLG_H