mirror of https://github.com/tongzx/nt5src
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.
152 lines
3.7 KiB
152 lines
3.7 KiB
/*++
|
|
|
|
Microsoft Windows
|
|
Copyright (C) Microsoft Corporation, 1981 - 1999
|
|
|
|
Module Name:
|
|
|
|
recvconf.cpp
|
|
|
|
Abstract:
|
|
|
|
Dialog which prompts the user for receive confirmation.
|
|
|
|
Author:
|
|
|
|
Rahul Thombre (RahulTh) 10/26/1999
|
|
|
|
Revision History:
|
|
|
|
10/26/1999 RahulTh Created this module.
|
|
|
|
--*/
|
|
|
|
#include "precomp.hxx"
|
|
|
|
CRecvConf::CRecvConf (CWnd * pParent /*= NULL*/)
|
|
: CDialog (CRecvConf::IDD, pParent), m_bShowAllYes (TRUE),
|
|
m_bDirectory (FALSE), m_pParent(pParent)
|
|
{
|
|
}
|
|
|
|
void CRecvConf::ShowAllYes (BOOL bShow)
|
|
{
|
|
m_bShowAllYes = bShow;
|
|
}
|
|
|
|
void CRecvConf::InitNames (LPCTSTR szMachine, LPTSTR szFile, BOOL fDirectory)
|
|
{
|
|
TCHAR szCompactName [COMPACT_PATHLEN + 1];
|
|
DWORD len;
|
|
|
|
m_szMachine = szMachine;
|
|
m_bDirectory = fDirectory;
|
|
if (m_bDirectory)
|
|
{
|
|
len = wcslen (szFile);
|
|
if (L'\\' == szFile[len - 1])
|
|
{
|
|
szFile[len - 1] = L'\0';
|
|
len--;
|
|
}
|
|
}
|
|
|
|
//compact the filename so that we do not overrun the text control
|
|
if (COMPACT_PATHLEN < len &&
|
|
PathCompactPathEx (szCompactName, szFile, COMPACT_PATHLEN + 1, 0))
|
|
{
|
|
m_szFileName = szCompactName;
|
|
}
|
|
else
|
|
{
|
|
m_szFileName = szFile;
|
|
}
|
|
}
|
|
|
|
void CRecvConf::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CRecvConf)
|
|
DDX_Control(pDX, IDC_CONFIRMTEXT, m_confirmText);
|
|
DDX_Control(pDX, IDYES, m_btnYes);
|
|
DDX_Control(pDX, IDALLYES, m_btnAllYes);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CRecvConf, CDialog)
|
|
//{{AFX_MSG_MAP(CRecvConf)
|
|
ON_BN_CLICKED(IDYES, OnYes)
|
|
ON_BN_CLICKED(IDALLYES, OnAllYes)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
BOOL CRecvConf::OnInitDialog()
|
|
{
|
|
AFX_MANAGE_STATE (AfxGetStaticModuleState());
|
|
|
|
CString szFormat;
|
|
CString szDisplay;
|
|
CWnd * pDesktop = NULL;
|
|
int newHeight, newWidth, xshift, yshift;
|
|
RECT rc;
|
|
|
|
CDialog::OnInitDialog();
|
|
|
|
//display the confirmation text.
|
|
szFormat.LoadString (m_bDirectory ? IDS_CONFIRM_FOLDER : IDS_CONFIRM_FILE);
|
|
szDisplay.Format (szFormat, m_szMachine, m_szFileName);
|
|
m_confirmText.SetWindowText (szDisplay);
|
|
|
|
//hide the "Yes To All" button if necessary
|
|
//also move the Yes button in that case.
|
|
if (! m_bShowAllYes)
|
|
{
|
|
RECT rectAllYes;
|
|
m_btnAllYes.ShowWindow (SW_HIDE);
|
|
m_btnAllYes.GetWindowRect (&rectAllYes);
|
|
::MapWindowPoints (NULL, m_hWnd, (LPPOINT) &rectAllYes, 2);
|
|
m_btnYes.SetWindowPos (NULL, rectAllYes.left, rectAllYes.top, -1, -1,
|
|
SWP_NOZORDER | SWP_NOOWNERZORDER | SWP_NOSIZE);
|
|
|
|
}
|
|
|
|
//reposition the window so that it is at the center of the screen
|
|
//also push this window to the top after activating it
|
|
GetClientRect (&rc);
|
|
newHeight = rc.bottom;
|
|
newWidth = rc.right;
|
|
pDesktop = GetDesktopWindow();
|
|
pDesktop->GetClientRect (&rc);
|
|
yshift = (rc.bottom - newHeight)/2;
|
|
xshift = (rc.right - newWidth)/2;
|
|
//there might be a problem if someday the dialog should
|
|
//get larger than the desktop. But then, there is no way
|
|
//we can fit that window inside the desktop anyway.
|
|
//So the best we can do is place it at the top left corner
|
|
xshift = (xshift >= 0)?xshift:0;
|
|
yshift = (yshift >= 0)?yshift:0;
|
|
appController->SetForegroundWindow();
|
|
SetActiveWindow();
|
|
SetWindowPos (&wndTop, xshift, yshift, -1, -1,
|
|
SWP_NOSIZE | SWP_NOOWNERZORDER);
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CRecvConf::OnYes ()
|
|
{
|
|
EndDialog (IDYES);
|
|
}
|
|
|
|
void CRecvConf::OnAllYes ()
|
|
{
|
|
EndDialog (IDALLYES);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|