|
|
// ############################################################################
#include "pch.hpp"
#include "phbk.h"
#include "debug.h"
#include "phbkrc.h"
#include "misc.h"
//#include "ras.h"
#include <ras.h>
#pragma pack (4)
//#if !defined(WIN16)
//#include <rnaph.h>
//#endif
#pragma pack ()
#include "suapi.h"
#define ERROR_USER_EXIT 0x8b0bffff
#define MB_MYERROR (MB_APPLMODAL | MB_ICONERROR | MB_SETFOREGROUND)
#define NOTIFY_CODE (HIWORD(wParam))
#define WM_SHOWSTATEMSG WM_USER+1
char szTemp[100];
char szValidPhoneCharacters[] = {"0123456789AaBbCcDdPpTtWw!@$ -.()+*#,&\0"};
// ############################################################################
BOOL CSelectNumDlg::FHasPhoneNumbers(LPLINECOUNTRYENTRY pLCE) { LPIDLOOKUPELEMENT pIDLookUp; IDLOOKUPELEMENT LookUpTarget; CPhoneBook far *pcPBTemp; PACCESSENTRY pAE = NULL, pAELast = NULL; DWORD dwCountryID;
pcPBTemp = ((CPhoneBook far*)m_dwPhoneBook);
LookUpTarget.dwID = pLCE->dwCountryID;
pIDLookUp = NULL; pIDLookUp = (LPIDLOOKUPELEMENT)bsearch(&LookUpTarget,pcPBTemp->m_rgIDLookUp, (int)pcPBTemp->m_pLineCountryList->dwNumCountries,sizeof(IDLOOKUPELEMENT),CompareIDLookUpElements);
if (!pIDLookUp) return FALSE; // no such country
pAE = pIDLookUp->pFirstAE; if (!pAE) return FALSE; // no phone numbers at all
dwCountryID = pAE->dwCountryID;
pAELast = &(pcPBTemp->m_rgPhoneBookEntry[pcPBTemp->m_cPhoneBookEntries - 1]); while (pAELast > pAE && pAE->dwCountryID == dwCountryID) { if ((pAE->fType & m_bMask) == m_fType) return TRUE; pAE++; } return FALSE; // no phone numbers of the right type
// return ((BOOL)(pIDLookUp->pFirstAE));
}
// ############################################################################
INT_PTR CSelectNumDlg::DlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT lResult) { LRESULT lRet = TRUE; unsigned int idx; int iCurIndex; int iLastIndex; PACCESSENTRY pAE = NULL; LPSTR p, p2;
switch (uMsg) { case WM_INITDIALOG: CPhoneBook far *pcPBTemp; pcPBTemp = ((CPhoneBook far *)m_dwPhoneBook); m_hwndDlg = hwndDlg;
// figure out if we are in the middle of an AUTODIAL
//
if (m_dwFlags & AUTODIAL_IN_PROGRESS) { EnableWindow(GetDlgItem(m_hwndDlg,IDC_CMDBACK),FALSE); ShowWindow(GetDlgItem(m_hwndDlg,IDC_LBLSIGNUP),SW_HIDE); ShowWindow(GetDlgItem(m_hwndDlg,IDC_LBLDIALERR),SW_HIDE); } else if (m_dwFlags& DIALERR_IN_PROGRESS){ ShowWindow(GetDlgItem(m_hwndDlg,IDC_LBLSIGNUP),SW_HIDE); ShowWindow(GetDlgItem(m_hwndDlg,IDC_LBLAUTODIAL),SW_HIDE); ShowWindow(GetDlgItem(m_hwndDlg,IDC_CMDBACK),SW_HIDE); SetDlgItemText(m_hwndDlg,IDC_CMDNEXT,GetSz(IDS_OK)); }else { ShowWindow(GetDlgItem(m_hwndDlg,IDC_LBLAUTODIAL),SW_HIDE); ShowWindow(GetDlgItem(m_hwndDlg,IDC_LBLDIALERR),SW_HIDE); }
// Fill in country list and select current country
//
iCurIndex = -1; // 0xFFFFFFFF
// NOTE: it might be nice for INTL testing purposes to fill this combo box with
// a list sorted by the country ID instead of the country name.
for (idx=0;idx<pcPBTemp->m_pLineCountryList->dwNumCountries;idx++) { if (FHasPhoneNumbers(pcPBTemp->m_rgNameLookUp[idx].pLCE)) { wsprintf(szTemp,"%s (%ld)", pcPBTemp->m_rgNameLookUp[idx].psCountryName, pcPBTemp->m_rgNameLookUp[idx].pLCE->dwCountryID); iLastIndex = (int)SendDlgItemMessage(m_hwndDlg,IDC_CMBCOUNTRY, CB_ADDSTRING,0, (LPARAM)((LPSTR) &szTemp[0])); SendDlgItemMessage(m_hwndDlg,IDC_CMBCOUNTRY,CB_SETITEMDATA, (WPARAM)iLastIndex, (LPARAM)pcPBTemp->m_rgNameLookUp[idx].pLCE->dwCountryID); if (pcPBTemp->m_rgNameLookUp[idx].pLCE->dwCountryID == m_dwCountryID) { iCurIndex = iLastIndex; } } }
if (iCurIndex != -1) // 0xFFFFFFFF
{ SendDlgItemMessage(m_hwndDlg,IDC_CMBCOUNTRY,CB_SETCURSEL,(WPARAM)iCurIndex,0); } else { SendDlgItemMessage(m_hwndDlg,IDC_CMBCOUNTRY,CB_SETCURSEL,0,0); iCurIndex = (int)SendDlgItemMessage(m_hwndDlg,IDC_CMBCOUNTRY,CB_GETITEMDATA,0,0); if (iCurIndex != CB_ERR) m_dwCountryID = iCurIndex; }
// Copy country to label
//
if (GetDlgItemText(m_hwndDlg,IDC_CMBCOUNTRY,szTemp,100)) { SetDlgItemText(m_hwndDlg,IDC_LBLCOUNTRY,szTemp); }
// Initialize Last Selection Method
//
m_dwFlags &= (~FREETEXT_SELECTION_METHOD); m_dwFlags |= PHONELIST_SELECTION_METHOD;
// Fill in region list and select current region
//
FillRegion();
// Fill in phone numbers
//
FillNumber();
SetFocus(GetDlgItem(m_hwndDlg,IDC_CMBCOUNTRY)); lRet = FALSE; break; case WM_SHOWSTATEMSG: if (wParam) { ShowWindow(GetDlgItem(m_hwndDlg,IDC_LBLSTATEMSG),SW_SHOW); } else { ShowWindow(GetDlgItem(m_hwndDlg,IDC_LBLSTATEMSG),SW_HIDE); } break; // 1/9/96 jmazner added for Normandy #13185
case WM_CLOSE: if ((m_dwFlags & (AUTODIAL_IN_PROGRESS|DIALERR_IN_PROGRESS)) == 0) { if (MessageBox(hwndDlg,GetSz(IDS_WANTTOEXIT),GetSz(IDS_TITLE), MB_APPLMODAL | MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2) == IDYES) EndDialog(hwndDlg,IDC_CMDCANCEL); } else { EndDialog(hwndDlg,IDC_CMDCANCEL); } break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_CMBCOUNTRY: if (NOTIFY_CODE == CBN_SELCHANGE) { iCurIndex = (int)SendDlgItemMessage(m_hwndDlg,IDC_CMBCOUNTRY,CB_GETCURSEL,0,0); if (iCurIndex == CB_ERR) break;
iCurIndex = (int)SendDlgItemMessage(m_hwndDlg,IDC_CMBCOUNTRY,CB_GETITEMDATA,(WPARAM)iCurIndex,0); if (iCurIndex == CB_ERR) break; m_dwCountryID = iCurIndex; //REVIEW: data type????
FillRegion(); m_wRegion = 0;
FillNumber(); } break; case IDC_CMBREGION: if (NOTIFY_CODE == CBN_SELCHANGE) { iCurIndex = (int)SendDlgItemMessage(m_hwndDlg,IDC_CMBREGION,CB_GETCURSEL,0,0); if (iCurIndex == CB_ERR) break;
iCurIndex = (int)SendDlgItemMessage(m_hwndDlg,IDC_CMBREGION,CB_GETITEMDATA,(WPARAM)iCurIndex,0); if (iCurIndex == CB_ERR) break; m_wRegion = (WORD) iCurIndex; //REVIEW: data type???
FillNumber(); } break; case IDC_CMBNUMBER: if ((NOTIFY_CODE == CBN_SELCHANGE) || (NOTIFY_CODE == CBN_DROPDOWN)) { //iCurIndex = SendDlgItemMessage(m_hwndDlg,IDC_CMBNUMBER,CB_GETCURSEL,0,0);
//if (iCurIndex == CB_ERR) break;
EnableWindow(GetDlgItem(m_hwndDlg,IDC_CMDNEXT),TRUE);
//iCurIndex = SendDlgItemMessage(m_hwndDlg,IDC_CMBNUMBER,CB_GETITEMDATA,(WPARAM)iCurIndex,0);
//if (iCurIndex == CB_ERR) break;
//if (!lstrcpy(&m_szDunFile[0],&((PACCESSENTRY)iCurIndex)->szDataCenter[0]))
//{
// AssertSz(0,"Failed to copy data center from AE\n");
// break;
//}
// Set Last Selection Method
//
m_dwFlags &= (~FREETEXT_SELECTION_METHOD); m_dwFlags |= PHONELIST_SELECTION_METHOD;
} else if (NOTIFY_CODE == CBN_EDITCHANGE) {
if (SendDlgItemMessage(m_hwndDlg,IDC_CMBNUMBER,WM_GETTEXTLENGTH,0,0)) { EnableWindow(GetDlgItem(m_hwndDlg,IDC_CMDNEXT),TRUE); } else { EnableWindow(GetDlgItem(m_hwndDlg,IDC_CMDNEXT),FALSE); }
// Set Last Selection Method
//
m_dwFlags &= (~PHONELIST_SELECTION_METHOD); m_dwFlags |= FREETEXT_SELECTION_METHOD; }
break; case IDC_CMDNEXT: if ((m_dwFlags & PHONELIST_SELECTION_METHOD) == PHONELIST_SELECTION_METHOD) { DWORD_PTR dwItemData;
iCurIndex = (int)SendDlgItemMessage(m_hwndDlg,IDC_CMBNUMBER,CB_GETCURSEL,0,0); if (iCurIndex == CB_ERR) break;
dwItemData = SendDlgItemMessage(m_hwndDlg,IDC_CMBNUMBER,CB_GETITEMDATA,(WPARAM)iCurIndex,0); if (iCurIndex == CB_ERR) break;
// Get the relavant information out of the AE structures
//
pAE = (PACCESSENTRY)dwItemData; ((CPhoneBook far *)m_dwPhoneBook)->GetCanonical(pAE,m_szPhoneNumber); lstrcpy(m_szDunFile,pAE->szDataCenter); } else {
// Parse the text that the user entered
//
if (GetDlgItemText(m_hwndDlg,IDC_CMBNUMBER,m_szPhoneNumber,RAS_MaxPhoneNumber)) { m_szPhoneNumber[RAS_MaxPhoneNumber] = '\0'; for (p = m_szPhoneNumber;*p && *p != ':';p++); if (*p) { *p = '\0'; p++; lstrcpy(m_szDunFile,p); } else { m_szDunFile[0] = '\0'; }
// Check that the phone number on contains valid characters
//
for (p = m_szPhoneNumber;*p;p++) { for(p2 = szValidPhoneCharacters;*p2;p2++) { if (*p == *p2) break; // p2 for loop
} if (!*p2) break; // p for loop
}
if (*p) { MessageBox(m_hwndDlg,GetSz(IDS_INVALIDPHONE),GetSz(IDS_TITLE),MB_MYERROR); //MsgBox(IDS_INVALIDPHONE,MB_MYERROR);
break; // switch statement
} } else { AssertSz(0,"You should never be able to hit NEXT with nothing in the phone number.\n"); } } EndDialog(m_hwndDlg,IDC_CMDNEXT); break; case IDC_CMDCANCEL: if ((m_dwFlags & (AUTODIAL_IN_PROGRESS|DIALERR_IN_PROGRESS)) == 0) { if (MessageBox(hwndDlg,GetSz(IDS_WANTTOEXIT),GetSz(IDS_TITLE), MB_APPLMODAL | MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2) == IDYES) EndDialog(hwndDlg,IDC_CMDCANCEL); } else { EndDialog(hwndDlg,IDC_CMDCANCEL); } break; EndDialog(m_hwndDlg,IDC_CMDCANCEL); break; case IDC_CMDBACK: EndDialog(m_hwndDlg,IDC_CMDBACK); break; } default: lRet = FALSE; break; }// switch
return lRet; }
// ############################################################################
/***** 1/9/96 jmazner Normandy #13185
CAccessNumDlg::CAccessNumDlg() { m_szDunPrimary[0] = '\0'; m_szDunSecondary[0] = '\0'; m_szPrimary[0] = '\0'; m_szSecondary[0] = '\0'; m_rgAccessEntry = NULL; m_wNumber = 0; m_dwPhoneBook=0; } *********/
// ############################################################################
/********* 1/9/96 jmazner Normandy #13185
This was dead code, unused anywhere in icwphbk INT_PTR CAccessNumDlg::DlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT lResult) { LRESULT lRet = TRUE;
switch (uMsg) { case WM_INITDIALOG: SendDlgItemMessage(hwnd,IDC_TXTPRIMARY,EM_SETLIMITTEXT,RAS_MaxPhoneNumber,0); SendDlgItemMessage(hwnd,IDC_TXTSECONDARY,EM_SETLIMITTEXT,RAS_MaxPhoneNumber,0);
/ * // turn AccessEntries into phone numbers
if(m_szPrimary[0] == '\0') { LPIDLOOKUPELEMENT pIDLookUp; CPhoneBook *pcPBTemp; pcPBTemp = ((CPhoneBook far *)m_dwPhoneBook);
AssertSz(m_dwPhoneBook,"No phonebook set");
//For the primary phone number
pIDLookUp = (LPIDLOOKUPELEMENT)bsearch(&m_rgAccessEntry[0]->dwCountryID, pcPBTemp->m_rgIDLookUp,pcPBTemp->m_pLineCountryList->dwNumCountries, sizeof(IDLOOKUPELEMENT),CompareIdxLookUpElements); SzCanonicalFromAE (m_szPrimary, m_rgAccessEntry[0], pIDLookUp->pLCE);
if (m_rgAccessEntry[1]) { if (m_rgAccessEntry[0]->dwCountryID != m_rgAccessEntry[1]->dwCountryID) { pIDLookUp = (LPIDLOOKUPELEMENT)bsearch(&m_rgAccessEntry[0]->dwCountryID, pcPBTemp->m_rgIDLookUp,pcPBTemp->m_pLineCountryList->dwNumCountries, sizeof(IDLOOKUPELEMENT),CompareIdxLookUpElements); } SzCanonicalFromAE (m_szSecondary, m_rgAccessEntry[1], pIDLookUp->pLCE); } } * / SendDlgItemMessage(hwnd,IDC_TXTPRIMARY,WM_SETTEXT,0,(LPARAM)&m_szPrimary[0]); SendDlgItemMessage(hwnd,IDC_TXTSECONDARY,WM_SETTEXT,0,(LPARAM)&m_szSecondary[0]); break;
case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_CMDOK: // Check that we have at least one phone number
// Leave dialog
GetDlgItemText(hwnd,IDC_TXTPRIMARY,&m_szPrimary[0],RAS_MaxPhoneNumber); GetDlgItemText(hwnd,IDC_TXTSECONDARY,&m_szSecondary[0],RAS_MaxPhoneNumber);
if (m_szPrimary[0]) m_wNumber=1; else m_wNumber=0;
if (m_szSecondary[0]) m_wNumber++;
EndDialog(hwnd,IDC_CMDOK); break; case IDC_CMDEXIT: // Verify with user
// Get out of Dodge
if (MessageBox(hwnd,GetSz(IDS_WANTTOEXIT),GetSz(IDS_TITLE), MB_APPLMODAL | MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2) == IDYES) EndDialog(hwnd,IDC_CMDEXIT); break; case IDC_CMDCHANGEPRIMARY: // hide dialog
ShowWindow(hwnd,SW_HIDE); // show new dialog
CSelectNumDlg far *pcSelectNumDlg; pcSelectNumDlg = new CSelectNumDlg; if (!pcSelectNumDlg) { MessageBox(hwnd,GetSz(IDS_NOTENOUGHMEMORY),GetSz(IDS_TITLE),MB_MYERROR); // MsgBox(IDS_NOTENOUGHMEMORY,MB_MYERROR);
ShowWindow(hwnd,SW_SHOW); break; } int irc; pcSelectNumDlg->m_dwPhoneBook = m_dwPhoneBook; pcSelectNumDlg->m_dwCountryID = m_dwCountryID; pcSelectNumDlg->m_wRegion = m_wRegion; irc = DialogBoxParam(g_hInstDll,MAKEINTRESOURCE(IDD_SELECTNUMBER), g_hWndMain,PhbkGenericDlgProc, (LPARAM)pcSelectNumDlg); ShowWindow(hwnd,SW_SHOW); switch (irc) { case -1: MessageBox(hwnd,GetSz(IDS_NOTENOUGHMEMORY),GetSz(IDS_TITLE),MB_MYERROR); // MsgBox(IDS_NOTENOUGHMEMORY,MB_MYERROR);
goto DlgProcExit; // break;
case IDC_CMDOK: m_dwCountryID = pcSelectNumDlg->m_dwCountryID; m_wRegion = pcSelectNumDlg->m_wRegion; lstrcpy(m_szDunPrimary,pcSelectNumDlg->m_szDunFile); SetDlgItemText(hwnd,IDC_TXTPRIMARY,pcSelectNumDlg->m_szPhoneNumber); break; } break; } break; default: lRet = FALSE; break; } DlgProcExit: return lRet; }
*********************/
#ifdef WIN16
// ############################################################################
// NAME: SetNonBoldDlg
//
// Set all the child controls in a window to a non-bold version of the
// current control font.
//
// Parameters: HWND hDlg Handle to the dialog window
//
// Created 8/12/96 ValdonB (creatively borrowed from IE)
// ############################################################################
void SetNonBoldDlg(HWND hDlg) { HFONT hfontDlg = (HFONT) NULL; LOGFONT lFont; HWND hCtl; if ((hfontDlg = (HFONT) SendMessage(hDlg, WM_GETFONT, 0, 0L))) { if (GetObject(hfontDlg, sizeof(LOGFONT), (LPSTR) &lFont)) { lFont.lfWeight = FW_NORMAL; if (hfontDlg = CreateFontIndirect((LPLOGFONT) &lFont)) { // apply the font to all the child controls
for (hCtl = GetWindow(hDlg, GW_CHILD); NULL != hCtl; hCtl = GetWindow(hCtl, GW_HWNDNEXT)) { SendMessage(hCtl, WM_SETFONT, (WPARAM) hfontDlg, 0); } } } } }
// ############################################################################
// NAME: SetNonBoldDlg
//
// The dialog was modified earlier by unbolding the dialog font, and
// getting each control in the dialog to use that font. This function
// is called when the dialog is being destroyed so the font can be
// deleted
//
// Parameters: HWND hDlg Handle to the dialog window
//
// Created 8/12/96 ValdonB (creatively borrowed from IE)
// ############################################################################
void DeleteDlgFont ( HWND hDlg ) { HFONT hfont = NULL;
hfont = (HFONT)SendMessage(hDlg,WM_GETFONT,0,0); if (hfont) DeleteObject(hfont); } #endif // WIN16
// ############################################################################
#ifdef WIN16
extern "C" INT_PTR CALLBACK __export PhbkGenericDlgProc( #else
extern "C" __declspec(dllexport) INT_PTR CALLBACK PhbkGenericDlgProc( #endif
HWND hwndDlg, // handle to dialog box
UINT uMsg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
) { #if defined(WIN16)
RECT MyRect; RECT DTRect; #endif
//#ifdef DEBUG
// DebugBreak();
//#endif
CDialog far *pcDlg = NULL; LRESULT lRet; switch (uMsg) { case WM_DESTROY: ReleaseBold(GetDlgItem(hwndDlg,IDC_LBLTITLE)); break; case WM_INITDIALOG: pcDlg = (CDialog far *)lParam; SetWindowLongPtr(hwndDlg,DWLP_USER,lParam); lRet = TRUE; #if defined(WIN16)
//
// Move the window to the center of the screen
//
GetWindowRect(hwndDlg, &MyRect); if (0 == MyRect.left && 0 == MyRect.top) { GetWindowRect(GetDesktopWindow(), &DTRect); MoveWindow(hwndDlg, (DTRect.right - MyRect.right) / 2, (DTRect.bottom - MyRect.bottom) /2, MyRect.right, MyRect.bottom, FALSE); } SetNonBoldDlg(hwndDlg); #endif
MakeBold(GetDlgItem(hwndDlg,IDC_LBLTITLE)); break; #if defined(WIN16)
case WM_SYSCOLORCHANGE: Ctl3dColorChange(); break; #endif
// 1/9/96 jmazner Normandy #13185, moved to CSelectNumDlg::DlgProc
//case WM_CLOSE:
// if (MessageBox(hwndDlg,GetSz(IDS_WANTTOEXIT),GetSz(IDS_TITLE),
// MB_APPLMODAL | MB_ICONQUESTION | MB_YESNO | MB_DEFBUTTON2) == IDYES)
// EndDialog(hwndDlg,IDC_CMDCANCEL);
// lRet = TRUE;
// break;
// //PostQuitMessage(0);
// EndDialog(hwndDlg,FALSE);
// lRet = TRUE;
// break;
default: // let the system process the message
lRet = FALSE; }
if (!pcDlg) pcDlg = (CDialog far*)GetWindowLongPtr(hwndDlg,DWLP_USER); if (pcDlg) lRet = pcDlg->DlgProc(hwndDlg,uMsg,wParam,lParam,lRet);
return (INT_PTR)lRet; }
// ############################################################################
HRESULT CSelectNumDlg::FillRegion() { HRESULT hr = ERROR_NOT_ENOUGH_MEMORY; int iCurIndex; int iLastIndex; unsigned int idx; CPhoneBook far *pcPBTemp; pcPBTemp = ((CPhoneBook far *)m_dwPhoneBook); int iDebugIdx; // Fill in region list
//
SendDlgItemMessage(m_hwndDlg,IDC_CMBREGION,CB_RESETCONTENT,0,0); SendDlgItemMessage(m_hwndDlg,IDC_CMBREGION,CB_ADDSTRING,0,(LPARAM)GetSz(IDS_NATIONWIDE)); iCurIndex = -1; // 0xFFFFFFFF;
m_fHasRegions = FALSE; for (idx=0;idx<pcPBTemp->m_cStates;idx++) { if (pcPBTemp->m_rgState[idx].dwCountryID == m_dwCountryID) { PACCESSENTRY pAE = NULL, pAELast = NULL; pAE = pcPBTemp->m_rgState[idx].paeFirst; Assert(pAE); pAELast = &(pcPBTemp->m_rgPhoneBookEntry[pcPBTemp->m_cPhoneBookEntries - 1]); while (pAELast > pAE && pAE->dwCountryID == m_dwCountryID && pAE->wStateID == idx+1) { if ((pAE->fType & m_bMask) == m_fType) goto AddRegion; pAE++; } continue;
AddRegion: m_fHasRegions = TRUE;
iLastIndex = (int)SendDlgItemMessage(m_hwndDlg,IDC_CMBREGION,CB_ADDSTRING,0,(LPARAM)&pcPBTemp->m_rgState[idx].szStateName[0]); iDebugIdx = (int)SendDlgItemMessage(m_hwndDlg,IDC_CMBREGION,CB_SETITEMDATA,(WPARAM)iLastIndex,(LPARAM)idx+1); if ((idx+1) == m_wRegion) { iCurIndex = iLastIndex; } } }
// select current region or nation wide
//
if (iCurIndex != -1) // 0xFFFFFFFF
{ SendDlgItemMessage(m_hwndDlg,IDC_CMBREGION,CB_SETCURSEL,(WPARAM)iCurIndex,0); } else { m_wRegion = 0; // Nationwide
SendDlgItemMessage(m_hwndDlg,IDC_CMBREGION,CB_SETCURSEL,0,0); }
EnableWindow(GetDlgItem(m_hwndDlg,IDC_CMBREGION),m_fHasRegions); PostMessage(m_hwndDlg,WM_SHOWSTATEMSG,m_fHasRegions,0);
hr = ERROR_SUCCESS; return hr; }
// ############################################################################
CSelectNumDlg::CSelectNumDlg() { m_dwCountryID = 0; m_wRegion = 0; m_dwPhoneBook = 0; m_szPhoneNumber[0] = '\0'; m_szDunFile[0] = '\0'; m_fType = 0; m_bMask = 0; m_fHasRegions = FALSE; m_hwndDlg = NULL; m_dwFlags = 0; }
// ############################################################################
HRESULT CSelectNumDlg::FillNumber() { HRESULT hr = ERROR_NOT_ENOUGH_MEMORY; PACCESSENTRY pAELast, pAE = NULL; CPhoneBook far *pcPBTemp; unsigned int idx; pcPBTemp = ((CPhoneBook far *)m_dwPhoneBook); // Check if we need to look up the number from the region or from the country
//
if (m_fHasRegions && m_wRegion) pAE = pcPBTemp->m_rgState[m_wRegion-1].paeFirst;
// Find the Access Entries for the country
//
if (!pAE) { LPIDLOOKUPELEMENT pIDLookUp, pLookUpTarget;
pLookUpTarget = (LPIDLOOKUPELEMENT)GlobalAlloc(GPTR,sizeof(IDLOOKUPELEMENT)); Assert(pLookUpTarget); if (!pLookUpTarget) goto FillNumberExit; pLookUpTarget->dwID = m_dwCountryID;
pIDLookUp = NULL; pIDLookUp = (LPIDLOOKUPELEMENT)bsearch(pLookUpTarget,pcPBTemp->m_rgIDLookUp, (int)pcPBTemp->m_pLineCountryList->dwNumCountries,sizeof(IDLOOKUPELEMENT),CompareIDLookUpElements); if (pIDLookUp) pAE = pIDLookUp->pFirstAE; }
// Fill the list for whatever AE's we found
//
SendDlgItemMessage(m_hwndDlg,IDC_CMBNUMBER,CB_RESETCONTENT,0,0); if (pAE) { //pAELast = pcPBTemp->m_rgPhoneBookEntry + pcPBTemp->m_cPhoneBookEntries;
pAELast = &(pcPBTemp->m_rgPhoneBookEntry[pcPBTemp->m_cPhoneBookEntries - 1]); while (pAELast > pAE && pAE->dwCountryID == m_dwCountryID && pAE->wStateID == m_wRegion) { if ((pAE->fType & m_bMask) == m_fType) { wsprintf(szTemp,"%s (%s) %s",pAE->szCity,pAE->szAreaCode, pAE->szAccessNumber); idx = (int)SendDlgItemMessage(m_hwndDlg,IDC_CMBNUMBER, CB_ADDSTRING,0, (LPARAM)((LPSTR) &szTemp[0])); if (idx == -1) goto FillNumberExit; SendDlgItemMessage(m_hwndDlg,IDC_CMBNUMBER,CB_SETITEMDATA, (WPARAM)idx,(LPARAM)pAE); } pAE++; }
// Select the first item
//
if (SendDlgItemMessage(m_hwndDlg,IDC_CMBNUMBER,CB_SETCURSEL,0,0) == CB_ERR) EnableWindow(GetDlgItem(m_hwndDlg,IDC_CMDNEXT),FALSE); else EnableWindow(GetDlgItem(m_hwndDlg,IDC_CMDNEXT),TRUE); hr = ERROR_SUCCESS; } FillNumberExit: return hr; }
|