363 lines
9.2 KiB
C++
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);
|
|
}
|
|
|
|
|