//--------------------------------------------------- // Global Functions //--------------------------------------------------- BOOL CALLBACK ConfigProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: { // set dialog box title char *tmp = PluginManager::Get()->GetPluginInterface()->description; SendMessage(hwndDlg, WM_SETTEXT, 0, (LPARAM)(LPCSTR)tmp); // enable stop and start buttons if(Server::Get()->IsRunning()) DialogEnable(hwndDlg, IDC_START, FALSE); else DialogEnable(hwndDlg, IDC_STOP, FALSE); // init the tree view control HWND hwndTreeView = GetDlgItem(hwndDlg, IDC_TREE); for(int i=0; i< sizeof(gTabItems)/sizeof(gTabItems[0]); i++) { TabItem *titem = &gTabItems[i]; TVINSERTSTRUCT tvitem; tvitem.hParent = NULL; tvitem.hInsertAfter = TVI_LAST; tvitem.item.mask = TVIF_TEXT|TVIF_PARAM; tvitem.item.pszText = titem->pTitle; tvitem.item.cchTextMax = strlen(titem->pTitle); tvitem.item.lParam = (LPARAM)titem; TreeView_InsertItem(hwndTreeView, &tvitem); } return TRUE; } case WM_APP_SERIALIZE: { TabItem *titem = GetDialogTab(hwndDlg); // save the state of the current tab dialog SendMessage(titem->hWnd, WM_APP_SERIALIZE, 0, 0); ConfigDialog::Get()->Serialize(); break; } // WM_APP_SERIALIZE case WM_APP_REFRESH: { if(Server::Get()->IsRunning()) { DialogEnable(hwndDlg, IDC_START, FALSE); DialogEnable(hwndDlg, IDC_STOP, TRUE); } else { DialogEnable(hwndDlg, IDC_START, TRUE); DialogEnable(hwndDlg, IDC_STOP, FALSE); } break; } // WM_APP_REFRESH case WM_COMMAND: { switch(LOWORD(wParam)) { case IDOK: { SendMessage(hwndDlg, WM_APP_SERIALIZE, 0, 0); #ifndef _DEBUG EndDialog(hwndDlg, LOWORD(wParam)); #endif return TRUE; } case IDCANCEL: { EndDialog(hwndDlg, LOWORD(wParam)); return TRUE; } case IDC_START: { if(!Server::Get()->IsRunning()) { DialogEnable(hwndDlg, IDC_START, FALSE); DialogEnable(hwndDlg, IDC_STOP, TRUE); Server::Get()->Start(); } break; } case IDC_STOP: { if(Server::Get()->IsRunning()) { DialogEnable(hwndDlg, IDC_START, TRUE); DialogEnable(hwndDlg, IDC_STOP, FALSE); Server::Get()->Stop(); } break; } } break; } case WM_NOTIFY: { switch(((LPNMHDR)lParam)->code) { case TVN_SELCHANGING: { break; } case TVN_SELCHANGED: { LPNMTREEVIEW pNMTREEVIEW = (LPNMTREEVIEW)lParam; TabItem *titemold = (TabItem *)pNMTREEVIEW->itemOld.lParam; TabItem *titemnew = (TabItem *)pNMTREEVIEW->itemNew.lParam; if (!titemnew) break; if (titemold) DestroyDialogTab(titemold); if (titemnew) SetDialogTab(hwndDlg, titemnew); break; } } break; } // WM_NOTIFY case WM_HELP: { LPHELPINFO pHelpInfo = (LPHELPINFO)lParam; HH_POPUP popup; memset(&popup, 0, sizeof(popup)); popup.cbStruct = sizeof(popup); popup.hinst = ghInstance; popup.idString = pHelpInfo->iCtrlId; popup.pt.x = pHelpInfo->MousePos.x; popup.pt.y = pHelpInfo->MousePos.y; popup.clrBackground = -1; popup.clrForeground = -1; popup.rcMargins.bottom = -1; popup.rcMargins.left = -1; popup.rcMargins.right = -1; popup.rcMargins.top = -1; HtmlHelp((HWND)pHelpInfo->hItemHandle, NULL, HH_DISPLAY_TEXT_POPUP, (DWORD)(LPVOID)&popup); break; } } return FALSE; }
BOOL FAR PASCAL GraphOptionDlg(HWND hDlg, WORD msg, DWORD wParam, LONG lParam) /***************************************************************************/ { static GRAPH_OPTIONS goLocalCopy ; INT iTimeMilliseconds ; TCHAR szBuff[MiscTextLen] ; PGRAPHSTRUCT lgraph; lParam ; lgraph = pGraphs; switch(msg) { case WM_INITDIALOG: dwCurrentDlgID = HC_PM_idDlgOptionChart ; // Init the Radio button, Check boxes and text fields. goLocalCopy.iGraphOrHistogram = lgraph->gOptions.iGraphOrHistogram ; if (lgraph->gOptions.iGraphOrHistogram == LINE_GRAPH) CheckRadioButton(hDlg, ID_GRAPH, ID_HISTOGRAM, ID_GRAPH) ; else CheckRadioButton(hDlg, ID_GRAPH, ID_HISTOGRAM, ID_HISTOGRAM) ; CheckDlgButton(hDlg, ID_LEGEND, lgraph->gOptions.bLegendChecked) ; if (!(lgraph->gOptions.bLegendChecked)) { // can't display valuebar w/o legend DialogEnable (hDlg, IDD_CHARTOPTIONSVALUEBAR, FALSE) ; } CheckDlgButton(hDlg, ID_LABELS, lgraph->gOptions.bLabelsChecked) ; CheckDlgButton(hDlg, ID_VERT_GRID, lgraph->gOptions.bVertGridChecked) ; CheckDlgButton(hDlg, ID_HORZ_GRID, lgraph->gOptions.bHorzGridChecked) ; CheckDlgButton(hDlg, IDD_CHARTOPTIONSVALUEBAR, lgraph->gOptions.bStatusBarChecked) ; TSPRINTF(szBuff, TEXT("%d"), lgraph->gOptions.iVertMax) ; SendDlgItemMessage(hDlg, ID_VERT_MAX, WM_SETTEXT, 0, (LONG) szBuff) ; TSPRINTF(szBuff, TEXT("%3.3f"), lgraph->gOptions.eTimeInterval) ; ConvertDecimalPoint (szBuff); SendDlgItemMessage(hDlg, IDD_CHARTOPTIONSINTERVAL, WM_SETTEXT, 0, (LONG) szBuff) ; // Pickup a local copy of the Graph Options. goLocalCopy = lgraph->gOptions ; LocalManualRefresh = lgraph->bManualRefresh ; CheckRadioButton (hDlg, IDD_CHARTOPTIONSMANUALREFRESH, IDD_CHARTOPTIONSPERIODIC, LocalManualRefresh ? IDD_CHARTOPTIONSMANUALREFRESH : IDD_CHARTOPTIONSPERIODIC) ; if (lgraph->bManualRefresh) { DialogEnable (hDlg, IDD_CHARTOPTIONSINTERVALTEXT, FALSE) ; DialogEnable (hDlg, IDD_CHARTOPTIONSINTERVAL, FALSE) ; } else { DialogEnable (hDlg, IDD_CHARTOPTIONSINTERVALTEXT, TRUE) ; DialogEnable (hDlg, IDD_CHARTOPTIONSINTERVAL, TRUE) ; } EditSetLimit (GetDlgItem(hDlg, ID_VERT_MAX), sizeof(szBuff) / sizeof(TCHAR) - 1) ; EditSetLimit (GetDlgItem(hDlg, IDD_CHARTOPTIONSINTERVAL), ShortTextLen) ; WindowCenter (hDlg) ; return(TRUE); case WM_COMMAND: switch(LOWORD(wParam)) { case ID_VERT_MAX: if (HIWORD(wParam) == EN_CHANGE) { DialogText(hDlg, ID_VERT_MAX, szBuff) ; swscanf(szBuff, TEXT("%d"), &goLocalCopy.iVertMax) ; } break ; case IDD_CHARTOPTIONSINTERVAL: if (HIWORD(wParam) == EN_CHANGE) { goLocalCopy.eTimeInterval = DialogFloat (hDlg, IDD_CHARTOPTIONSINTERVAL, NULL) ; } break ; case IDD_CHARTOPTIONSPERIODIC: case IDD_CHARTOPTIONSMANUALREFRESH: // check if the Manual refresh is currently checked. // Then toggle the ManualRefresh button LocalManualRefresh = IsDlgButtonChecked (hDlg, IDD_CHARTOPTIONSMANUALREFRESH) ; CheckRadioButton (hDlg, IDD_CHARTOPTIONSMANUALREFRESH, IDD_CHARTOPTIONSPERIODIC, LocalManualRefresh ? IDD_CHARTOPTIONSPERIODIC : IDD_CHARTOPTIONSMANUALREFRESH) ; // gray out time interval if necessary... DialogEnable (hDlg, IDD_CHARTOPTIONSINTERVALTEXT, LocalManualRefresh) ; DialogEnable (hDlg, IDD_CHARTOPTIONSINTERVAL, LocalManualRefresh) ; LocalManualRefresh = !LocalManualRefresh ; break ; case IDD_CHARTOPTIONSVALUEBAR: if (goLocalCopy.bStatusBarChecked == TRUE) goLocalCopy.bStatusBarChecked = FALSE ; else goLocalCopy.bStatusBarChecked = TRUE ; break ; case ID_LEGEND: if (goLocalCopy.bLegendChecked == TRUE) goLocalCopy.bLegendChecked = FALSE ; else goLocalCopy.bLegendChecked = TRUE ; DialogEnable (hDlg, IDD_CHARTOPTIONSVALUEBAR, goLocalCopy.bLegendChecked) ; break ; case ID_LABELS: if (goLocalCopy.bLabelsChecked == TRUE) goLocalCopy.bLabelsChecked = FALSE ; else goLocalCopy.bLabelsChecked = TRUE ; break ; case ID_VERT_GRID: if (goLocalCopy.bVertGridChecked == TRUE) goLocalCopy.bVertGridChecked = FALSE ; else goLocalCopy.bVertGridChecked = TRUE ; break ; case ID_HORZ_GRID: if (goLocalCopy.bHorzGridChecked == TRUE) goLocalCopy.bHorzGridChecked = FALSE ; else goLocalCopy.bHorzGridChecked = TRUE ; break ; case ID_GRAPH: case ID_HISTOGRAM: if (goLocalCopy.iGraphOrHistogram == BAR_GRAPH) { goLocalCopy.iGraphOrHistogram = LINE_GRAPH ; } else { goLocalCopy.iGraphOrHistogram = BAR_GRAPH ; } CheckRadioButton(hDlg, ID_GRAPH, ID_HISTOGRAM, goLocalCopy.iGraphOrHistogram == LINE_GRAPH ? ID_GRAPH : ID_HISTOGRAM) ; break ; case IDOK: // verify some numeric entries first if (goLocalCopy.iVertMax > MAX_VERTICAL || goLocalCopy.iVertMax < MIN_VERTICAL) { DlgErrorBox (hDlg, ERR_BADVERTMAX) ; SetFocus (DialogControl (hDlg, ID_VERT_MAX)) ; EditSetTextEndPos (hDlg, ID_VERT_MAX) ; return (FALSE) ; break ; } if (goLocalCopy.eTimeInterval > MAX_INTERVALSEC || goLocalCopy.eTimeInterval < MIN_INTERVALSEC) { DlgErrorBox (hDlg, ERR_BADTIMEINTERVAL) ; SetFocus (DialogControl (hDlg, IDD_CHARTOPTIONSINTERVAL)) ; EditSetTextEndPos (hDlg, IDD_CHARTOPTIONSINTERVAL) ; return (FALSE) ; break ; } // We need to send a size message to the main window // so it can setup the redraw of the graph and legend. lgraph->gOptions.bLegendChecked = goLocalCopy.bLegendChecked ; lgraph->gOptions.bStatusBarChecked = goLocalCopy.bStatusBarChecked ; if (lgraph->gOptions.eTimeInterval != goLocalCopy.eTimeInterval && !LocalManualRefresh) { iTimeMilliseconds = (INT) (goLocalCopy.eTimeInterval * (FLOAT) 1000.0) ; pGraphs->gInterval = iTimeMilliseconds ; lgraph->bManualRefresh = LocalManualRefresh ; } else if (LocalManualRefresh != lgraph->bManualRefresh) { ToggleGraphRefresh (hWndGraph) ; } // Assign the local copy of the graph options to the // global copy. lgraph->gOptions = goLocalCopy ; // SizeGraphComponents (hWndGraph) ; // WindowInvalidate (hWndGraph) ; dwCurrentDlgID = 0 ; EndDialog (hDlg, 1) ; return (TRUE) ; break ; case IDCANCEL: dwCurrentDlgID = 0 ; EndDialog(hDlg,0); return(TRUE); case ID_HELP: CallWinHelp (dwCurrentDlgID) ; break ; default: break; } break; default: break; } return(FALSE); }