windows-nt/Source/XPSP1/NT/base/ntsetup/opktools/setupmgr/oc/tapi.c
2020-09-26 16:20:57 +08:00

1286 lines
43 KiB
C

//----------------------------------------------------------------------------
//
// Copyright (c) 1997-1999 Microsoft Corporation
// All rights reserved.
//
// File Name:
// tapi.c
//
// Description:
// This file contains the dialog procedure for the telephone settings
// (IDD_TAPI).
//
//----------------------------------------------------------------------------
#include "pch.h"
#include "resource.h"
#define LengthOf(x) ( sizeof(x) / sizeof(COUNTRYCODE_STRUCT) )
typedef struct _COUNTRYCODE_STRUCT {
DWORD dwCountryCode;
TCHAR *szCountryName;
} COUNTRYCODE_STRUCT;
COUNTRYCODE_STRUCT rgCountryCodeArray[243];
static TCHAR *StrDontSpecifySetting;
static VOID LoadCountryStrings( VOID );
//----------------------------------------------------------------------------
//
// Function: IsValidAreaCode
//
// Purpose: Analyzes the area code the user entered to see if it is a valid
// area code.
//
// Arguments: VOID
//
// Returns: VOID
//
//----------------------------------------------------------------------------
static BOOL
IsValidAreaCode( VOID )
{
INT i;
//
// Leaving it blank is valid
//
if( GenSettings.szAreaCode[0] == _T('\0') )
{
return( TRUE );
}
// ISSUE-2002/02/28-stelo- make sure these are the only valid chars on localized builds of NT as well
//
// Only valid chars for area code are 0 through 9
//
for( i = 0; GenSettings.szAreaCode[i] != _T('\0'); i++ )
{
if( GenSettings.szAreaCode[i] < _T('0') ||
GenSettings.szAreaCode[i] > _T('9') )
{
return( FALSE );
}
}
return( TRUE );
}
//----------------------------------------------------------------------------
//
// Function: IsValidOutsideLine
//
// Purpose: Analyzes the outside line the user entered to see if it is a valid
// outside line.
//
// Arguments: VOID
//
// Returns: VOID
//
//----------------------------------------------------------------------------
static BOOL
IsValidOutsideLine( VOID )
{
INT i;
//
// Leaving it blank is valid
//
if( GenSettings.szOutsideLine[0] == _T('\0') )
{
return( TRUE );
}
// ISSUE-2002/02/28-stelo- make sure these are the only valid chars on localized builds of NT as well
//
// Only valid chars for outside line are 0 through 9 and * # ,
//
for( i = 0; GenSettings.szOutsideLine[i] != _T('\0'); i++ )
{
if( GenSettings.szOutsideLine[i] < _T('0') ||
GenSettings.szOutsideLine[i] > _T('9') )
{
//
// Only acceptable chars outside the 0-9 range are are * # ,
//
if( GenSettings.szOutsideLine[i] != _T('*') &&
GenSettings.szOutsideLine[i] != _T('#') &&
GenSettings.szOutsideLine[i] != _T(',') )
{
return( FALSE );
}
}
}
return( TRUE );
}
//----------------------------------------------------------------------------
//
// Function: OnTapiInitDialog
//
// Purpose:
//
// Arguments: IN HWND hwnd - handle to the dialog box
//
// Returns: VOID
//
//----------------------------------------------------------------------------
VOID
OnTapiInitDialog( IN HWND hwnd ) {
INT i;
INT_PTR iIndex = 0;
//
// Load strings from resources
//
StrDontSpecifySetting = MyLoadString( IDS_DONTSPECIFYSETTING );
LoadCountryStrings();
// Disable IME so DBCS characters can not be entered in fields
//
ImmAssociateContext(GetDlgItem(hwnd, IDC_AREACODE), NULL);
ImmAssociateContext(GetDlgItem(hwnd, IDC_OUTSIDELINE), NULL);
//
// Set the text limit on the edit boxes to MAX_PHONE_LENGTH
//
SendDlgItemMessage( hwnd,
IDC_AREACODE,
EM_LIMITTEXT,
(WPARAM) MAX_PHONE_LENGTH,
(LPARAM) 0 );
SendDlgItemMessage( hwnd,
IDC_OUTSIDELINE,
EM_LIMITTEXT,
(WPARAM) MAX_PHONE_LENGTH,
(LPARAM) 0 );
//
// Load the combo box with all the possible countries
// (it also loads the box with the "Don't specify setting")
//
for( i = 0; i < LengthOf(rgCountryCodeArray); i++ )
{
SendDlgItemMessage( hwnd,
IDC_COUNTRYCODE,
CB_ADDSTRING,
(WPARAM) 0,
(LPARAM) rgCountryCodeArray[i].szCountryName );
}
//
// Load the Tone/Pulse dialog with the strings Tone, Pulse and Don't specify
// and associate a unique number to them
//
iIndex = SendDlgItemMessage( hwnd,
IDC_CB_TONEPULSE,
CB_ADDSTRING,
(WPARAM) 0,
(LPARAM) MyLoadString( IDS_TONE ) );
SendDlgItemMessage( hwnd,
IDC_CB_TONEPULSE,
CB_SETITEMDATA,
(WPARAM) iIndex,
(LPARAM) TONE );
iIndex = SendDlgItemMessage( hwnd,
IDC_CB_TONEPULSE,
CB_ADDSTRING,
(WPARAM) 0,
(LPARAM) MyLoadString( IDS_PULSE ) );
SendDlgItemMessage( hwnd,
IDC_CB_TONEPULSE,
CB_SETITEMDATA,
(WPARAM) iIndex,
(LPARAM) PULSE );
iIndex = SendDlgItemMessage( hwnd,
IDC_CB_TONEPULSE,
CB_ADDSTRING,
(WPARAM) 0,
(LPARAM) StrDontSpecifySetting );
SendDlgItemMessage( hwnd,
IDC_CB_TONEPULSE,
CB_SETITEMDATA,
(WPARAM) iIndex,
(LPARAM) DONTSPECIFYSETTING );
}
//----------------------------------------------------------------------------
//
// Function: OnTapiSetActive
//
// Purpose:
//
// Arguments: IN HWND hwnd - handle to the dialog box
//
// Returns: VOID
//
//----------------------------------------------------------------------------
VOID
OnTapiSetActive( IN HWND hwnd ) {
INT i;
INT_PTR iReturnValue = 0;
//
// Find the string corresponding to the country code
//
for( i = 0; i < LengthOf(rgCountryCodeArray); i++ )
{
if( rgCountryCodeArray[i].dwCountryCode ==
GenSettings.dwCountryCode )
{
iReturnValue = SendDlgItemMessage( hwnd,
IDC_COUNTRYCODE,
CB_SELECTSTRING,
(WPARAM) -1,
(LPARAM) rgCountryCodeArray[i].szCountryName );
break; // found the item so break out of the for loop
}
}
//
// if the country code was not found just select the 1st item
//
if( i >= LengthOf(rgCountryCodeArray) || iReturnValue == CB_ERR )
{
SendDlgItemMessage( hwnd,
IDC_COUNTRYCODE,
CB_SETCURSEL,
(WPARAM) 0,
(LPARAM) 0 );
}
SetWindowText( GetDlgItem( hwnd, IDC_AREACODE ),
GenSettings.szAreaCode );
SetWindowText( GetDlgItem( hwnd, IDC_OUTSIDELINE ),
GenSettings.szOutsideLine );
//
// Set the dialing method to Tone, Pulse or Don't specify
//
if( GenSettings.iDialingMethod == TONE ) {
SendDlgItemMessage( hwnd,
IDC_CB_TONEPULSE,
CB_SETCURSEL,
(WPARAM) 0,
(LPARAM) 0 );
}
else if( GenSettings.iDialingMethod == PULSE ) {
SendDlgItemMessage( hwnd,
IDC_CB_TONEPULSE,
CB_SETCURSEL,
(WPARAM) 1,
(LPARAM) 0 );
}
else {
SendDlgItemMessage( hwnd,
IDC_CB_TONEPULSE,
CB_SETCURSEL,
(WPARAM) 2,
(LPARAM) 0 );
}
WIZ_BUTTONS(hwnd, PSWIZB_BACK | PSWIZB_NEXT);
}
//----------------------------------------------------------------------------
//
// Function: OnWizNextTapi
//
// Purpose: Store the setting from the TAPI page into the appropriate
// global variables
//
// Arguments: IN HWND hwnd - handle to the dialog box
//
// Returns: BOOL
//
//----------------------------------------------------------------------------
BOOL
OnWizNextTapi( IN HWND hwnd ) {
INT i;
INT_PTR iIndex;
INT iData;
TCHAR szBuffer[MAX_STRING_LEN];
BOOL bStayOnThisPage = FALSE;
BOOL bResult = TRUE;
//
// Grab the country code
//
iIndex = SendDlgItemMessage( hwnd,
IDC_COUNTRYCODE,
CB_GETCURSEL,
(WPARAM) 0,
(LPARAM) 0 );
SendDlgItemMessage( hwnd,
IDC_COUNTRYCODE,
CB_GETLBTEXT,
(WPARAM) iIndex,
(LPARAM) szBuffer );
for(i = 0; i < LengthOf(rgCountryCodeArray); i++)
{
if( lstrcmp( szBuffer,
rgCountryCodeArray[i].szCountryName ) == 0 )
{
GenSettings.dwCountryCode = rgCountryCodeArray[i].dwCountryCode;
break; // found it, so break
}
}
//
// if, for some reason, the country doesn't match, just set it to US
//
if( i >= LengthOf(rgCountryCodeArray) )
{
//
// Somehow a country that was not known about was specified
//
AssertMsg(FALSE,
"Programming error: Unknown TAPI country code");
GenSettings.dwCountryCode = 1;
}
//
// Grab the Area code
//
GetWindowText( GetDlgItem( hwnd, IDC_AREACODE ),
GenSettings.szAreaCode,
MAX_PHONE_LENGTH + 1 );
//
// Grab the outside line number
//
GetWindowText( GetDlgItem( hwnd, IDC_OUTSIDELINE ),
GenSettings.szOutsideLine,
MAX_PHONE_LENGTH + 1 );
//
// Grab if it is Tone or Pulse dialing (or Don't Specify)
//
iIndex = SendDlgItemMessage( hwnd,
IDC_CB_TONEPULSE,
CB_GETCURSEL,
(WPARAM) 0,
(LPARAM) 0 );
GenSettings.iDialingMethod = (int)SendDlgItemMessage( hwnd,
IDC_CB_TONEPULSE,
CB_GETITEMDATA,
(WPARAM) iIndex,
(LPARAM) szBuffer );
if( GenSettings.iDialingMethod == CB_ERR ) {
AssertMsg( FALSE,
"Programming error: Bad item data for Tone/Pulse dialing" );
GenSettings.iDialingMethod = TONE;
}
if( ! IsValidAreaCode() )
{
bResult = FALSE;
ReportErrorId( hwnd,
MSGTYPE_ERR,
IDS_ERR_BAD_AREA_CODE );
}
if( ! IsValidOutsideLine() )
{
bResult = FALSE;
ReportErrorId( hwnd,
MSGTYPE_ERR,
IDS_ERR_BAD_OUTSIDE_LINE );
}
return ( bResult );
}
//----------------------------------------------------------------------------
//
// Function: DlgTapiPage
//
// Purpose:
//
// Arguments: standard Win32 dialog proc arguments
//
// Returns: standard Win32 dialog proc return value -- whether the message
// was handled or not
//
//----------------------------------------------------------------------------
INT_PTR CALLBACK
DlgTapiPage( IN HWND hwnd,
IN UINT uMsg,
IN WPARAM wParam,
IN LPARAM lParam) {
BOOL bStatus = TRUE;
switch( uMsg ) {
case WM_INITDIALOG: {
OnTapiInitDialog( hwnd );
break;
}
case WM_NOTIFY: {
LPNMHDR pnmh = (LPNMHDR)lParam;
switch( pnmh->code ) {
case PSN_QUERYCANCEL:
WIZ_CANCEL(hwnd);
break;
case PSN_SETACTIVE: {
g_App.dwCurrentHelp = IDH_TELE_PHNY;
OnTapiSetActive( hwnd );
break;
}
case PSN_WIZBACK:
bStatus = FALSE;
break;
case PSN_WIZNEXT:
if ( !OnWizNextTapi( hwnd ) )
WIZ_FAIL(hwnd);
else
bStatus = FALSE;
break;
case PSN_HELP:
WIZ_HELP();
break;
default:
break;
}
break;
}
default:
bStatus = FALSE;
break;
}
return bStatus;
}
static VOID
LoadCountryStrings( VOID ) {
rgCountryCodeArray[0].dwCountryCode = 1;
rgCountryCodeArray[0].szCountryName = MyLoadString( IDS_United_States_of_America );
rgCountryCodeArray[1].dwCountryCode = 101;
rgCountryCodeArray[1].szCountryName = MyLoadString( IDS_Anguilla );
rgCountryCodeArray[2].dwCountryCode = 102;
rgCountryCodeArray[2].szCountryName = MyLoadString( IDS_Antigua );
rgCountryCodeArray[3].dwCountryCode = 103;
rgCountryCodeArray[3].szCountryName = MyLoadString( IDS_Bahamas );
rgCountryCodeArray[4].dwCountryCode = 104;
rgCountryCodeArray[4].szCountryName = MyLoadString( IDS_Barbados );
rgCountryCodeArray[5].dwCountryCode = 105;
rgCountryCodeArray[5].szCountryName = MyLoadString( IDS_Bermuda );
rgCountryCodeArray[6].dwCountryCode = 106;
rgCountryCodeArray[6].szCountryName = MyLoadString( IDS_British_Virgin_Islands );
rgCountryCodeArray[7].dwCountryCode = 107;
rgCountryCodeArray[7].szCountryName = MyLoadString( IDS_Canada );
rgCountryCodeArray[8].dwCountryCode = 108;
rgCountryCodeArray[8].szCountryName = MyLoadString( IDS_Cayman_Islands );
rgCountryCodeArray[9].dwCountryCode = 109;
rgCountryCodeArray[9].szCountryName = MyLoadString( IDS_Dominica );
rgCountryCodeArray[10].dwCountryCode = 110;
rgCountryCodeArray[10].szCountryName = MyLoadString( IDS_Dominican_Republic );
rgCountryCodeArray[11].dwCountryCode = 111;
rgCountryCodeArray[11].szCountryName = MyLoadString( IDS_Grenada );
rgCountryCodeArray[12].dwCountryCode = 112;
rgCountryCodeArray[12].szCountryName = MyLoadString( IDS_Jamaica );
rgCountryCodeArray[13].dwCountryCode = 113;
rgCountryCodeArray[13].szCountryName = MyLoadString( IDS_Montserrat );
rgCountryCodeArray[14].dwCountryCode = 114;
rgCountryCodeArray[14].szCountryName = MyLoadString( IDS_Nevis );
rgCountryCodeArray[15].dwCountryCode = 115;
rgCountryCodeArray[15].szCountryName = MyLoadString( IDS_St__Kitts );
rgCountryCodeArray[16].dwCountryCode = 116;
rgCountryCodeArray[16].szCountryName = MyLoadString( IDS_St__Vincent_Grenadines );
rgCountryCodeArray[17].dwCountryCode = 117;
rgCountryCodeArray[17].szCountryName = MyLoadString( IDS_Trinidad_and_Tobago );
rgCountryCodeArray[18].dwCountryCode = 118;
rgCountryCodeArray[18].szCountryName = MyLoadString( IDS_Turks_and_Caicos_Islands );
rgCountryCodeArray[19].dwCountryCode = 120;
rgCountryCodeArray[19].szCountryName = MyLoadString( IDS_Barbuda );
rgCountryCodeArray[20].dwCountryCode = 121;
rgCountryCodeArray[20].szCountryName = MyLoadString( IDS_Puerto_Rico );
rgCountryCodeArray[21].dwCountryCode = 122;
rgCountryCodeArray[21].szCountryName = MyLoadString( IDS_Saint_Lucia );
rgCountryCodeArray[22].dwCountryCode = 123;
rgCountryCodeArray[22].szCountryName = MyLoadString( IDS_United_States_Virgin_Is );
rgCountryCodeArray[23].dwCountryCode = 20;
rgCountryCodeArray[23].szCountryName = MyLoadString( IDS_Egypt );
rgCountryCodeArray[24].dwCountryCode = 212;
rgCountryCodeArray[24].szCountryName = MyLoadString( IDS_Morocco );
rgCountryCodeArray[25].dwCountryCode = 213;
rgCountryCodeArray[25].szCountryName = MyLoadString( IDS_Algeria );
rgCountryCodeArray[26].dwCountryCode = 216;
rgCountryCodeArray[26].szCountryName = MyLoadString( IDS_Tunisia );
rgCountryCodeArray[27].dwCountryCode = 218;
rgCountryCodeArray[27].szCountryName = MyLoadString( IDS_Libya );
rgCountryCodeArray[28].dwCountryCode = 220;
rgCountryCodeArray[28].szCountryName = MyLoadString( IDS_Gambia );
rgCountryCodeArray[29].dwCountryCode = 221;
rgCountryCodeArray[29].szCountryName = MyLoadString( IDS_Senegal );
rgCountryCodeArray[30].dwCountryCode = 222;
rgCountryCodeArray[30].szCountryName = MyLoadString( IDS_Mauritania );
rgCountryCodeArray[31].dwCountryCode = 223;
rgCountryCodeArray[31].szCountryName = MyLoadString( IDS_Mali );
rgCountryCodeArray[32].dwCountryCode = 224;
rgCountryCodeArray[32].szCountryName = MyLoadString( IDS_Guinea );
rgCountryCodeArray[33].dwCountryCode = 225;
rgCountryCodeArray[33].szCountryName = MyLoadString( IDS_Cote_d_Ivoire );
rgCountryCodeArray[34].dwCountryCode = 226;
rgCountryCodeArray[34].szCountryName = MyLoadString( IDS_Burkina_Faso );
rgCountryCodeArray[35].dwCountryCode = 227;
rgCountryCodeArray[35].szCountryName = MyLoadString( IDS_Niger );
rgCountryCodeArray[36].dwCountryCode = 228;
rgCountryCodeArray[36].szCountryName = MyLoadString( IDS_Togo );
rgCountryCodeArray[37].dwCountryCode = 229;
rgCountryCodeArray[37].szCountryName = MyLoadString( IDS_Benin );
rgCountryCodeArray[38].dwCountryCode = 230;
rgCountryCodeArray[38].szCountryName = MyLoadString( IDS_Mauritius );
rgCountryCodeArray[39].dwCountryCode = 231;
rgCountryCodeArray[39].szCountryName = MyLoadString( IDS_Liberia );
rgCountryCodeArray[40].dwCountryCode = 232;
rgCountryCodeArray[40].szCountryName = MyLoadString( IDS_Sierra_Leone );
rgCountryCodeArray[41].dwCountryCode = 233;
rgCountryCodeArray[41].szCountryName = MyLoadString( IDS_Ghana );
rgCountryCodeArray[42].dwCountryCode = 234;
rgCountryCodeArray[42].szCountryName = MyLoadString( IDS_Nigeria );
rgCountryCodeArray[43].dwCountryCode = 235;
rgCountryCodeArray[43].szCountryName = MyLoadString( IDS_Chad );
rgCountryCodeArray[44].dwCountryCode = 236;
rgCountryCodeArray[44].szCountryName = MyLoadString( IDS_Central_African_Rep );
rgCountryCodeArray[45].dwCountryCode = 237;
rgCountryCodeArray[45].szCountryName = MyLoadString( IDS_Cameroon );
rgCountryCodeArray[46].dwCountryCode = 238;
rgCountryCodeArray[46].szCountryName = MyLoadString( IDS_Cape_Verde );
rgCountryCodeArray[47].dwCountryCode = 239;
rgCountryCodeArray[47].szCountryName = MyLoadString( IDS_Sao_Tome_and_Principe );
rgCountryCodeArray[48].dwCountryCode = 240;
rgCountryCodeArray[48].szCountryName = MyLoadString( IDS_Equatorial_Guinea );
rgCountryCodeArray[49].dwCountryCode = 241;
rgCountryCodeArray[49].szCountryName = MyLoadString( IDS_Gabon );
rgCountryCodeArray[50].dwCountryCode = 242;
rgCountryCodeArray[50].szCountryName = MyLoadString( IDS_Congo );
rgCountryCodeArray[51].dwCountryCode = 243;
rgCountryCodeArray[51].szCountryName = MyLoadString( IDS_Dem_Rep_of_the_Congo );
rgCountryCodeArray[52].dwCountryCode = 244;
rgCountryCodeArray[52].szCountryName = MyLoadString( IDS_Angola );
rgCountryCodeArray[53].dwCountryCode = 245;
rgCountryCodeArray[53].szCountryName = MyLoadString( IDS_Guinea_Bissau );
rgCountryCodeArray[54].dwCountryCode = 246;
rgCountryCodeArray[54].szCountryName = MyLoadString( IDS_Diego_Garcia );
rgCountryCodeArray[55].dwCountryCode = 247;
rgCountryCodeArray[55].szCountryName = MyLoadString( IDS_Ascension_Island );
rgCountryCodeArray[56].dwCountryCode = 248;
rgCountryCodeArray[56].szCountryName = MyLoadString( IDS_Seychelles );
rgCountryCodeArray[57].dwCountryCode = 249;
rgCountryCodeArray[57].szCountryName = MyLoadString( IDS_Sudan );
rgCountryCodeArray[58].dwCountryCode = 250;
rgCountryCodeArray[58].szCountryName = MyLoadString( IDS_Rwanda );
rgCountryCodeArray[59].dwCountryCode = 251;
rgCountryCodeArray[59].szCountryName = MyLoadString( IDS_Ethiopia );
rgCountryCodeArray[60].dwCountryCode = 252;
rgCountryCodeArray[60].szCountryName = MyLoadString( IDS_Somalia );
rgCountryCodeArray[61].dwCountryCode = 253;
rgCountryCodeArray[61].szCountryName = MyLoadString( IDS_Djibouti );
rgCountryCodeArray[62].dwCountryCode = 254;
rgCountryCodeArray[62].szCountryName = MyLoadString( IDS_Kenya );
rgCountryCodeArray[63].dwCountryCode = 255;
rgCountryCodeArray[63].szCountryName = MyLoadString( IDS_Tanzania );
rgCountryCodeArray[64].dwCountryCode = 256;
rgCountryCodeArray[64].szCountryName = MyLoadString( IDS_Uganda );
rgCountryCodeArray[65].dwCountryCode = 257;
rgCountryCodeArray[65].szCountryName = MyLoadString( IDS_Burundi );
rgCountryCodeArray[66].dwCountryCode = 258;
rgCountryCodeArray[66].szCountryName = MyLoadString( IDS_Mozambique );
rgCountryCodeArray[67].dwCountryCode = 260;
rgCountryCodeArray[67].szCountryName = MyLoadString( IDS_Zambia );
rgCountryCodeArray[68].dwCountryCode = 261;
rgCountryCodeArray[68].szCountryName = MyLoadString( IDS_Madagascar );
rgCountryCodeArray[69].dwCountryCode = 262;
rgCountryCodeArray[69].szCountryName = MyLoadString( IDS_Reunion_Island );
rgCountryCodeArray[70].dwCountryCode = 263;
rgCountryCodeArray[70].szCountryName = MyLoadString( IDS_Zimbabwe );
rgCountryCodeArray[71].dwCountryCode = 264;
rgCountryCodeArray[71].szCountryName = MyLoadString( IDS_Namibia );
rgCountryCodeArray[72].dwCountryCode = 265;
rgCountryCodeArray[72].szCountryName = MyLoadString( IDS_Malawi );
rgCountryCodeArray[73].dwCountryCode = 266;
rgCountryCodeArray[73].szCountryName = MyLoadString( IDS_Lesotho );
rgCountryCodeArray[74].dwCountryCode = 267;
rgCountryCodeArray[74].szCountryName = MyLoadString( IDS_Botswana );
rgCountryCodeArray[75].dwCountryCode = 268;
rgCountryCodeArray[75].szCountryName = MyLoadString( IDS_Swaziland );
rgCountryCodeArray[76].dwCountryCode = 269;
rgCountryCodeArray[76].szCountryName = MyLoadString( IDS_Mayotte_Island );
rgCountryCodeArray[77].dwCountryCode = 2691;
rgCountryCodeArray[77].szCountryName = MyLoadString( IDS_Comoros );
rgCountryCodeArray[78].dwCountryCode = 27;
rgCountryCodeArray[78].szCountryName = MyLoadString( IDS_South_Africa );
rgCountryCodeArray[79].dwCountryCode = 290;
rgCountryCodeArray[79].szCountryName = MyLoadString( IDS_St__Helena );
rgCountryCodeArray[80].dwCountryCode = 291;
rgCountryCodeArray[80].szCountryName = MyLoadString( IDS_Eritrea );
rgCountryCodeArray[81].dwCountryCode = 297;
rgCountryCodeArray[81].szCountryName = MyLoadString( IDS_Aruba );
rgCountryCodeArray[82].dwCountryCode = 298;
rgCountryCodeArray[82].szCountryName = MyLoadString( IDS_Faeroe_Islands );
rgCountryCodeArray[83].dwCountryCode = 299;
rgCountryCodeArray[83].szCountryName = MyLoadString( IDS_Greenland );
rgCountryCodeArray[84].dwCountryCode = 30;
rgCountryCodeArray[84].szCountryName = MyLoadString( IDS_Greece );
rgCountryCodeArray[85].dwCountryCode = 31;
rgCountryCodeArray[85].szCountryName = MyLoadString( IDS_Netherlands );
rgCountryCodeArray[86].dwCountryCode = 32;
rgCountryCodeArray[86].szCountryName = MyLoadString( IDS_Belgium );
rgCountryCodeArray[87].dwCountryCode = 33;
rgCountryCodeArray[87].szCountryName = MyLoadString( IDS_France );
rgCountryCodeArray[88].dwCountryCode = 377;
rgCountryCodeArray[88].szCountryName = MyLoadString( IDS_Monaco );
rgCountryCodeArray[89].dwCountryCode = 34;
rgCountryCodeArray[89].szCountryName = MyLoadString( IDS_Spain );
rgCountryCodeArray[90].dwCountryCode = 350;
rgCountryCodeArray[90].szCountryName = MyLoadString( IDS_Gibraltar );
rgCountryCodeArray[91].dwCountryCode = 351;
rgCountryCodeArray[91].szCountryName = MyLoadString( IDS_Portugal );
rgCountryCodeArray[92].dwCountryCode = 352;
rgCountryCodeArray[92].szCountryName = MyLoadString( IDS_Luxembourg );
rgCountryCodeArray[93].dwCountryCode = 353;
rgCountryCodeArray[93].szCountryName = MyLoadString( IDS_Ireland );
rgCountryCodeArray[94].dwCountryCode = 354;
rgCountryCodeArray[94].szCountryName = MyLoadString( IDS_Iceland );
rgCountryCodeArray[95].dwCountryCode = 355;
rgCountryCodeArray[95].szCountryName = MyLoadString( IDS_Albania );
rgCountryCodeArray[96].dwCountryCode = 356;
rgCountryCodeArray[96].szCountryName = MyLoadString( IDS_Malta );
rgCountryCodeArray[97].dwCountryCode = 357;
rgCountryCodeArray[97].szCountryName = MyLoadString( IDS_Cyprus );
rgCountryCodeArray[98].dwCountryCode = 358;
rgCountryCodeArray[98].szCountryName = MyLoadString( IDS_Finland );
rgCountryCodeArray[99].dwCountryCode = 359;
rgCountryCodeArray[99].szCountryName = MyLoadString( IDS_Bulgaria );
rgCountryCodeArray[100].dwCountryCode = 36;
rgCountryCodeArray[100].szCountryName = MyLoadString( IDS_Hungary );
rgCountryCodeArray[101].dwCountryCode = 370;
rgCountryCodeArray[101].szCountryName = MyLoadString( IDS_Lithuania );
rgCountryCodeArray[102].dwCountryCode = 371;
rgCountryCodeArray[102].szCountryName = MyLoadString( IDS_Latvia );
rgCountryCodeArray[103].dwCountryCode = 372;
rgCountryCodeArray[103].szCountryName = MyLoadString( IDS_Estonia );
rgCountryCodeArray[104].dwCountryCode = 373;
rgCountryCodeArray[104].szCountryName = MyLoadString( IDS_Moldova );
rgCountryCodeArray[105].dwCountryCode = 374;
rgCountryCodeArray[105].szCountryName = MyLoadString( IDS_Armenia );
rgCountryCodeArray[106].dwCountryCode = 375;
rgCountryCodeArray[106].szCountryName = MyLoadString( IDS_Belarus );
rgCountryCodeArray[107].dwCountryCode = 376;
rgCountryCodeArray[107].szCountryName = MyLoadString( IDS_Andorra );
rgCountryCodeArray[108].dwCountryCode = 378;
rgCountryCodeArray[108].szCountryName = MyLoadString( IDS_San_Marino );
rgCountryCodeArray[109].dwCountryCode = 379;
rgCountryCodeArray[109].szCountryName = MyLoadString( IDS_Vatican_City );
rgCountryCodeArray[110].dwCountryCode = 380;
rgCountryCodeArray[110].szCountryName = MyLoadString( IDS_Ukraine );
rgCountryCodeArray[111].dwCountryCode = 381;
rgCountryCodeArray[111].szCountryName = MyLoadString( IDS_Yugoslavia );
rgCountryCodeArray[112].dwCountryCode = 385;
rgCountryCodeArray[112].szCountryName = MyLoadString( IDS_Croatia );
rgCountryCodeArray[113].dwCountryCode = 386;
rgCountryCodeArray[113].szCountryName = MyLoadString( IDS_Slovenia );
rgCountryCodeArray[114].dwCountryCode = 387;
rgCountryCodeArray[114].szCountryName = MyLoadString( IDS_Bosnia_and_Herzegovina );
rgCountryCodeArray[115].dwCountryCode = 389;
rgCountryCodeArray[115].szCountryName = MyLoadString( IDS_Former_Yugo_Rep_of_Macedonia );
rgCountryCodeArray[116].dwCountryCode = 39;
rgCountryCodeArray[116].szCountryName = MyLoadString( IDS_Italy );
rgCountryCodeArray[117].dwCountryCode = 40;
rgCountryCodeArray[117].szCountryName = MyLoadString( IDS_Romania );
rgCountryCodeArray[118].dwCountryCode = 41;
rgCountryCodeArray[118].szCountryName = MyLoadString( IDS_Switzerland );
rgCountryCodeArray[119].dwCountryCode = 4101;
rgCountryCodeArray[119].szCountryName = MyLoadString( IDS_Liechtenstein );
rgCountryCodeArray[120].dwCountryCode = 42;
rgCountryCodeArray[120].szCountryName = MyLoadString( IDS_Czech_Republic );
rgCountryCodeArray[121].dwCountryCode = 4201;
rgCountryCodeArray[121].szCountryName = MyLoadString( IDS_Slovakia );
rgCountryCodeArray[122].dwCountryCode = 43;
rgCountryCodeArray[122].szCountryName = MyLoadString( IDS_Austria );
rgCountryCodeArray[123].dwCountryCode = 44;
rgCountryCodeArray[123].szCountryName = MyLoadString( IDS_United_Kingdom );
rgCountryCodeArray[124].dwCountryCode = 45;
rgCountryCodeArray[124].szCountryName = MyLoadString( IDS_Denmark );
rgCountryCodeArray[125].dwCountryCode = 46;
rgCountryCodeArray[125].szCountryName = MyLoadString( IDS_Sweden );
rgCountryCodeArray[126].dwCountryCode = 47;
rgCountryCodeArray[126].szCountryName = MyLoadString( IDS_Norway );
rgCountryCodeArray[127].dwCountryCode = 48;
rgCountryCodeArray[127].szCountryName = MyLoadString( IDS_Poland );
rgCountryCodeArray[128].dwCountryCode = 49;
rgCountryCodeArray[128].szCountryName = MyLoadString( IDS_Germany );
rgCountryCodeArray[129].dwCountryCode = 500;
rgCountryCodeArray[129].szCountryName = MyLoadString( IDS_Falkland_Islands );
rgCountryCodeArray[130].dwCountryCode = 501;
rgCountryCodeArray[130].szCountryName = MyLoadString( IDS_Belize );
rgCountryCodeArray[131].dwCountryCode = 502;
rgCountryCodeArray[131].szCountryName = MyLoadString( IDS_Guatemala );
rgCountryCodeArray[132].dwCountryCode = 503;
rgCountryCodeArray[132].szCountryName = MyLoadString( IDS_El_Salvador );
rgCountryCodeArray[133].dwCountryCode = 504;
rgCountryCodeArray[133].szCountryName = MyLoadString( IDS_Honduras );
rgCountryCodeArray[134].dwCountryCode = 505;
rgCountryCodeArray[134].szCountryName = MyLoadString( IDS_Nicaragua );
rgCountryCodeArray[135].dwCountryCode = 506;
rgCountryCodeArray[135].szCountryName = MyLoadString( IDS_Costa_Rica );
rgCountryCodeArray[136].dwCountryCode = 507;
rgCountryCodeArray[136].szCountryName = MyLoadString( IDS_Panama );
rgCountryCodeArray[137].dwCountryCode = 508;
rgCountryCodeArray[137].szCountryName = MyLoadString( IDS_St__Pierre_and_Miquelon );
rgCountryCodeArray[138].dwCountryCode = 509;
rgCountryCodeArray[138].szCountryName = MyLoadString( IDS_Haiti );
rgCountryCodeArray[139].dwCountryCode = 51;
rgCountryCodeArray[139].szCountryName = MyLoadString( IDS_Peru );
rgCountryCodeArray[140].dwCountryCode = 52;
rgCountryCodeArray[140].szCountryName = MyLoadString( IDS_Mexico );
rgCountryCodeArray[141].dwCountryCode = 53;
rgCountryCodeArray[141].szCountryName = MyLoadString( IDS_Cuba );
rgCountryCodeArray[142].dwCountryCode = 5399;
rgCountryCodeArray[142].szCountryName = MyLoadString( IDS_Guantanamo_Bay );
rgCountryCodeArray[143].dwCountryCode = 54;
rgCountryCodeArray[143].szCountryName = MyLoadString( IDS_Argentina );
rgCountryCodeArray[144].dwCountryCode = 55;
rgCountryCodeArray[144].szCountryName = MyLoadString( IDS_Brazil );
rgCountryCodeArray[145].dwCountryCode = 56;
rgCountryCodeArray[145].szCountryName = MyLoadString( IDS_Chile );
rgCountryCodeArray[146].dwCountryCode = 57;
rgCountryCodeArray[146].szCountryName = MyLoadString( IDS_Colombia );
rgCountryCodeArray[147].dwCountryCode = 58;
rgCountryCodeArray[147].szCountryName = MyLoadString( IDS_Venezuela );
rgCountryCodeArray[148].dwCountryCode = 590;
rgCountryCodeArray[148].szCountryName = MyLoadString( IDS_Guadeloupe );
rgCountryCodeArray[149].dwCountryCode = 5901;
rgCountryCodeArray[149].szCountryName = MyLoadString( IDS_French_Antilles );
rgCountryCodeArray[150].dwCountryCode = 591;
rgCountryCodeArray[150].szCountryName = MyLoadString( IDS_Bolivia );
rgCountryCodeArray[151].dwCountryCode = 592;
rgCountryCodeArray[151].szCountryName = MyLoadString( IDS_Guyana );
rgCountryCodeArray[152].dwCountryCode = 593;
rgCountryCodeArray[152].szCountryName = MyLoadString( IDS_Ecuador );
rgCountryCodeArray[153].dwCountryCode = 594;
rgCountryCodeArray[153].szCountryName = MyLoadString( IDS_French_Guiana );
rgCountryCodeArray[154].dwCountryCode = 595;
rgCountryCodeArray[154].szCountryName = MyLoadString( IDS_Paraguay );
rgCountryCodeArray[155].dwCountryCode = 596;
rgCountryCodeArray[155].szCountryName = MyLoadString( IDS_Martinique );
rgCountryCodeArray[156].dwCountryCode = 597;
rgCountryCodeArray[156].szCountryName = MyLoadString( IDS_Suriname );
rgCountryCodeArray[157].dwCountryCode = 598;
rgCountryCodeArray[157].szCountryName = MyLoadString( IDS_Uruguay );
rgCountryCodeArray[158].dwCountryCode = 599;
rgCountryCodeArray[158].szCountryName = MyLoadString( IDS_Netherlands_Antilles );
rgCountryCodeArray[159].dwCountryCode = 60;
rgCountryCodeArray[159].szCountryName = MyLoadString( IDS_Malaysia );
rgCountryCodeArray[160].dwCountryCode = 61;
rgCountryCodeArray[160].szCountryName = MyLoadString( IDS_Australia );
rgCountryCodeArray[161].dwCountryCode = 6101;
rgCountryCodeArray[161].szCountryName = MyLoadString( IDS_Cocos_Keeling_Islands );
rgCountryCodeArray[162].dwCountryCode = 62;
rgCountryCodeArray[162].szCountryName = MyLoadString( IDS_Indonesia );
rgCountryCodeArray[163].dwCountryCode = 63;
rgCountryCodeArray[163].szCountryName = MyLoadString( IDS_Philippines );
rgCountryCodeArray[164].dwCountryCode = 64;
rgCountryCodeArray[164].szCountryName = MyLoadString( IDS_New_Zealand );
rgCountryCodeArray[165].dwCountryCode = 65;
rgCountryCodeArray[165].szCountryName = MyLoadString( IDS_Singapore );
rgCountryCodeArray[166].dwCountryCode = 66;
rgCountryCodeArray[166].szCountryName = MyLoadString( IDS_Thailand );
rgCountryCodeArray[167].dwCountryCode = 670;
rgCountryCodeArray[167].szCountryName = MyLoadString( IDS_Saipan_Island );
rgCountryCodeArray[168].dwCountryCode = 6701;
rgCountryCodeArray[168].szCountryName = MyLoadString( IDS_Rota_Island );
rgCountryCodeArray[169].dwCountryCode = 6702;
rgCountryCodeArray[169].szCountryName = MyLoadString( IDS_Tinian_Island );
rgCountryCodeArray[170].dwCountryCode = 671;
rgCountryCodeArray[170].szCountryName = MyLoadString( IDS_Guam );
rgCountryCodeArray[171].dwCountryCode = 672;
rgCountryCodeArray[171].szCountryName = MyLoadString( IDS_Christmas_Island );
rgCountryCodeArray[172].dwCountryCode = 6721;
rgCountryCodeArray[172].szCountryName = MyLoadString( IDS_Australian_Antarctic_Territory );
rgCountryCodeArray[173].dwCountryCode = 6722;
rgCountryCodeArray[173].szCountryName = MyLoadString( IDS_Norfolk_Island );
rgCountryCodeArray[174].dwCountryCode = 673;
rgCountryCodeArray[174].szCountryName = MyLoadString( IDS_Brunei );
rgCountryCodeArray[175].dwCountryCode = 674;
rgCountryCodeArray[175].szCountryName = MyLoadString( IDS_Nauru );
rgCountryCodeArray[176].dwCountryCode = 675;
rgCountryCodeArray[176].szCountryName = MyLoadString( IDS_Papua_New_Guinea );
rgCountryCodeArray[177].dwCountryCode = 676;
rgCountryCodeArray[177].szCountryName = MyLoadString( IDS_Tonga );
rgCountryCodeArray[178].dwCountryCode = 677;
rgCountryCodeArray[178].szCountryName = MyLoadString( IDS_Solomon_Islands );
rgCountryCodeArray[179].dwCountryCode = 678;
rgCountryCodeArray[179].szCountryName = MyLoadString( IDS_Vanuatu );
rgCountryCodeArray[180].dwCountryCode = 679;
rgCountryCodeArray[180].szCountryName = MyLoadString( IDS_Fiji );
rgCountryCodeArray[181].dwCountryCode = 680;
rgCountryCodeArray[181].szCountryName = MyLoadString( IDS_Palau );
rgCountryCodeArray[182].dwCountryCode = 681;
rgCountryCodeArray[182].szCountryName = MyLoadString( IDS_Wallis_and_Futuna_Islands );
rgCountryCodeArray[183].dwCountryCode = 682;
rgCountryCodeArray[183].szCountryName = MyLoadString( IDS_Cook_Islands );
rgCountryCodeArray[184].dwCountryCode = 683;
rgCountryCodeArray[184].szCountryName = MyLoadString( IDS_Niue );
rgCountryCodeArray[185].dwCountryCode = 684;
rgCountryCodeArray[185].szCountryName = MyLoadString( IDS_American_Samoa );
rgCountryCodeArray[186].dwCountryCode = 685;
rgCountryCodeArray[186].szCountryName = MyLoadString( IDS_Samoa );
rgCountryCodeArray[187].dwCountryCode = 686;
rgCountryCodeArray[187].szCountryName = MyLoadString( IDS_Kiribati );
rgCountryCodeArray[188].dwCountryCode = 687;
rgCountryCodeArray[188].szCountryName = MyLoadString( IDS_New_Caledonia );
rgCountryCodeArray[189].dwCountryCode = 688;
rgCountryCodeArray[189].szCountryName = MyLoadString( IDS_Tuvalu );
rgCountryCodeArray[190].dwCountryCode = 689;
rgCountryCodeArray[190].szCountryName = MyLoadString( IDS_French_Polynesia );
rgCountryCodeArray[191].dwCountryCode = 690;
rgCountryCodeArray[191].szCountryName = MyLoadString( IDS_Tokelau );
rgCountryCodeArray[192].dwCountryCode = 691;
rgCountryCodeArray[192].szCountryName = MyLoadString( IDS_Micronesia__Fed_States_of );
rgCountryCodeArray[193].dwCountryCode = 692;
rgCountryCodeArray[193].szCountryName = MyLoadString( IDS_Marshall_Islands );
rgCountryCodeArray[194].dwCountryCode = 7;
rgCountryCodeArray[194].szCountryName = MyLoadString( IDS_Russia );
rgCountryCodeArray[195].dwCountryCode = 705;
rgCountryCodeArray[195].szCountryName = MyLoadString( IDS_Kazakhstan );
rgCountryCodeArray[196].dwCountryCode = 706;
rgCountryCodeArray[196].szCountryName = MyLoadString( IDS_Kyrgyzstan );
rgCountryCodeArray[197].dwCountryCode = 708;
rgCountryCodeArray[197].szCountryName = MyLoadString( IDS_Tajikistan );
rgCountryCodeArray[198].dwCountryCode = 709;
rgCountryCodeArray[198].szCountryName = MyLoadString( IDS_Turkmenistan );
rgCountryCodeArray[199].dwCountryCode = 711;
rgCountryCodeArray[199].szCountryName = MyLoadString( IDS_Uzbekistan );
rgCountryCodeArray[200].dwCountryCode = 81;
rgCountryCodeArray[200].szCountryName = MyLoadString( IDS_Japan );
rgCountryCodeArray[201].dwCountryCode = 82;
rgCountryCodeArray[201].szCountryName = MyLoadString( IDS_Korea__Republic_of );
rgCountryCodeArray[202].dwCountryCode = 84;
rgCountryCodeArray[202].szCountryName = MyLoadString( IDS_Vietnam );
rgCountryCodeArray[203].dwCountryCode = 850;
rgCountryCodeArray[203].szCountryName = MyLoadString( IDS_Korea__North_ );
rgCountryCodeArray[204].dwCountryCode = 852;
rgCountryCodeArray[204].szCountryName = MyLoadString( IDS_Hong_Kong );
rgCountryCodeArray[205].dwCountryCode = 853;
rgCountryCodeArray[205].szCountryName = MyLoadString( IDS_Macau );
rgCountryCodeArray[206].dwCountryCode = 855;
rgCountryCodeArray[206].szCountryName = MyLoadString( IDS_Cambodia );
rgCountryCodeArray[207].dwCountryCode = 856;
rgCountryCodeArray[207].szCountryName = MyLoadString( IDS_Laos );
rgCountryCodeArray[208].dwCountryCode = 86;
rgCountryCodeArray[208].szCountryName = MyLoadString( IDS_China );
rgCountryCodeArray[209].dwCountryCode = 871;
rgCountryCodeArray[209].szCountryName = MyLoadString( IDS_INMARSAT__Atlantic_East_ );
rgCountryCodeArray[210].dwCountryCode = 872;
rgCountryCodeArray[210].szCountryName = MyLoadString( IDS_INMARSAT__Pacific_ );
rgCountryCodeArray[211].dwCountryCode = 873;
rgCountryCodeArray[211].szCountryName = MyLoadString( IDS_INMARSAT__Indian_ );
rgCountryCodeArray[212].dwCountryCode = 874;
rgCountryCodeArray[212].szCountryName = MyLoadString( IDS_INMARSAT__Atlantic_West_ );
rgCountryCodeArray[213].dwCountryCode = 880;
rgCountryCodeArray[213].szCountryName = MyLoadString( IDS_Bangladesh );
rgCountryCodeArray[214].dwCountryCode = 886;
rgCountryCodeArray[214].szCountryName = MyLoadString( IDS_Taiwan );
rgCountryCodeArray[215].dwCountryCode = 90;
rgCountryCodeArray[215].szCountryName = MyLoadString( IDS_Turkey );
rgCountryCodeArray[216].dwCountryCode = 91;
rgCountryCodeArray[216].szCountryName = MyLoadString( IDS_India );
rgCountryCodeArray[217].dwCountryCode = 92;
rgCountryCodeArray[217].szCountryName = MyLoadString( IDS_Pakistan );
rgCountryCodeArray[218].dwCountryCode = 93;
rgCountryCodeArray[218].szCountryName = MyLoadString( IDS_Afghanistan );
rgCountryCodeArray[219].dwCountryCode = 94;
rgCountryCodeArray[219].szCountryName = MyLoadString( IDS_Sri_Lanka );
rgCountryCodeArray[220].dwCountryCode = 95;
rgCountryCodeArray[220].szCountryName = MyLoadString( IDS_Myanmar );
rgCountryCodeArray[221].dwCountryCode = 960;
rgCountryCodeArray[221].szCountryName = MyLoadString( IDS_Maldives );
rgCountryCodeArray[222].dwCountryCode = 961;
rgCountryCodeArray[222].szCountryName = MyLoadString( IDS_Lebanon );
rgCountryCodeArray[223].dwCountryCode = 962;
rgCountryCodeArray[223].szCountryName = MyLoadString( IDS_Jordan );
rgCountryCodeArray[224].dwCountryCode = 963;
rgCountryCodeArray[224].szCountryName = MyLoadString( IDS_Syria );
rgCountryCodeArray[225].dwCountryCode = 964;
rgCountryCodeArray[225].szCountryName = MyLoadString( IDS_Iraq );
rgCountryCodeArray[226].dwCountryCode = 965;
rgCountryCodeArray[226].szCountryName = MyLoadString( IDS_Kuwait );
rgCountryCodeArray[227].dwCountryCode = 966;
rgCountryCodeArray[227].szCountryName = MyLoadString( IDS_Saudi_Arabia );
rgCountryCodeArray[228].dwCountryCode = 967;
rgCountryCodeArray[228].szCountryName = MyLoadString( IDS_Yemen );
rgCountryCodeArray[229].dwCountryCode = 968;
rgCountryCodeArray[229].szCountryName = MyLoadString( IDS_Oman );
rgCountryCodeArray[230].dwCountryCode = 971;
rgCountryCodeArray[230].szCountryName = MyLoadString( IDS_United_Arab_Emirates );
rgCountryCodeArray[231].dwCountryCode = 972;
rgCountryCodeArray[231].szCountryName = MyLoadString( IDS_Israel );
rgCountryCodeArray[232].dwCountryCode = 973;
rgCountryCodeArray[232].szCountryName = MyLoadString( IDS_Bahrain );
rgCountryCodeArray[233].dwCountryCode = 974;
rgCountryCodeArray[233].szCountryName = MyLoadString( IDS_Qatar );
rgCountryCodeArray[234].dwCountryCode = 975;
rgCountryCodeArray[234].szCountryName = MyLoadString( IDS_Bhutan );
rgCountryCodeArray[235].dwCountryCode = 976;
rgCountryCodeArray[235].szCountryName = MyLoadString( IDS_Mongolia );
rgCountryCodeArray[236].dwCountryCode = 977;
rgCountryCodeArray[236].szCountryName = MyLoadString( IDS_Nepal );
rgCountryCodeArray[237].dwCountryCode = 98;
rgCountryCodeArray[237].szCountryName = MyLoadString( IDS_Iran );
rgCountryCodeArray[238].dwCountryCode = 994;
rgCountryCodeArray[238].szCountryName = MyLoadString( IDS_Azerbaijan );
rgCountryCodeArray[239].dwCountryCode = 995;
rgCountryCodeArray[239].szCountryName = MyLoadString( IDS_Georgia );
rgCountryCodeArray[240].dwCountryCode = 800;
rgCountryCodeArray[240].szCountryName = MyLoadString( IDS_Intl_Freephone_Service );
rgCountryCodeArray[241].dwCountryCode = 870;
rgCountryCodeArray[241].szCountryName = MyLoadString( IDS_INMARSAT );
//
// Add the don't specify setting
//
rgCountryCodeArray[242].dwCountryCode = DONTSPECIFYSETTING;
rgCountryCodeArray[242].szCountryName = StrDontSpecifySetting;
}