/*---------------------------------------------** ** Copyright (c) 1998 Microsoft Corporation ** ** All Rights reserved ** ** ** ** profiles.c ** ** ** ** Profiles dialog - TSREG ** ** 07-01-98 a-clindh Created ** **---------------------------------------------*/ #include #include #include #include "tsreg.h" #include "resource.h" PROFILE_KEY_INFO *g_pkfProfile; PROFILE_KEY_INFO *g_pkfStart; HWND g_hwndProfilesDlg; /////////////////////////////////////////////////////////////////////////////// INT_PTR CALLBACK ProfilePage(HWND hDlg, UINT nMsg, WPARAM wParam, LPARAM lParam) { static HWND hwndProfilesCBO; static HWND hwndProfilesEdit; static HKEY hKey; TCHAR lpszClientProfilePath[MAX_PATH]; TCHAR lpszBuffer[MAXKEYSIZE]; TCHAR lpszKeyName[MAXKEYSIZE]; TCHAR lpszConfirm[MAX_MESSAGE_LEN + MAXKEYSIZE]; TCHAR lpszDeleteCaption[90]; // for message box TCHAR lpszDeleteTitle[25]; // for message box TCHAR lpszSubKeyPath[MAX_PATH]; TCHAR lpszText[MAXTEXTSIZE]; ULONG lpPathLen = MAX_PATH; NMHDR *lpnmhdr; LPHELPINFO lphi; LRESULT i; int index; BOOL bContinue; lpnmhdr = (LPNMHDR) lParam; switch (nMsg) { case WM_INITDIALOG: hwndProfilesCBO = GetDlgItem(hDlg, IDC_CBO_PROFILES); hwndProfilesEdit = GetDlgItem(hDlg, IDC_EDIT_PROFILES); g_hwndProfilesDlg = hDlg; LoadKeyValues(); LoadString(g_hInst, IDS_DEFAULT, lpszText, MAXTEXTSIZE); // display 'Default' in edit cell of combo box // i = SendMessage(hwndProfilesCBO, CB_FINDSTRING, 0, (LPARAM) lpszText); SendMessage(hwndProfilesCBO, CB_SETCURSEL, i, 0); break; case WM_NOTIFY: switch (lpnmhdr->code) { case PSN_HELP: lphi = (LPHELPINFO) lParam; WinHelp(lphi->hItemHandle, g_lpszPath, HELP_CONTENTS, lphi->iCtrlId); break; } break; case WM_HELP: lphi = (LPHELPINFO) lParam; WinHelp(lphi->hItemHandle, g_lpszPath, HELP_CONTEXTPOPUP, lphi->iCtrlId); break; case WM_COMMAND: switch LOWORD (wParam) { case IDC_BTN_LOAD: GetWindowText(hwndProfilesCBO, lpszBuffer, MAXKEYSIZE); // if string is null, exit routine // if (_tcscmp(lpszBuffer, TEXT("")) == 0) { LoadString(g_hInst, IDS_PROFILE_LOAD, lpszText, MAXTEXTSIZE); MessageBox(hDlg, lpszText, NULL, MB_OK | MB_ICONEXCLAMATION); SetFocus(hwndProfilesCBO); break; } ReloadKeys(lpszBuffer, hwndProfilesCBO); SetEditCell(lpszBuffer, hwndProfilesCBO); // change window caption ResetTitle(lpszBuffer); LoadString (g_hInst, IDS_PROFILE_LOADED, lpszConfirm, sizeof(lpszConfirm)); LoadString (g_hInst, IDS_PROFILE_LOADED2, lpszText, MAXTEXTSIZE); _tcscat(lpszConfirm, lpszBuffer); _tcscat(lpszConfirm, lpszText); MessageBox(hDlg, lpszConfirm, TEXT("Profile Loaded"), MB_OK | MB_ICONEXCLAMATION); break; case IDC_BTN_SAVE: DialogBox(g_hInst, MAKEINTRESOURCE(IDD_SAVE_FORM), g_hwndProfilesDlg, SaveDialog); break; case IDC_BTN_DELETE: GetWindowText(hwndProfilesCBO, lpszBuffer, MAXKEYSIZE); if (_tcscmp(lpszBuffer, TEXT("")) == 0) { LoadString(g_hInst, IDS_PROFILE_DELETE, lpszText, MAXTEXTSIZE); MessageBox(hDlg, lpszText, NULL, MB_OK | MB_ICONEXCLAMATION); SetFocus(hwndProfilesCBO); break; } // // confirm delete // LoadString (g_hInst, IDS_DELETE_TITLE, lpszDeleteTitle, sizeof (lpszDeleteTitle)); LoadString (g_hInst, IDS_DELETE_CAPTION, lpszDeleteCaption, sizeof (lpszDeleteCaption)); i = MessageBox(hDlg, lpszDeleteCaption, lpszDeleteTitle, MB_YESNO | MB_ICONEXCLAMATION); if ( i == IDYES) { LoadString (g_hInst, IDS_PROFILE_PATH, lpszClientProfilePath, sizeof(lpszClientProfilePath)); GetWindowText(hwndProfilesCBO, lpszBuffer, MAXKEYSIZE); _tcscpy(lpszSubKeyPath, lpszClientProfilePath); _tcscat(lpszSubKeyPath, TEXT("\\")); _tcscat(lpszSubKeyPath, lpszBuffer); // // delete all subkeys first // index = 0; if (RegOpenKeyEx(HKEY_CURRENT_USER, lpszSubKeyPath, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) { do { if (RegEnumKeyEx(hKey, index, &lpszKeyName[0], &lpPathLen, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) { if (_tcscmp( lpszKeyName, TEXT("Default")) != 0) { RegDeleteKey(hKey, &lpszKeyName[0]); } bContinue = TRUE; index++; } else { bContinue = FALSE; } } while (bContinue == TRUE); RegCloseKey(hKey); } // // delete the parent key // if (_tcscmp( lpszBuffer, TEXT("Default")) == 0) { MessageBox(hDlg, TEXT("Can not delete default key."), NULL, MB_OK | MB_ICONEXCLAMATION); } else { if (RegOpenKeyEx(HKEY_CURRENT_USER, lpszClientProfilePath, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS) { RegDeleteKey(hKey, &lpszBuffer[0]); RegCloseKey(hKey); } // // remove key from list box // i = SendMessage(hwndProfilesCBO, CB_FINDSTRING, 0, (LPARAM) lpszBuffer); SendMessage(hwndProfilesCBO, CB_DELETESTRING, i, 0); // reload the data struct with default key ReloadKeys(TEXT("Default"), hwndProfilesCBO); // change window caption ResetTitle(TEXT("Default")); SetEditCell(TEXT("Default"), hwndProfilesCBO); } } else { SetEditCell(lpszBuffer, hwndProfilesCBO); SetFocus(hwndProfilesEdit); } break; } } return (FALSE); } // end of file ///////////////////////////////////////////////////////////////////////////////