/* File: D:\WACKER\tdll\property.c (Created: 19-Jan-1994) * * Copyright 1994 by Hilgraeve Inc. -- Monroe, MI * All rights reserved * * $Revision: 4 $ * $Date: 7/08/02 6:46p $ */ #include #pragma hdrstop #include #include #include #include #include "stdtyp.h" #include "mc.h" #include "misc.h" #include "globals.h" #include "session.h" #include "load_res.h" #include "htchar.h" #include #include #include #include "cnct.h" #include #include #include "property.h" #include "statusbr.h" #include "tdll.h" /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * FUNCTION: * DoInternalProperties * * DESCRIPTION: * Display the property sheet as seen from within an open session, i.e., the * general tab is not a part of it. * * PARAMETERS: * hSession - the session handle. * hwnd - window handle. * * RETURNS: * Nothing. */ void DoInternalProperties(HSESSION hSession, HWND hwnd) { TCHAR achName[256]; PROPSHEETHEADER stH; HPROPSHEETPAGE hP[2]; PROPSHEETPAGE stP; hP[0] = hP[1] = (HPROPSHEETPAGE)0; memset(&stP, 0, sizeof(stP)); stP.dwSize = sizeof(PROPSHEETPAGE); stP.dwFlags = 0; stP.hInstance = glblQueryDllHinst(); stP.pszTemplate = MAKEINTRESOURCE(IDD_TAB_PHONENUMBER); stP.pfnDlgProc = NewPhoneDlg; stP.lParam = (LPARAM)hSession; stP.pfnCallback = 0; hP[0] = CreatePropertySheetPage(&stP); stP.dwSize = sizeof(PROPSHEETPAGE); stP.dwFlags = 0; stP.hInstance = glblQueryDllHinst(); stP.pszTemplate = MAKEINTRESOURCE(IDD_TAB_TERMINAL); stP.pfnDlgProc = TerminalTabDlg; stP.lParam = (LPARAM)hSession; stP.pfnCallback = 0; hP[1] = CreatePropertySheetPage(&stP); sessQueryName(hSession, achName, sizeof(achName)); memset(&stH, 0, sizeof(stH)); stH.dwSize = sizeof(PROPSHEETHEADER); stH.hwndParent = hwnd; stH.hInstance = glblQueryDllHinst(); stH.pszCaption = achName; stH.nPages = 2; stH.nStartPage = 0; stH.phpage = hP; stH.dwFlags = PSH_PROPTITLE | PSH_NOAPPLYNOW; PropertySheet(&stH); } /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= * FUNCTION: * propUpdateTitle * * DESCRIPTION: * When the user changes the name of the session we need to reflect the change * in the property sheet title. Right now it uses "Property sheet for ". * in the english version. Since there appears to be no way to dynamically * change property sheet's title, we implemented this function. We avoid * placing any part of the title in the resource file to prevent problems with * international versions, order of words, etc. and most importantly possible * discrepancy with the title string used by Microsoft in the property sheet. * Instead we read the current title, match on the old session name and replace * it with the new session name. * * PARAMETERS: * hSession - the session handle. * hDlg - handle of the property sheet tab dialog. * pachOldName - pointer to the old session name. * * RETURNS: * Nothing. */ void propUpdateTitle(HSESSION hSession, HWND hDlg, LPTSTR pachOldName) { HWND hwnd = GetParent(hDlg); TCHAR acTitle[256], acName[256], acNewTitle[256]; LPTSTR pszStr, pszStr2; GetWindowText(hwnd, acTitle, sizeof(acTitle)); sessQueryName(hSession, acName, sizeof(acName)); if (acName[0] != TEXT('\0')) { TCHAR_Fill(acNewTitle, TEXT('\0'), sizeof(acNewTitle) / sizeof(TCHAR)); // TODO: What if the session name matches title text, eg. // "Properties for properties"? // Also, looks like I will have to write my own strstr() but // let's wait and see what Mircorsoft will tell us... // // if ((pszStr = (LPTSTR)strstr(acTitle, pachOldName)) != NULL) if ((pszStr = StrCharStrStr(acTitle, pachOldName)) != NULL) { for (pszStr2 = pszStr; *pszStr2 || *pachOldName != TEXT('\0'); pszStr2 = StrCharNext(pszStr2), pachOldName = StrCharNext(pachOldName)) { continue; } *pszStr = TEXT('\0'); StrCharCopyN(acNewTitle, acTitle, sizeof(acNewTitle) / sizeof(TCHAR) ); StrCharCat(acNewTitle, acName); StrCharCat(acNewTitle, pszStr2); } SetWindowText(hwnd, acNewTitle); } }