//Copyright (c) 1998 - 1999 Microsoft Corporation #include "precomp.h" #include "propdlgs.h" LRW_DLG_INT CALLBACK PropModeDlgProc( IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam ) { DWORD dwRetCode = ERROR_SUCCESS; BOOL bStatus = TRUE; switch (uMsg) { case WM_INITDIALOG: { TCHAR lpBuffer[ 512]; LVFINDINFO lvFindInfo; int nItem = 0; HWND hWndComboBox = GetDlgItem(hwnd,IDC_COMBO_MODE); HWND hWndListBox = GetDlgItem(hwnd, IDC_COUNTRYREGION ); { LV_COLUMN lvColumn; TCHAR lpszHeader[ 128]; lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; lvColumn.fmt = LVCFMT_LEFT; lvColumn.cx = 250; LoadString(GetInstanceHandle(), IDS_COUNTRYREGION_HEADER, lpszHeader, sizeof(lpszHeader)/sizeof(TCHAR)); lvColumn.pszText = lpszHeader; ListView_InsertColumn(hWndListBox, 0, &lvColumn); lvColumn.pszText = _TEXT(""); lvColumn.cx = 0; ListView_InsertColumn(hWndListBox, 1, &lvColumn); } memset(lpBuffer,0,sizeof(lpBuffer)); dwRetCode = LoadString(GetInstanceHandle(), IDS_INTERNETMODE, lpBuffer, 512); ComboBox_AddString(hWndComboBox,lpBuffer); memset(lpBuffer,0,sizeof(lpBuffer)); dwRetCode = LoadString(GetInstanceHandle(), IDS_WWWMODE, lpBuffer, 512); ComboBox_AddString(hWndComboBox,lpBuffer); memset(lpBuffer,0,sizeof(lpBuffer)); dwRetCode = LoadString(GetInstanceHandle(), IDS_TELEPHONEMODE, lpBuffer, 512); ComboBox_AddString(hWndComboBox,lpBuffer); // // Set the Current Activation Method // GetGlobalContext()->SetLSProp_ActivationMethod(GetGlobalContext()->GetActivationMethod()); ListView_DeleteAllItems(GetDlgItem(hwnd, IDC_COUNTRYREGION)); if(GetGlobalContext()->GetActivationMethod() == CONNECTION_INTERNET || GetGlobalContext()->GetActivationMethod() == CONNECTION_DEFAULT) { ComboBox_SetCurSel(hWndComboBox, 0); EnableWindow(GetDlgItem(hwnd,IDC_LBL_COUNTRYREGION),FALSE); EnableWindow(GetDlgItem(hwnd, IDC_COUNTRYREGION),FALSE); } if(GetGlobalContext()->GetActivationMethod() == CONNECTION_WWW ) { ComboBox_SetCurSel(hWndComboBox, 1); EnableWindow(GetDlgItem(hwnd,IDC_LBL_COUNTRYREGION),FALSE); EnableWindow(GetDlgItem(hwnd, IDC_COUNTRYREGION),FALSE); } if(GetGlobalContext()->GetActivationMethod() == CONNECTION_PHONE ) { ComboBox_SetCurSel(hWndComboBox, 2); EnableWindow(GetDlgItem(hwnd,IDC_LBL_COUNTRYREGION),TRUE); EnableWindow(hWndListBox,TRUE); dwRetCode = PopulateCountryRegionComboBox(hWndListBox); if (dwRetCode != ERROR_SUCCESS) { LRMessageBox(hwnd, dwRetCode, LRGetLastError()); } memset(&lvFindInfo,0,sizeof(lvFindInfo)); lvFindInfo.flags = LVFI_STRING; lvFindInfo.psz = GetGlobalContext()->GetContactDataObject()->sCSRPhoneRegion; nItem = ListView_FindItem(hWndListBox,-1,&lvFindInfo); ListView_SetItemState(hWndListBox,nItem,LVIS_SELECTED,LVIS_SELECTED); ListView_SetSelectionMark(hWndListBox,nItem); ListView_SetSelectionMark(hWndListBox,nItem); } } break; case WM_COMMAND: if(HIWORD(wParam) == CBN_SELCHANGE && LOWORD(wParam) == IDC_COMBO_MODE) { LVFINDINFO lvFindInfo; int nItem = 0; HWND hWndListBox = GetDlgItem(hwnd, IDC_COUNTRYREGION ); HWND hWndComboBox = GetDlgItem(hwnd,IDC_COMBO_MODE); SetReFresh(1); dwRetCode = ComboBox_GetCurSel((HWND)lParam); ListView_DeleteAllItems(hWndListBox); //Enable Country/Region List Box in case of Telephone if(dwRetCode == 2) { EnableWindow(GetDlgItem(hwnd,IDC_LBL_COUNTRYREGION),TRUE); EnableWindow(hWndListBox,TRUE); GetGlobalContext()->SetLSProp_ActivationMethod(CONNECTION_PHONE); dwRetCode = PopulateCountryRegionComboBox(hWndListBox); if (dwRetCode != ERROR_SUCCESS) { LRMessageBox(hwnd, dwRetCode, LRGetLastError()); } memset(&lvFindInfo,0,sizeof(lvFindInfo)); lvFindInfo.flags = LVFI_STRING; lvFindInfo.psz = GetGlobalContext()->GetContactDataObject()->sCSRPhoneRegion; nItem = ListView_FindItem(hWndListBox,-1,&lvFindInfo); ListView_SetItemState(hWndListBox,nItem,LVIS_SELECTED,LVIS_SELECTED); ListView_SetSelectionMark(hWndListBox,nItem); ListView_SetSelectionMark(hWndListBox,nItem); } else { if(dwRetCode == 0) // Internet { GetGlobalContext()->SetLSProp_ActivationMethod(CONNECTION_INTERNET); } else { GetGlobalContext()->SetLSProp_ActivationMethod(CONNECTION_WWW); } EnableWindow(GetDlgItem(hwnd,IDC_LBL_COUNTRYREGION),FALSE); EnableWindow(hWndListBox,FALSE); } } break; case WM_DESTROY: LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, NULL ); break; case WM_NOTIFY: { LPNMHDR pnmh = (LPNMHDR)lParam; switch( pnmh->code ) { case PSN_SETACTIVE: break; case PSN_APPLY: { HWND hWndComboBox = GetDlgItem(hwnd,IDC_COMBO_MODE); HWND hWndListBox = GetDlgItem(hwnd, IDC_COUNTRYREGION ); long lReturnStatus = PSNRET_NOERROR; TCHAR szItemText[255]; int nItem = 0; dwRetCode = ComboBox_GetCurSel(hWndComboBox); assert(dwRetCode >= 0 && dwRetCode <= 2); //Internet if(dwRetCode == 0) { GetGlobalContext()->SetActivationMethod(CONNECTION_INTERNET); } // WWW if(dwRetCode == 1) { GetGlobalContext()->SetActivationMethod(CONNECTION_WWW); } // Phone if(dwRetCode == 2) { TCHAR lpVal[ 128]; GetGlobalContext()->SetActivationMethod(CONNECTION_PHONE); nItem = ListView_GetSelectionMark(hWndListBox); if(nItem == -1) { LRMessageBox(hwnd, IDS_ERR_NOCOUNTRYSELECTED, 0); lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE; goto done; } ListView_GetItemText(hWndListBox,nItem,0,szItemText,sizeof(szItemText)/sizeof(TCHAR)); GetGlobalContext()->SetInRegistery(REG_LRWIZ_CSPHONEREGION,szItemText); LVITEM lvItem; lvItem.mask = LVIF_TEXT; lvItem.iItem = nItem; lvItem.iSubItem = 1; lvItem.pszText = lpVal; lvItem.cchTextMax = 128; ListView_GetItem(hWndListBox, &lvItem); GetGlobalContext()->SetCSRNumber(lpVal); } done: if(lReturnStatus != PSNRET_NOERROR) PropSheet_SetCurSel(GetParent(hwnd),NULL,PG_NDX_PROP_MODE); LRW_SETWINDOWLONG(hwnd, LRW_DWL_MSGRESULT, lReturnStatus); } break; default: bStatus = FALSE; break; } } break; default: bStatus = FALSE; break; } return bStatus; } LRW_DLG_INT CALLBACK PropProgramDlgProc( IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam ) { BOOL bStatus = TRUE; static BOOL bIsFirstTime = TRUE ; //Ignore the first click in the radio buttons (solve Bug #439) static int iSelectedOption = IDC_RD_REG_SELECT; switch (uMsg) { case WM_INITDIALOG: { TCHAR szBuffer[ 1024]; bIsFirstTime = TRUE ; if(GetGlobalContext()->GetContactDataObject()->sProgramName == PROGRAM_SELECT) { SendDlgItemMessage(hwnd,IDC_RD_REG_SELECT,BM_SETCHECK,(WPARAM)BST_CHECKED,(LPARAM)0); LoadString(GetInstanceHandle(), IDS_SELECT_DESCRIPTION, szBuffer, sizeof(szBuffer)/sizeof(TCHAR)); SendDlgItemMessage(hwnd, IDC_DESCRIPTION, WM_SETTEXT,(WPARAM)0, (LPARAM)(LPCTSTR)szBuffer); SetFocus(GetDlgItem(hwnd, IDC_RD_REG_SELECT)); iSelectedOption = IDC_RD_REG_SELECT; } else if(GetGlobalContext()->GetContactDataObject()->sProgramName == PROGRAM_MOLP) { SendDlgItemMessage(hwnd,IDC_RD_REG_MOLP,BM_SETCHECK,(WPARAM)BST_CHECKED,(LPARAM)0); LoadString(GetInstanceHandle(), IDS_OPEN_DESCRIPTION, szBuffer, sizeof(szBuffer)/sizeof(TCHAR)); SendDlgItemMessage(hwnd, IDC_DESCRIPTION, WM_SETTEXT,(WPARAM)0, (LPARAM)(LPCTSTR)szBuffer); SetFocus(GetDlgItem(hwnd, IDC_RD_REG_MOLP)); iSelectedOption = IDC_RD_REG_MOLP; } else if(GetGlobalContext()->GetContactDataObject()->sProgramName == PROGRAM_RETAIL) { SendDlgItemMessage(hwnd,IDC_RD_REG_OTHER,BM_SETCHECK,(WPARAM)BST_CHECKED,(LPARAM)0); LoadString(GetInstanceHandle(), IDS_OTHER_DESCRIPTION, szBuffer, sizeof(szBuffer)/sizeof(TCHAR)); SendDlgItemMessage(hwnd, IDC_DESCRIPTION, WM_SETTEXT,(WPARAM)0, (LPARAM)(LPCTSTR)szBuffer); SetFocus(GetDlgItem(hwnd, IDC_RD_REG_OTHER)); iSelectedOption = IDC_RD_REG_OTHER; } else //By default Check the first RADIO button. { SendDlgItemMessage(hwnd,IDC_RD_REG_SELECT,BM_SETCHECK,(WPARAM)BST_CHECKED,(LPARAM)0); LoadString(GetInstanceHandle(), IDS_SELECT_DESCRIPTION, szBuffer, sizeof(szBuffer)/sizeof(TCHAR)); SendDlgItemMessage(hwnd, IDC_DESCRIPTION, WM_SETTEXT,(WPARAM)0, (LPARAM)(LPCTSTR)szBuffer); SetFocus(GetDlgItem(hwnd, IDC_RD_REG_SELECT)); iSelectedOption = IDC_RD_REG_SELECT; } } break; case WM_DESTROY: LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, NULL ); break; case WM_COMMAND: if (HIWORD(wParam) == BN_CLICKED) { TCHAR szBuffer[ 1024]; switch ( LOWORD(wParam) ) //from which control { case IDC_RD_REG_SELECT: if (bIsFirstTime == TRUE){ //Ignore the first click (solve Bug #439) SetFocus(GetDlgItem(hwnd, iSelectedOption)); } else { LoadString(GetInstanceHandle(), IDS_SELECT_DESCRIPTION, szBuffer, sizeof(szBuffer)/sizeof(TCHAR)); SendDlgItemMessage(hwnd, IDC_DESCRIPTION, WM_SETTEXT,(WPARAM)0, (LPARAM)(LPCTSTR)szBuffer); } break; case IDC_RD_REG_MOLP: LoadString(GetInstanceHandle(), IDS_OPEN_DESCRIPTION, szBuffer, sizeof(szBuffer)/sizeof(TCHAR)); SendDlgItemMessage(hwnd, IDC_DESCRIPTION, WM_SETTEXT,(WPARAM)0, (LPARAM)(LPCTSTR)szBuffer); break; case IDC_RD_REG_OTHER: LoadString(GetInstanceHandle(), IDS_OTHER_DESCRIPTION, szBuffer, sizeof(szBuffer)/sizeof(TCHAR)); SendDlgItemMessage(hwnd, IDC_DESCRIPTION, WM_SETTEXT,(WPARAM)0, (LPARAM)(LPCTSTR)szBuffer); break; } bIsFirstTime = FALSE ; } break; case WM_NOTIFY: { LPNMHDR pnmh = (LPNMHDR)lParam; switch( pnmh->code ) { case PSN_SETACTIVE: break; case PSN_APPLY: { if(SendDlgItemMessage(hwnd,IDC_RD_REG_SELECT,BM_GETCHECK,(WPARAM)0,(LPARAM)0) == BST_CHECKED) { GetGlobalContext()->SetInRegistery(szOID_BUSINESS_CATEGORY,PROGRAM_SELECT); //GetGlobalContext()->SetEncodedInRegistry(szOID_BUSINESS_CATEGORY,PROGRAM_SELECT); } else if (SendDlgItemMessage(hwnd,IDC_RD_REG_MOLP,BM_GETCHECK,(WPARAM)0,(LPARAM)0) == BST_CHECKED) { GetGlobalContext()->SetInRegistery(szOID_BUSINESS_CATEGORY,PROGRAM_MOLP); } else { GetGlobalContext()->SetInRegistery(szOID_BUSINESS_CATEGORY,PROGRAM_RETAIL); } } break; default: bStatus = FALSE; break; } } break; default: bStatus = FALSE; break; } return bStatus; } LRW_DLG_INT CALLBACK PropCustInfoADlgProc( IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam ) { BOOL bStatus = TRUE; switch (uMsg) { case WM_INITDIALOG: SendDlgItemMessage (hwnd , IDC_TXT_COMPANYNAME, EM_SETLIMITTEXT, CA_COMPANY_NAME_LEN,0); SendDlgItemMessage (hwnd , IDC_TXT_ORGUNIT , EM_SETLIMITTEXT, CA_ORG_UNIT_LEN,0); SendDlgItemMessage (hwnd , IDC_TXT_LNAME, EM_SETLIMITTEXT, CA_NAME_LEN,0); SendDlgItemMessage (hwnd , IDC_TXT_FNAME, EM_SETLIMITTEXT, CA_NAME_LEN,0); SendDlgItemMessage (hwnd , IDC_TXT_PHONE, EM_SETLIMITTEXT, CA_PHONE_LEN,0); SendDlgItemMessage (hwnd , IDC_TXT_EMAIL, EM_SETLIMITTEXT, CA_EMAIL_LEN,0); SendDlgItemMessage (hwnd , IDC_TXT_FAX, EM_SETLIMITTEXT, CA_FAX_LEN,0); // //Populate the values which were read from the Registry during Global Init // // //Populate the values which were read from the Registry during Global Init // SetDlgItemText(hwnd,IDC_TXT_LNAME, GetGlobalContext()->GetContactDataObject()->sContactLName); SetDlgItemText(hwnd,IDC_TXT_FNAME, GetGlobalContext()->GetContactDataObject()->sContactFName); SetDlgItemText(hwnd,IDC_TXT_PHONE, GetGlobalContext()->GetContactDataObject()->sContactPhone); SetDlgItemText(hwnd,IDC_TXT_FAX, GetGlobalContext()->GetContactDataObject()->sContactFax); SetDlgItemText(hwnd,IDC_TXT_EMAIL, GetGlobalContext()->GetContactDataObject()->sContactEmail); SetDlgItemText(hwnd,IDC_TXT_COMPANYNAME, GetGlobalContext()->GetContactDataObject()->sCompanyName); SetDlgItemText(hwnd,IDC_TXT_ORGUNIT, GetGlobalContext()->GetContactDataObject()->sOrgUnit); break; case WM_DESTROY: LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, NULL ); break; case WM_NOTIFY: { LPNMHDR pnmh = (LPNMHDR)lParam; switch( pnmh->code ) { case PSN_SETACTIVE: { TCHAR szBuf[ 255]; LoadString(GetInstanceHandle(),IDS_FAXOPTION_LABEL,szBuf,sizeof(szBuf)/sizeof(TCHAR)); SetDlgItemText(hwnd, IDC_LBL_FAX, szBuf); if (GetGlobalContext()->GetLSProp_ActivationMethod() == CONNECTION_INTERNET) { LoadString(GetInstanceHandle(),IDS_EMAIL_LABEL,szBuf,sizeof(szBuf)/sizeof(TCHAR)); } else { LoadString(GetInstanceHandle(),IDS_EMAILOPTION_LABEL,szBuf,sizeof(szBuf)/sizeof(TCHAR)); } SetDlgItemText(hwnd, IDC_LBL_EMAIL, szBuf); } break; case PSN_APPLY: { CString sCompanyName; CString sOrgUnit; CString sLastName; CString sFirstName; CString sPhone; CString sFax; CString sEmail; LPTSTR lpVal = NULL; long lReturnStatus = PSNRET_NOERROR; //Read all the fields lpVal = sCompanyName.GetBuffer(CA_COMPANY_NAME_LEN+1); GetDlgItemText(hwnd,IDC_TXT_COMPANYNAME,lpVal,CA_COMPANY_NAME_LEN+1); sCompanyName.ReleaseBuffer(-1); lpVal = sOrgUnit.GetBuffer(CA_ORG_UNIT_LEN+1); GetDlgItemText(hwnd,IDC_TXT_ORGUNIT,lpVal,CA_ORG_UNIT_LEN+1); sOrgUnit.ReleaseBuffer(-1); lpVal = sLastName.GetBuffer(CA_NAME_LEN+1); GetDlgItemText(hwnd,IDC_TXT_LNAME,lpVal,CA_NAME_LEN+1); sLastName.ReleaseBuffer(-1); lpVal = sFirstName.GetBuffer(CA_NAME_LEN+1); GetDlgItemText(hwnd,IDC_TXT_FNAME,lpVal,CA_NAME_LEN+1); sFirstName.ReleaseBuffer(-1); lpVal = sPhone.GetBuffer(CA_PHONE_LEN+1); GetDlgItemText(hwnd,IDC_TXT_PHONE,lpVal,CA_PHONE_LEN+1); sPhone.ReleaseBuffer(-1); lpVal = sFax.GetBuffer(CA_FAX_LEN+1); GetDlgItemText(hwnd,IDC_TXT_FAX,lpVal,CA_FAX_LEN+1); sFax.ReleaseBuffer(-1); lpVal = sEmail.GetBuffer(CA_EMAIL_LEN+1); GetDlgItemText(hwnd,IDC_TXT_EMAIL,lpVal,CA_EMAIL_LEN+1); sEmail.ReleaseBuffer(-1); sFirstName.TrimLeft(); sFirstName.TrimRight(); sLastName.TrimLeft(); sLastName.TrimRight(); sPhone.TrimLeft(); sPhone.TrimRight(); sFax.TrimLeft(); sFax.TrimRight(); sEmail.TrimLeft(); sEmail.TrimRight(); sCompanyName.TrimLeft(); sCompanyName.TrimRight(); sOrgUnit.TrimLeft(); sOrgUnit.TrimRight(); if(sLastName.IsEmpty() || sFirstName.IsEmpty() || sCompanyName.IsEmpty() || (sEmail.IsEmpty() && GetGlobalContext()->GetLSProp_ActivationMethod() == CONNECTION_INTERNET)) { LRMessageBox(hwnd,IDS_ERR_FIELD_EMPTY); lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE; goto done; } // // Check for the Invalid Characters // if( !ValidateLRString(sFirstName) || !ValidateLRString(sLastName) || !ValidateLRString(sPhone) || !ValidateLRString(sEmail) || !ValidateLRString(sFax) ) { LRMessageBox(hwnd,IDS_ERR_INVALID_CHAR); lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE; goto done; } // // Validate email address if not empty // if(!sEmail.IsEmpty()) { if(!ValidateEmailId(sEmail)) { LRMessageBox(hwnd,IDS_ERR_INVALID_EMAIL); lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE; goto done; } } // Put into regsitery too GetGlobalContext()->SetInRegistery(szOID_RSA_emailAddr, (LPCTSTR) sEmail); GetGlobalContext()->SetInRegistery(szOID_COMMON_NAME, sFirstName); GetGlobalContext()->SetInRegistery(szOID_SUR_NAME, sLastName); GetGlobalContext()->SetInRegistery(szOID_TELEPHONE_NUMBER, sPhone); GetGlobalContext()->SetInRegistery(szOID_FACSIMILE_TELEPHONE_NUMBER, sFax); GetGlobalContext()->SetInRegistery(szOID_ORGANIZATION_NAME, sCompanyName); GetGlobalContext()->SetInRegistery(szOID_ORGANIZATIONAL_UNIT_NAME, sOrgUnit); done: if(lReturnStatus != PSNRET_NOERROR) PropSheet_SetCurSel(GetParent(hwnd),NULL,PG_NDX_PROP_CUSTINFO_a); LRW_SETWINDOWLONG(hwnd, LRW_DWL_MSGRESULT, lReturnStatus); } break; default: bStatus = FALSE; break; } } break; default: bStatus = FALSE; break; } return bStatus; } LRW_DLG_INT CALLBACK PropCustInfoBDlgProc( IN HWND hwnd, IN UINT uMsg, IN WPARAM wParam, IN LPARAM lParam ) { BOOL bStatus = TRUE; CString sCountryDesc; switch (uMsg) { case WM_INITDIALOG: SendDlgItemMessage (hwnd , IDC_TXT_ADDRESS1, EM_SETLIMITTEXT, CA_ADDRESS_LEN,0); SendDlgItemMessage (hwnd , IDC_TXT_CITY, EM_SETLIMITTEXT, CA_CITY_LEN,0); SendDlgItemMessage (hwnd , IDC_TXT_STATE, EM_SETLIMITTEXT, CA_STATE_LEN,0); SendDlgItemMessage (hwnd , IDC_TXT_ZIP, EM_SETLIMITTEXT, CA_ZIP_LEN,0); PopulateCountryComboBox(GetDlgItem(hwnd,IDC_COMBO1)); // //Populate the values which were read from the Registry during Global Init // SetDlgItemText(hwnd,IDC_TXT_ADDRESS1, GetGlobalContext()->GetContactDataObject()->sContactAddress); SetDlgItemText(hwnd,IDC_TXT_CITY , GetGlobalContext()->GetContactDataObject()->sCity); SetDlgItemText(hwnd,IDC_TXT_STATE , GetGlobalContext()->GetContactDataObject()->sState); SetDlgItemText(hwnd,IDC_TXT_ZIP , GetGlobalContext()->GetContactDataObject()->sZip); GetCountryDesc( GetGlobalContext()->GetContactDataObject()->sCountryCode, sCountryDesc.GetBuffer(LR_COUNTRY_DESC_LEN+1)); sCountryDesc.ReleaseBuffer(); ComboBox_SetCurSel( GetDlgItem(hwnd,IDC_COMBO1), ComboBox_FindStringExact( GetDlgItem(hwnd,IDC_COMBO1), 0, (LPCTSTR)sCountryDesc)); break; case WM_DESTROY: LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, NULL ); break; case WM_NOTIFY: { LPNMHDR pnmh = (LPNMHDR)lParam; switch( pnmh->code ) { case PSN_SETACTIVE: break; case PSN_APPLY: { LPTSTR lpVal = NULL; CString sAddress1; CString sCity; CString sState; CString sZip; CString sCountryDesc; CString sCountryCode; int nCurSel = -1; long lReturnStatus = PSNRET_NOERROR; // //Read all the fields // lpVal = sAddress1.GetBuffer(CA_ADDRESS_LEN+1); GetDlgItemText(hwnd,IDC_TXT_ADDRESS1,lpVal,CA_ADDRESS_LEN+1); sAddress1.ReleaseBuffer(-1); lpVal = sCity.GetBuffer(CA_CITY_LEN+1); GetDlgItemText(hwnd,IDC_TXT_CITY,lpVal,CA_CITY_LEN+1); sCity.ReleaseBuffer(-1); lpVal = sState.GetBuffer(CA_STATE_LEN+1); GetDlgItemText(hwnd,IDC_TXT_STATE,lpVal,CA_STATE_LEN+1); sState.ReleaseBuffer(-1); lpVal = sZip.GetBuffer(CA_ZIP_LEN+1); GetDlgItemText(hwnd,IDC_TXT_ZIP,lpVal,CA_ZIP_LEN+1); sZip.ReleaseBuffer(-1); nCurSel = ComboBox_GetCurSel(GetDlgItem(hwnd,IDC_COMBO1)); lpVal = sCountryDesc.GetBuffer(LR_COUNTRY_DESC_LEN+1); ComboBox_GetLBText(GetDlgItem(hwnd,IDC_COMBO1), nCurSel, lpVal); sCountryDesc.ReleaseBuffer(-1); sAddress1.TrimLeft(); sAddress1.TrimRight(); sCity.TrimLeft(); sCity.TrimRight(); sState.TrimLeft(); sState.TrimRight(); sZip.TrimLeft(); sZip.TrimRight(); sCountryDesc.TrimLeft();sCountryDesc.TrimRight(); if( !ValidateLRString(sAddress1) || !ValidateLRString(sCity) || !ValidateLRString(sState) || !ValidateLRString(sZip) || !ValidateLRString(sCountryDesc) ) { LRMessageBox(hwnd,IDS_ERR_INVALID_CHAR); lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE; goto done; } if (sCountryDesc.IsEmpty()) { LRMessageBox(hwnd,IDS_ERR_FIELD_EMPTY); lReturnStatus = PSNRET_INVALID_NOCHANGEPAGE; goto done; } lpVal = sCountryCode.GetBuffer(LR_COUNTRY_CODE_LEN+1); GetCountryCode(sCountryDesc,lpVal); sCountryCode.ReleaseBuffer(-1); GetGlobalContext()->SetInRegistery(szOID_LOCALITY_NAME, sCity); GetGlobalContext()->SetInRegistery(szOID_COUNTRY_NAME, sCountryDesc); GetGlobalContext()->SetInRegistery(szOID_DESCRIPTION, sCountryCode); GetGlobalContext()->SetInRegistery(szOID_STREET_ADDRESS, sAddress1); GetGlobalContext()->SetInRegistery(szOID_POSTAL_CODE, sZip); GetGlobalContext()->SetInRegistery(szOID_STATE_OR_PROVINCE_NAME, sState); done: if(lReturnStatus != PSNRET_NOERROR) PropSheet_SetCurSel(GetParent(hwnd),NULL,PG_NDX_PROP_CUSTINFO_b); LRW_SETWINDOWLONG(hwnd, LRW_DWL_MSGRESULT, lReturnStatus); } break; default: bStatus = FALSE; break; } } break; default: bStatus = FALSE; break; } return bStatus; }