static VOID MainWndCommand(PMAIN_WND_INFO Info, WORD CmdId, HWND hControl) { UNREFERENCED_PARAMETER(hControl); switch (CmdId) { case IDC_PROP: { HTREEITEM hSelected = TreeView_GetSelection(Info->hTreeView); OpenPropSheet(Info->hTreeView, hSelected); } break; case IDC_REFRESH: { OnRefresh(Info); } break; case IDC_PROGHELP: { DisplayString(_T("Help is not yet implemented\n")); SetFocus(Info->hTreeView); } break; case IDC_EXIT: { PostMessage(Info->hMainWnd, WM_CLOSE, 0, 0); } break; case IDC_ABOUT: { DialogBox(hInstance, MAKEINTRESOURCE(IDD_ABOUTBOX), Info->hMainWnd, AboutDialogProc); SetFocus(Info->hTreeView); } break; case IDC_DEVBYTYPE: { Info->Display = DevicesByType; UpdateViewMenu(Info); OnRefresh(Info); } break; case IDC_DEVBYCONN: { Info->Display = DevicesByConnection; UpdateViewMenu(Info); OnRefresh(Info); } break; case IDC_SHOWHIDDEN: { Info->bShowHidden = !Info->bShowHidden; UpdateViewMenu(Info); OnRefresh(Info); } break; } }
static VOID MainWndCommand(PMAIN_WND_INFO Info, WORD CmdId, HWND hControl) { UNREFERENCED_PARAMETER(hControl); switch (CmdId) { case ID_PROP: { if (Info->SelectedItem != NO_ITEM_SELECTED) { Info->bDlgOpen = TRUE; OpenPropSheet(Info); Info->bDlgOpen = FALSE; SetMenuAndButtonStates(Info); } } break; case ID_REFRESH: { RefreshServiceList(Info); Info->SelectedItem = NO_ITEM_SELECTED; /* disable menus and buttons */ SetMenuAndButtonStates(Info); /* clear the service in the status bar */ SendMessage(Info->hStatus, SB_SETTEXT, 1, _T('\0')); } break; case ID_EXPORT: { ExportFile(Info); SetFocus(Info->hListView); } break; case ID_CREATE: { INT ret; ret = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DLG_CREATE), Info->hMainWnd, CreateDialogProc, (LPARAM)Info); if (ret == IDOK) RefreshServiceList(Info); SetFocus(Info->hListView); } break; case ID_DELETE: { if (Info->pCurrentService->ServiceStatusProcess.dwCurrentState != SERVICE_RUNNING) { DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DLG_DELETE), Info->hMainWnd, DeleteDialogProc, (LPARAM)Info); } else { TCHAR Buf[60]; LoadString(hInstance, IDS_DELETE_STOP, Buf, sizeof(Buf) / sizeof(TCHAR)); DisplayString(Buf); } SetFocus(Info->hListView); } break; case ID_START: { if (DoStart(Info, NULL)) { UpdateServiceStatus(Info->pCurrentService); ChangeListViewText(Info, Info->pCurrentService, LVSTATUS); SetMenuAndButtonStates(Info); SetFocus(Info->hListView); } } break; case ID_STOP: if (DoStop(Info)) { UpdateServiceStatus(Info->pCurrentService); ChangeListViewText(Info, Info->pCurrentService, LVSTATUS); SetMenuAndButtonStates(Info); SetFocus(Info->hListView); } break; case ID_PAUSE: DoPause(Info); break; case ID_RESUME: DoResume(Info); break; case ID_RESTART: if (DoStop(Info)) { DoStart(Info, NULL); UpdateServiceStatus(Info->pCurrentService); ChangeListViewText(Info, Info->pCurrentService, LVSTATUS); SetMenuAndButtonStates(Info); SetFocus(Info->hListView); } break; case ID_HELP: MessageBox(NULL, _T("Help is not yet implemented\n"), _T("Note!"), MB_OK | MB_ICONINFORMATION); SetFocus(Info->hListView); break; case ID_EXIT: PostMessage(Info->hMainWnd, WM_CLOSE, 0, 0); break; case ID_VIEW_LARGE: SetListViewStyle(Info->hListView, LVS_ICON); CheckMenuRadioItem(GetMenu(Info->hMainWnd), ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_LARGE, MF_BYCOMMAND); break; case ID_VIEW_SMALL: SetListViewStyle(Info->hListView, LVS_SMALLICON); CheckMenuRadioItem(GetMenu(Info->hMainWnd), ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_SMALL, MF_BYCOMMAND); break; case ID_VIEW_LIST: SetListViewStyle(Info->hListView, LVS_LIST); CheckMenuRadioItem(GetMenu(Info->hMainWnd), ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_LIST, MF_BYCOMMAND); break; case ID_VIEW_DETAILS: SetListViewStyle(Info->hListView, LVS_REPORT); CheckMenuRadioItem(GetMenu(Info->hMainWnd), ID_VIEW_LARGE, ID_VIEW_DETAILS, ID_VIEW_DETAILS, MF_BYCOMMAND); break; case ID_VIEW_CUST: break; case ID_ABOUT: DialogBox(hInstance, MAKEINTRESOURCE(IDD_ABOUTBOX), Info->hMainWnd, AboutDialogProc); SetFocus(Info->hListView); break; } }
static LRESULT OnNotify(PMAIN_WND_INFO Info, LPARAM lParam) { LPNMHDR pnmhdr = (LPNMHDR)lParam; LRESULT ret = 0; switch (pnmhdr->code) { case TVN_SELCHANGED: { LPNM_TREEVIEW pnmtv = (LPNM_TREEVIEW)lParam; if (Info->Display == DevicesByType) { if (!TreeView_GetChild(Info->hTreeView, pnmtv->itemNew.hItem)) { SendMessage(Info->hTool, TB_SETSTATE, IDC_PROP, (LPARAM)MAKELONG(TBSTATE_ENABLED, 0)); EnableMenuItem(GetMenu(Info->hMainWnd), IDC_PROP, MF_ENABLED); EnableMenuItem(Info->hShortcutMenu, IDC_PROP, MF_ENABLED); } else { SendMessage(Info->hTool, TB_SETSTATE, IDC_PROP, (LPARAM)MAKELONG(TBSTATE_INDETERMINATE, 0)); EnableMenuItem(GetMenu(Info->hMainWnd), IDC_PROP, MF_GRAYED); EnableMenuItem(Info->hShortcutMenu, IDC_PROP, MF_GRAYED); } } else if (Info->Display == DevicesByConnection) { if (pnmtv->itemNew.hItem == TreeView_GetRoot(Info->hTreeView)) { SendMessage(Info->hTool, TB_SETSTATE, IDC_PROP, (LPARAM)MAKELONG(TBSTATE_INDETERMINATE, 0)); EnableMenuItem(GetMenu(Info->hMainWnd), IDC_PROP, MF_GRAYED); EnableMenuItem(Info->hShortcutMenu, IDC_PROP, MF_GRAYED); } else { SendMessage(Info->hTool, TB_SETSTATE, IDC_PROP, (LPARAM)MAKELONG(TBSTATE_ENABLED, 0)); EnableMenuItem(GetMenu(Info->hMainWnd), IDC_PROP, MF_ENABLED); EnableMenuItem(Info->hShortcutMenu, IDC_PROP, MF_ENABLED); } } } break; case NM_DBLCLK: { HTREEITEM hSelected = TreeView_GetSelection(Info->hTreeView); TV_HITTESTINFO HitTest; if (Info->Display == DevicesByType) { if (!TreeView_GetChild(Info->hTreeView, hSelected)) { if (GetCursorPos(&HitTest.pt) && ScreenToClient(Info->hTreeView, &HitTest.pt)) { if (TreeView_HitTest(Info->hTreeView, &HitTest)) { if (HitTest.hItem == hSelected) { OpenPropSheet(Info->hTreeView, hSelected); ret = TRUE; } } } } } else if (Info->Display == DevicesByConnection) { if (hSelected != TreeView_GetRoot(Info->hTreeView)) { if (GetCursorPos(&HitTest.pt) && ScreenToClient(Info->hTreeView, &HitTest.pt)) { if (TreeView_HitTest(Info->hTreeView, &HitTest)) { if (HitTest.hItem == hSelected) { OpenPropSheet(Info->hTreeView, hSelected); ret = TRUE; } } } } } } break; case NM_RCLICK: { TV_HITTESTINFO HitTest; if (GetCursorPos(&HitTest.pt) && ScreenToClient(Info->hTreeView, &HitTest.pt)) { if (TreeView_HitTest(Info->hTreeView, &HitTest)) (void)TreeView_SelectItem(Info->hTreeView, HitTest.hItem); } } break; case TTN_GETDISPINFO: { LPTOOLTIPTEXT lpttt; UINT idButton; lpttt = (LPTOOLTIPTEXT)lParam; idButton = (UINT)lpttt->hdr.idFrom; switch (idButton) { case IDC_PROP: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_PROP); break; case IDC_REFRESH: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_REFRESH); break; case IDC_PROGHELP: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_HELP); break; case IDC_EXIT: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_EXIT); break; } } break; } return ret; }