|
|
/****************************************************************************
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
TapiCplWinHelp ((HWND)((LPHELPINFO)lParam)->hItemHandle, gszHelpFile, HELP_WM_HELP, (DWORD_PTR)(LPTSTR) aIDs); break; case WM_CONTEXTMENU: // Process right-clicks on controls
TapiCplWinHelp ((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
TapiCplWinHelp ((HWND)((LPHELPINFO)lParam)->hItemHandle, gszHelpFile, HELP_WM_HELP, (DWORD_PTR)(LPTSTR) a111HelpIDs); break; case WM_CONTEXTMENU: // Process right-clicks on controls
TapiCplWinHelp ((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
TapiCplWinHelp ((HWND)((LPHELPINFO)lParam)->hItemHandle, gszHelpFile, HELP_WM_HELP, (DWORD_PTR)(LPTSTR) a112HelpIDs); break; case WM_CONTEXTMENU: // Process right-clicks on controls
TapiCplWinHelp ((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); }
BOOL WinHelpEnabled() { DWORD cb; TCHAR szName[MAX_PATH]; BOOL fWinHelpEnabled = FALSE; HDESK hDesk;
//
// Get the name of the desktop. Normally returns default or Winlogon or system or WinNT
// The context sensitive help needs to be disabled in winlogon
//
szName[0] = 0;
hDesk = GetThreadDesktop(GetCurrentThreadId()); if (hDesk) { if (GetUserObjectInformation(hDesk, UOI_NAME, szName, sizeof(szName), &cb)) { if (_tcscmp(TEXT("Winlogon"), szName) != 0) { // This is not winlogon; we can enable context sensitive help
fWinHelpEnabled = TRUE; } } }
return (fWinHelpEnabled); }
BOOL TapiCplWinHelp(HWND hWndMain, LPCTSTR lpszHelp, UINT uCommand, DWORD_PTR dwData) { if (WinHelpEnabled()) { return WinHelp(hWndMain, lpszHelp, uCommand, dwData); } return TRUE; }
|