18#define FUNC_DEVICEPROPERTIES "DevicePropertiesW"
21#define FUNC_DEVICEPROPERTIES "DevicePropertiesA"
48 TCHAR szProperty[256];
59 DPRINT1(
"CM_Get_Child failed: %d\n", cr);
76 DPRINT1(
"CM_Get_DevNode_Registry_Property failed: %d\n", cr);
88 szProperty +
_tcslen(szProperty),
93 DPRINT1(
"CM_Get_DevNode_Registry_Property failed: %d\n", cr);
98 if (
_tcscmp(szProperty, lpDeviceID) == 0)
105 DPRINT1(
"CM_Get_Device_ID_Size failed: %d\n", cr);
111 if (lpDevInstId ==
NULL)
113 DPRINT1(
"LocalAlloc failed\n");
123 DPRINT1(
"CM_Get_Device_ID failed: %d\n", cr);
145 if (lpDevInstID !=
NULL)
152 if (pDeviceProperties !=
NULL)
154 pDeviceProperties(
This->hwndDlg,
174 if (
This->dwMonitorCount > 1)
200 lpDevInstID !=
NULL && lpDevInstID[0] !=
TEXT(
'\0'));
202 if (lpDevInstID !=
NULL)
211 This->bModesPruned && !
This->bKeyIsReadOnly);
224 This->DeskExtInterface->GetPruningMode(
This->DeskExtInterface->Context,
231 This->bModesPruned = (bModesPruned !=
FALSE);
232 This->bKeyIsReadOnly = (bKeyIsReadOnly !=
FALSE);
233 This->bPruningOn = (bPruningOn !=
FALSE);
255 lpCurrentMode =
This->DeskExtInterface->GetCurrentMode(
This->DeskExtInterface->Context);
260 lpMode =
This->DeskExtInterface->EnumAllModes(
This->DeskExtInterface->Context,
262 if (lpMode !=
NULL &&
280 sizeof(szBuffer) /
sizeof(szBuffer[0])))
282 szBuffer[0] =
TEXT(
'\0');
292 sizeof(szFmt) /
sizeof(szFmt[0])))
294 szFmt[0] =
TEXT(
'\0');
298 sizeof(szBuffer) /
sizeof(szBuffer[0]),
329 }
while (lpMode !=
NULL);
356 pmi =
This->Monitors;
366 This->dwMonitorCount = 0;
372 if (lpDeviceId !=
NULL && lpDeviceId[0] !=
TEXT(
'\0'))
380 DPRINT1(
"CM_Locate_DevNode failed: %d\n", cr);
395 pmilink = &
This->Monitors;
400 bRet = EnumDisplayDevices(
This->lpDisplayDevice,
415 pmilink = &pmi->
Next;
417 This->dwMonitorCount++;
423 This->lpDevModeOnInit =
This->DeskExtInterface->GetCurrentMode(
This->DeskExtInterface->Context);
428 This->lpSelDevMode =
This->lpDevModeOnInit;
431 if (
This->dwMonitorCount == 0)
443 if (lpMonitorName !=
NULL)
446 else if (
This->dwMonitorCount == 1)
451 This->Monitors->dd.DeviceString);
461 pmi =
This->Monitors;
485 This->SelMonitor = pmi;
510 if (
This->DeskExtInterface !=
NULL &&
This->bModesPruned && !
This->bKeyIsReadOnly)
515 if (bPruningOn !=
This->bPruningOn)
518 This->bPruningOn = bPruningOn;
519 This->DeskExtInterface->SetPruningMode(
This->DeskExtInterface->Context,
548 lpCurrentDevMode =
This->lpSelDevMode;
555 if (
This->lpSelDevMode !=
NULL &&
This->lpSelDevMode != lpCurrentDevMode)
557 This->DeskExtInterface->SetCurrentMode(
This->DeskExtInterface->Context,
582 This->lpDevModeOnInit =
This->DeskExtInterface->GetCurrentMode(
This->DeskExtInterface->Context);
583 This->lpSelDevMode =
This->lpDevModeOnInit;
604 This->DeskExtInterface->SetCurrentMode(
This->DeskExtInterface->Context,
605 This->lpDevModeOnInit);
627 This->hwndDlg = hwndDlg;
695 IDataObject_Release(
This->pdtobj);
712 pmi =
This->Monitors;
761 &IID_IShellPropSheetExt) ||
779 DPRINT1(
"IDeskMonitor::QueryInterface(%p,%p): E_NOINTERFACE\n", iid, pvObject);
793 DPRINT1(
"IDeskMonitor::Initialize(%p,%p,%p)\n", pidlFolder, pdtobj, hkeyProgID);
797 IDataObject_AddRef(pdtobj);
798 This->pdtobj = pdtobj;
817 DPRINT1(
"IDeskMonitor::AddPages(%p,%p)\n", pfnAddPage,
lParam);
819 psp.dwSize =
sizeof(psp);
839 DPRINT1(
"IDeskMonitor::ReplacePage(%u,%p,%p)\n", uPageID, pfnReplacePage,
lParam);
#define InterlockedIncrement
#define InterlockedDecrement
const GUID IID_IClassFactory
#define STDMETHODCALLTYPE
#define CM_Get_DevNode_Registry_Property
#define CM_Locate_DevNode
#define CM_DRP_HARDWAREID
#define CM_LOCATE_DEVNODE_NORMAL
CONFIGRET WINAPI CM_Get_Child(_Out_ PDEVINST pdnDevInst, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
CONFIGRET WINAPI CM_Get_Device_ID_Size(_Out_ PULONG pulLen, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
CONFIGRET WINAPI CM_Get_Sibling(_Out_ PDEVINST pdnDevInst, _In_ DEVINST dnDevInst, _In_ ULONG ulFlags)
static __inline LONG DeskCplExtDisplaySaveSettings(PDESK_EXT_INTERFACE DeskExtInterface, HWND hwndDlg)
static __inline PDESK_EXT_INTERFACE QueryDeskCplExtInterface(IDataObject *pdo)
#define DESK_EXT_MONITORNAME
static __inline LPTSTR QueryDeskCplString(IDataObject *pdo, UINT cfFormat)
#define DESK_EXT_DISPLAYDEVICE
#define DESK_EXT_DISPLAYID
HRESULT IDeskMonitor_ReplacePage(PDESKMONITOR This, EXPPS uPageID, LPFNADDPROPSHEETPAGE pfnReplacePage, LPARAM lParam)
static VOID UpdatePruningControls(PDESKMONITOR This)
static LONG ApplyMonitorChanges(PDESKMONITOR This)
static VOID IDeskMonitor_Destroy(PDESKMONITOR This)
HRESULT IDeskMonitor_Initialize(PDESKMONITOR This, LPCITEMIDLIST pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID)
static LPTSTR GetMonitorDevInstID(LPCTSTR lpDeviceID)
Converts a Hardware ID (DeviceID from EnumDisplayDevices) to an unique Device Instance ID.
static VOID GetPruningSettings(PDESKMONITOR This)
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpvReserved)
ULONG IDeskMonitor_Release(PDESKMONITOR This)
static HINSTANCE hInstance
static INT_PTR CALLBACK MonitorDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static VOID ShowMonitorProperties(PDESKMONITOR This)
HRESULT STDMETHODCALLTYPE IDeskMonitor_QueryInterface(PDESKMONITOR This, REFIID iid, PVOID *pvObject)
HRESULT IDeskMonitor_Constructor(REFIID riid, LPVOID *ppv)
ULONG IDeskMonitor_AddRef(PDESKMONITOR This)
INT_PTR(WINAPI * PDEVICEPROPERTIES)(HWND, LPCSTR, LPCSTR, BOOL)
static VOID UpdateRefreshRateSelection(PDESKMONITOR This)
static VOID UpdatePruningSelection(PDESKMONITOR This)
static VOID UpdateRefreshFrequencyList(PDESKMONITOR This)
static VOID InitMonitorDialog(PDESKMONITOR This)
#define FUNC_DEVICEPROPERTIES
static VOID UpdateMonitorSelection(PDESKMONITOR This)
static VOID ResetMonitorChanges(PDESKMONITOR This)
static BOOL bFoundAdapter
HRESULT IDeskMonitor_AddPages(PDESKMONITOR This, LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam)
struct _DESKMONINFO * PDESKMONINFO
VOID IDeskMonitor_InitIface(PDESKMONITOR This)
struct _DESKMONITOR * PDESKMONITOR
DECLSPEC_HIDDEN LONG dll_refs
#define IDS_MONITORSETTINGSGROUP
#define IDC_MONITORPROPERTIES
#define IDS_REFRESHRATELABEL
#define IDS_USEDEFFRQUENCY
#define DLL_PROCESS_ATTACH
#define GetProcAddress(x, y)
#define HeapFree(x, y, z)
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
#define impl_to_interface(impl, iface)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
static IN DWORD IN LPVOID lpvReserved
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
struct _PSP * HPROPSHEETPAGE
#define PSNRET_INVALID_NOCHANGEPAGE
#define PropSheet_Changed(d, w)
#define CreatePropertySheetPage
#define PropSheet_RestartWindows(d)
BOOL(CALLBACK * LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE, LPARAM)
#define IsEqualIID(riid1, riid2)
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
struct _DESKMONINFO * Next
struct _devicemodeW * PDEVMODEW
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI CheckDlgButton(_In_ HWND, _In_ int, _In_ UINT)
#define DISP_CHANGE_SUCCESSFUL
#define RegisterClipboardFormat
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
UINT WINAPI IsDlgButtonChecked(_In_ HWND, _In_ int)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
HWND WINAPI GetParent(_In_ HWND)
#define DISP_CHANGE_RESTART
#define SendDlgItemMessage