Windows2003-3790/termsrv/newclient/clshell/connectingdlg.cpp
2020-09-30 16:53:55 +02:00

199 lines
6.3 KiB
C++

//
// connectingdlg.cpp: connecting dialog box
//
#include "stdafx.h"
#define TRC_GROUP TRC_GROUP_UI
#define TRC_FILE "connectingdlg"
#include <atrcapi.h>
#include "connectingdlg.h"
#include "sh.h"
CConnectingDlg* CConnectingDlg::_pConnectingDlgInstance = NULL;
CConnectingDlg::CConnectingDlg( HWND hwndOwner, HINSTANCE hInst,
CContainerWnd* pContWnd, PDCTCHAR szServer) :
CDlgBase( hwndOwner, hInst, UI_IDD_CONNECTING), _pContainerWnd(pContWnd)
{
DC_BEGIN_FN("CConnectingDlg");
TRC_ASSERT((NULL == CConnectingDlg::_pConnectingDlgInstance),
(TB,_T("Clobbering existing dlg instance pointer\n")));
TRC_ASSERT(_pContainerWnd, (TB,_T("_pContainerWnd is NULL")));
TRC_ASSERT(szServer, (TB,_T("szServer not set\n")));
if(szServer)
{
DC_TSTRNCPY(_szServer, szServer, sizeof(_szServer)/sizeof(DCTCHAR));
}
else
{
DC_TSTRNCPY(_szServer, TEXT(""), sizeof(_szServer)/sizeof(DCTCHAR));
}
CConnectingDlg::_pConnectingDlgInstance = this;
DC_END_FN();
}
CConnectingDlg::~CConnectingDlg()
{
CConnectingDlg::_pConnectingDlgInstance = NULL;
}
DCINT CConnectingDlg::DoModal()
{
DCINT retVal = 0;
DC_BEGIN_FN("DoModal");
retVal = DialogBox(_hInstance, MAKEINTRESOURCE(_dlgResId),
_hwndOwner, StaticDialogBoxProc);
if (retVal == -1)
{
TRC_ERR((TB, _T("DialogBoxParam failed\n")));
}
DC_END_FN();
return retVal;
}
INT_PTR CALLBACK CConnectingDlg::StaticDialogBoxProc (HWND hwndDlg, UINT uMsg,WPARAM wParam, LPARAM lParam)
{
//
// Delegate to appropriate instance (only works for single instance dialogs)
//
DC_BEGIN_FN("StaticDialogBoxProc");
DCINT retVal = 0;
TRC_ASSERT(_pConnectingDlgInstance, (TB, _T("Connecting dialog has NULL static instance ptr\n")));
if(_pConnectingDlgInstance)
{
retVal = _pConnectingDlgInstance->DialogBoxProc( hwndDlg, uMsg, wParam, lParam);
}
DC_END_FN();
return retVal;
}
/****************************************************************************/
/* Name: DialogBoxProc */
/* */
/* Purpose: Handles Connecting Box dialog */
/* */
/* Returns: TRUE if message dealt with */
/* FALSE otherwise */
/* */
/* Params: See window documentation */
/* */
/****************************************************************************/
INT_PTR CALLBACK CConnectingDlg::DialogBoxProc (HWND hwndDlg, UINT uMsg,WPARAM wParam, LPARAM lParam)
{
INT_PTR rc = FALSE;
DCUINT intRC;
DCTCHAR connectingString[SH_VERSION_STRING_MAX_LENGTH];
DC_BEGIN_FN("DialogProc");
/************************************************************************/
/* Handle dialog messages */
/************************************************************************/
switch(uMsg)
{
case WM_INITDIALOG:
{
_hwndDlg = hwndDlg;
_pContainerWnd->SetStatusDialogHandle( hwndDlg);
if(hwndDlg)
{
DCTCHAR temp[SH_DISPLAY_STRING_MAX_LENGTH+SH_MAX_ADDRESS_LENGTH];
CenterWindow(_hwndOwner);
::ShowWindow( _hwndDlg, SW_RESTORE);
SetDialogAppIcon(hwndDlg);
intRC = LoadString( _hInstance,
UI_IDS_CONNECTING_TO_SERVER,
connectingString,
SH_DISPLAY_STRING_MAX_LENGTH );
if(0 == intRC)
{
TRC_ERR((TB,_T("Failed to find UI connecting string")));
connectingString[0] = (DCTCHAR) 0;
break;
}
_stprintf(temp, connectingString, _szServer);
SetDlgItemText(hwndDlg, UI_IDC_CONN_STATIC, temp);
SetCursor(LoadCursor(NULL, IDC_ARROW));
}
rc = TRUE;
}
break;
case WM_COMMAND:
{
switch(DC_GET_WM_COMMAND_ID(wParam))
{
case IDCANCEL:
case UI_ID_CANCELCONNECT:
{
TRC_NRM((TB, _T("User cancelled connection - ")
_T("calling UIInitiateDisconnection")));
_pContainerWnd->Disconnect();
_pContainerWnd->SetStatusDialogHandle( NULL);
EndDialog(hwndDlg, IDCANCEL);
}
break;
default:
{
if(hwndDlg)
{
rc = CDlgBase::DialogBoxProc(hwndDlg,
uMsg,
wParam,
lParam);
}
}
break;
}
}
break;
#ifndef OS_WINCE
case WM_WINDOWPOSCHANGING:
{
//Prevent the dialog from being
//sized. This can happen if the app
//is laucnhed with a .RDP shortcut that
//specifies the app should be maximized
LPWINDOWPOS lpwp;
lpwp = (LPWINDOWPOS)lParam;
lpwp->flags |= SWP_NOSIZE;
}
break;
#endif
default:
{
if(hwndDlg)
{
rc = CDlgBase::DialogBoxProc(hwndDlg,
uMsg,
wParam,
lParam);
}
}
break;
}
DC_END_FN();
return(rc);
} /* DialogBoxProc */