windows-nt/Source/XPSP1/NT/net/irda/irftp/recvconf.cpp
2020-09-26 16:20:57 +08:00

153 lines
3.7 KiB
C++

/*++
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);
}