windows-nt/Source/XPSP1/NT/net/tapi/client/cplsimpledialogs.cpp
2020-09-26 16:20:57 +08:00

363 lines
9.2 KiB
C++

/****************************************************************************
Copyright (c) 1998-1999 Microsoft Corporation
Module Name: cplsimpledialogs.cpp
Author: toddb - 10/06/98
****************************************************************************/
#include "cplPreComp.h"
#include "cplSimpleDialogs.h"
// ****************************************************
//
// CEditDialog
//
// ****************************************************
CEditDialog::CEditDialog()
{
m_psz = NULL;
}
CEditDialog::~CEditDialog()
{
if ( m_psz )
{
delete m_psz;
}
}
INT_PTR CEditDialog::DoModal(HWND hwndParent, int iTitle, int iText, int iDesc, DWORD dwFlags)
{
m_iTitle = iTitle;
m_iText = iText;
m_iDesc = iDesc;
m_dwFlags = dwFlags;
return DialogBoxParam(GetUIInstance(),
MAKEINTRESOURCE(IDD_EDITDIALOG),
hwndParent,
CEditDialog::DialogProc,
(LPARAM)this);
}
LPTSTR CEditDialog::GetString()
{
return m_psz;
}
INT_PTR CALLBACK CEditDialog::DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
CEditDialog * ped = (CEditDialog *)GetWindowLongPtr(hwnd, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG:
ped = (CEditDialog *)lParam;
SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam);
return ped->OnInitDialog(hwnd);
case WM_COMMAND:
switch ( LOWORD(wParam) )
{
case IDOK:
ped->OnOK(hwnd);
// fall through
case IDCANCEL:
HideToolTip();
EndDialog(hwnd, LOWORD(wParam));
break;
}
break;
#define aIDs ((ped->m_iTitle == IDS_SPECIFYDIGITS)?a117HelpIDs:a116HelpIDs)
case WM_HELP:
// Process clicks on controls after Context Help mode selected
WinHelp ((HWND)((LPHELPINFO)lParam)->hItemHandle, gszHelpFile, HELP_WM_HELP, (DWORD_PTR)(LPTSTR) aIDs);
break;
case WM_CONTEXTMENU:
// Process right-clicks on controls
WinHelp ((HWND) wParam, gszHelpFile, HELP_CONTEXTMENU, (DWORD_PTR)(LPVOID) aIDs);
break;
#undef aIDs
}
return 0;
}
BOOL CEditDialog::OnInitDialog(HWND hwnd)
{
TCHAR szText[512];
LoadString(GetUIInstance(), m_iTitle, szText, ARRAYSIZE(szText));
SetWindowText(hwnd, szText);
LoadString(GetUIInstance(), m_iText, szText, ARRAYSIZE(szText));
SetWindowText(GetDlgItem(hwnd,IDC_TEXT), szText);
LoadString(GetUIInstance(), m_iDesc, szText, ARRAYSIZE(szText));
SetWindowText(GetDlgItem(hwnd,IDC_DESCRIPTIONTEXT), szText);
HWND hwndEdit = GetDlgItem(hwnd,IDC_EDIT);
SendMessage(hwndEdit, EM_SETLIMITTEXT, CPL_SETTEXTLIMIT, 0);
SetFocus(hwndEdit);
LimitInput(hwndEdit,m_dwFlags);
return 0;
}
void CEditDialog::OnOK(HWND hwnd)
{
DWORD dwStart;
DWORD dwEnd;
HWND hwndEdit = GetDlgItem(hwnd,IDC_EDIT);
SendMessage(hwndEdit,EM_SETSEL,0,-1);
SendMessage(hwndEdit,EM_GETSEL,(WPARAM)&dwStart,(LPARAM)&dwEnd);
dwEnd++; // add room for a NULL terminator
m_psz = new TCHAR[dwEnd]; // allocate the buffer
if (NULL != m_psz)
{
GetWindowText(hwndEdit,m_psz,dwEnd); // and read in the string
}
}
// ****************************************************
//
// CWaitForDialog
//
// ****************************************************
CWaitForDialog::CWaitForDialog()
{
m_iRes = -1;
}
CWaitForDialog::~CWaitForDialog()
{
}
INT_PTR CWaitForDialog::DoModal(HWND hwndParent)
{
return DialogBoxParam(GetUIInstance(),
MAKEINTRESOURCE(IDD_WAITFORDIALOG),
hwndParent,
CWaitForDialog::DialogProc,
(LPARAM)this);
}
int CWaitForDialog::GetWaitType()
{
return m_iRes;
}
INT_PTR CALLBACK CWaitForDialog::DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
CWaitForDialog * pwd = (CWaitForDialog *)GetWindowLongPtr(hwnd, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG:
pwd = (CWaitForDialog *)lParam;
SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam);
return pwd->OnInitDialog(hwnd);
case WM_COMMAND:
switch ( LOWORD(wParam) )
{
case IDC_WAITFORDIALTONE:
case IDC_WAITFORVOICE:
EnableWindow(GetDlgItem(hwnd, IDC_TIME), FALSE);
break;
case IDC_WAITFORTIME:
EnableWindow(GetDlgItem(hwnd, IDC_TIME), TRUE);
break;
case IDOK:
pwd->OnOK(hwnd);
// fall through
case IDCANCEL:
EndDialog(hwnd, LOWORD(wParam));
break;
}
break;
case WM_HELP:
// Process clicks on controls after Context Help mode selected
WinHelp ((HWND)((LPHELPINFO)lParam)->hItemHandle, gszHelpFile, HELP_WM_HELP, (DWORD_PTR)(LPTSTR) a111HelpIDs);
break;
case WM_CONTEXTMENU:
// Process right-clicks on controls
WinHelp ((HWND) wParam, gszHelpFile, HELP_CONTEXTMENU, (DWORD_PTR)(LPVOID) a111HelpIDs);
break;
}
return 0;
}
BOOL CWaitForDialog::OnInitDialog(HWND hwndDlg)
{
HWND hwnd;
SendMessage(GetDlgItem(hwndDlg,IDC_WAITFORDIALTONE),BM_SETCHECK,BST_CHECKED,0);
hwnd = GetDlgItem(hwndDlg, IDC_TIME);
SetDlgItemInt(hwndDlg, IDC_TIME, 2, FALSE);
SendMessage(hwnd, EM_SETLIMITTEXT, 2, 0);
EnableWindow(hwnd, FALSE);
LimitInput(hwnd, LIF_ALLOWNUMBER);
hwnd = GetDlgItem(hwndDlg, IDC_TIMESPIN);
SendMessage(hwnd, UDM_SETRANGE32, 2, 98);
SendMessage(hwnd, UDM_SETPOS, 0, MAKELONG(2, 0) );
UDACCEL accel;
accel.nSec = 0;
accel.nInc = 2;
SendMessage(hwnd, UDM_SETACCEL, 1, (LPARAM)&accel );
return 0;
}
void CWaitForDialog::OnOK(HWND hwnd)
{
if ( BST_CHECKED == SendMessage(GetDlgItem(hwnd,IDC_WAITFORDIALTONE),BM_GETCHECK,0,0) )
{
m_iRes = 0;
}
else if ( BST_CHECKED == SendMessage(GetDlgItem(hwnd,IDC_WAITFORVOICE),BM_GETCHECK,0,0) )
{
m_iRes = 1;
}
else
{
m_iRes = GetDlgItemInt(hwnd, IDC_TIME, NULL, FALSE);
if ( m_iRes < 2 )
{
m_iRes = 2;
}
}
}
// ****************************************************
//
// CDestNumDialog
//
// ****************************************************
CDestNumDialog::CDestNumDialog(BOOL bDialCountryCode, BOOL bDialAreaCode)
{
m_wsz[0] = NULL;
m_bDialCountryCode = bDialCountryCode;
m_bDialAreaCode = bDialAreaCode;
}
CDestNumDialog::~CDestNumDialog()
{
}
INT_PTR CDestNumDialog::DoModal(HWND hwndParent)
{
return DialogBoxParam(GetUIInstance(),
MAKEINTRESOURCE(IDD_DESTNUMDIALOG),
hwndParent,
CDestNumDialog::DialogProc,
(LPARAM)this);
}
PWSTR CDestNumDialog::GetResult()
{
return m_wsz;
}
INT_PTR CALLBACK CDestNumDialog::DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
CDestNumDialog * pwd = (CDestNumDialog *)GetWindowLongPtr(hwnd, GWLP_USERDATA);
switch (uMsg)
{
case WM_INITDIALOG:
pwd = (CDestNumDialog *)lParam;
SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam);
return pwd->OnInitDialog(hwnd);
case WM_COMMAND:
switch ( LOWORD(wParam) )
{
case IDOK:
pwd->OnOK(hwnd);
// fall through
case IDCANCEL:
EndDialog(hwnd, LOWORD(wParam));
break;
}
break;
case WM_HELP:
// Process clicks on controls after Context Help mode selected
WinHelp ((HWND)((LPHELPINFO)lParam)->hItemHandle, gszHelpFile, HELP_WM_HELP, (DWORD_PTR)(LPTSTR) a112HelpIDs);
break;
case WM_CONTEXTMENU:
// Process right-clicks on controls
WinHelp ((HWND) wParam, gszHelpFile, HELP_CONTEXTMENU, (DWORD_PTR)(LPVOID) a112HelpIDs);
break;
}
return 0;
}
BOOL CDestNumDialog::OnInitDialog(HWND hwnd)
{
SendMessage(GetDlgItem(hwnd,IDC_AREACODE),BM_SETCHECK,m_bDialAreaCode ? BST_CHECKED : BST_UNCHECKED,0);
SendMessage(GetDlgItem(hwnd,IDC_COUNTRYCODE),BM_SETCHECK,m_bDialCountryCode ? BST_CHECKED : BST_UNCHECKED,0);
SendMessage(GetDlgItem(hwnd,IDC_LOCALNUMBER),BM_SETCHECK,BST_CHECKED,0);
return 0;
}
void CDestNumDialog::OnOK(HWND hwnd)
{
int i = 0;
if ( BST_CHECKED == SendMessage(GetDlgItem(hwnd,IDC_COUNTRYCODE),BM_GETCHECK,0,0) )
{
m_wsz[i++] = L'E';
}
if ( BST_CHECKED == SendMessage(GetDlgItem(hwnd,IDC_AREACODE),BM_GETCHECK,0,0) )
{
m_wsz[i++] = L'F';
}
if ( BST_CHECKED == SendMessage(GetDlgItem(hwnd,IDC_LOCALNUMBER),BM_GETCHECK,0,0) )
{
m_wsz[i++] = L'G';
}
m_wsz[i] = NULL;
}
void ShowErrorMessage(HWND hwnd, int iErr)
{
TCHAR szCaption[128];
TCHAR szText[1024];
LoadString(GetUIInstance(), IDS_ERRORCAPTION, szCaption, ARRAYSIZE(szCaption));
LoadString(GetUIInstance(), iErr, szText, ARRAYSIZE(szText));
MessageBeep(MB_ICONEXCLAMATION);
MessageBox(hwnd, szText, szCaption, MB_OK | MB_ICONEXCLAMATION);
SetFocus(hwnd);
}