static VOID InitDisplayAdapterDialog(PDESKDISPLAYADAPTER This) { LPTSTR lpAdapterName; This->lpDeviceId = QueryDeskCplString(This->pdtobj, RegisterClipboardFormat(DESK_EXT_DISPLAYID)); EnableWindow(GetDlgItem(This->hwndDlg, IDC_ADAPTERPROPERTIES), This->lpDeviceId != NULL && This->lpDeviceId[0] != TEXT('\0')); lpAdapterName = QueryDeskCplString(This->pdtobj, RegisterClipboardFormat(DESK_EXT_DISPLAYNAME)); if (lpAdapterName != NULL) { SetDlgItemText(This->hwndDlg, IDC_ADAPTERNAME, lpAdapterName); LocalFree((HLOCAL)lpAdapterName); } if (This->DeskExtInterface != NULL) { SetDlgItemTextW(This->hwndDlg, IDC_CHIPTYPE, This->DeskExtInterface->ChipType); SetDlgItemTextW(This->hwndDlg, IDC_DACTYPE, This->DeskExtInterface->DacType); SetDlgItemTextW(This->hwndDlg, IDC_MEMORYSIZE, This->DeskExtInterface->MemorySize); SetDlgItemTextW(This->hwndDlg, IDC_ADAPTERSTRING, This->DeskExtInterface->AdapterString); SetDlgItemTextW(This->hwndDlg, IDC_BIOSINFORMATION, This->DeskExtInterface->BiosString); This->lpDevModeOnInit = This->DeskExtInterface->GetCurrentMode(This->DeskExtInterface->Context); } else This->lpDevModeOnInit = NULL; This->lpSelDevMode = This->lpDevModeOnInit; }
static VOID InitMonitorDialog(PDESKMONITOR This) { PDESKMONINFO pmi, pminext, *pmilink; DISPLAY_DEVICE dd; BOOL bRet; INT i; DWORD dwIndex; /* Free all allocated monitors */ pmi = This->Monitors; This->Monitors = NULL; while (pmi != NULL) { pminext = pmi->Next; LocalFree((HLOCAL)pmi); pmi = pminext; } This->SelMonitor = NULL; This->dwMonitorCount = 0; if (This->lpDisplayDevice != NULL) LocalFree((HLOCAL)This->lpDisplayDevice); This->lpDisplayDevice = QueryDeskCplString(This->pdtobj, RegisterClipboardFormat(DESK_EXT_DISPLAYDEVICE)); if (This->DeskExtInterface != NULL) { if (This->lpDisplayDevice != NULL) { /* Enumerate all monitors */ dwIndex = 0; pmilink = &This->Monitors; do { dd.cb = sizeof(dd); bRet = EnumDisplayDevices(This->lpDisplayDevice, dwIndex++, &dd, 0); if (bRet) { pmi = LocalAlloc(LMEM_FIXED, sizeof(*pmi)); if (pmi != NULL) { CopyMemory(&pmi->dd, &dd, sizeof(dd)); pmi->Next = NULL; *pmilink = pmi; pmilink = &pmi->Next; This->dwMonitorCount++; } } } while (bRet); } This->lpDevModeOnInit = This->DeskExtInterface->GetCurrentMode(This->DeskExtInterface->Context); } else This->lpDevModeOnInit = NULL; This->lpSelDevMode = This->lpDevModeOnInit; /* Setup the UI depending on how many monitors are attached */ if (This->dwMonitorCount == 0) { LPTSTR lpMonitorName; /* This is a fallback, let's hope that desk.cpl can provide us with a monitor name */ lpMonitorName = QueryDeskCplString(This->pdtobj, RegisterClipboardFormat(DESK_EXT_MONITORNAME)); SetDlgItemText(This->hwndDlg, IDC_MONITORNAME, lpMonitorName); if (lpMonitorName != NULL) LocalFree((HLOCAL)lpMonitorName); } else if (This->dwMonitorCount == 1) { This->SelMonitor = This->Monitors; SetDlgItemText(This->hwndDlg, IDC_MONITORNAME, This->Monitors->dd.DeviceString); } else { SendDlgItemMessage(This->hwndDlg, IDC_MONITORLIST, LB_RESETCONTENT, 0, 0); pmi = This->Monitors; while (pmi != NULL) { i = (INT)SendDlgItemMessage(This->hwndDlg, IDC_MONITORLIST, LB_ADDSTRING, 0, (LPARAM)pmi->dd.DeviceString); if (i >= 0) { SendDlgItemMessage(This->hwndDlg, IDC_MONITORLIST, LB_SETITEMDATA, (WPARAM)i, (LPARAM)pmi); if (This->SelMonitor == NULL) { SendDlgItemMessage(This->hwndDlg, IDC_MONITORLIST, LB_SETCURSEL, (WPARAM)i, 0); This->SelMonitor = pmi; } } pmi = pmi->Next; } } /* Show/Hide controls */ ShowWindow(GetDlgItem(This->hwndDlg, IDC_MONITORNAME), (This->dwMonitorCount <= 1 ? SW_SHOW : SW_HIDE)); ShowWindow(GetDlgItem(This->hwndDlg, IDC_MONITORLIST), (This->dwMonitorCount > 1 ? SW_SHOW : SW_HIDE)); UpdateRefreshFrequencyList(This); UpdateMonitorSelection(This); }