Display the display device adapter name and show device properties

svn path=/trunk/; revision=29221
This commit is contained in:
Thomas Bluemel
2007-09-26 20:41:57 +00:00
parent 9fa9463d77
commit 3570f78e87
5 changed files with 75 additions and 1 deletions
@@ -5,6 +5,54 @@
static HINSTANCE hInstance;
typedef INT_PTR (WINAPI *PDEVICEPROPERTIESEXW)(HWND,LPCWSTR,LPCWSTR,DWORD,BOOL);
static VOID
ShowAdapterProperties(PDESKDISPLAYADAPTER This)
{
HMODULE hDevMgr;
PDEVICEPROPERTIESEXW pDevicePropertiesExW;
hDevMgr = LoadLibrary(TEXT("devmgr.dll"));
if (hDevMgr != NULL)
{
pDevicePropertiesExW = (PDEVICEPROPERTIESEXW)GetProcAddress(hDevMgr,
"DevicePropertiesExW");
if (pDevicePropertiesExW != NULL)
{
pDevicePropertiesExW(This->hwndDlg,
NULL,
This->lpDeviceId,
0,
FALSE);
}
FreeLibrary(hDevMgr);
}
}
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);
}
}
static INT_PTR CALLBACK
DisplayAdapterDlgProc(HWND hwndDlg,
UINT uMsg,
@@ -24,12 +72,24 @@ DisplayAdapterDlgProc(HWND hwndDlg,
{
case WM_INITDIALOG:
This = (PDESKDISPLAYADAPTER)((LPCPROPSHEETPAGE)lParam)->lParam;
This->hwndDlg = hwndDlg;
SetWindowLongPtr(hwndDlg,
DWL_USER,
(LONG_PTR)This);
InitDisplayAdapterDialog(This);
Ret = TRUE;
break;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDC_ADAPTERPROPERTIES:
ShowAdapterProperties(This);
break;
}
break;
}
return Ret;
@@ -49,6 +109,12 @@ IDeskDisplayAdapter_Destroy(PDESKDISPLAYADAPTER This)
LocalFree((HLOCAL)This->DeskExtInterface);
This->DeskExtInterface = NULL;
}
if (This->lpDeviceId != NULL)
{
LocalFree((HLOCAL)This->lpDeviceId);
This->lpDeviceId = NULL;
}
}
ULONG
@@ -8,8 +8,10 @@ typedef struct _DESKDISPLAYADAPTER
const struct IClassFactoryVtbl *lpIClassFactoryVtbl;
DWORD ref;
HWND hwndDlg;
PDESK_EXT_INTERFACE DeskExtInterface;
IDataObject *pdtobj;
LPTSTR lpDeviceId;
} DESKDISPLAYADAPTER, *PDESKDISPLAYADAPTER;
extern LONG dll_refs;
@@ -5,6 +5,8 @@ STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
CAPTION "Adapter"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
GROUPBOX "Adapter Type", -1, 7, 3, 237, 50
LTEXT "", IDC_ADAPTERNAME, 40, 17, 190, 20
PUSHBUTTON "&Properties", IDC_ADAPTERPROPERTIES, 177, 33, 59, 14
END
@@ -3,6 +3,7 @@
#define COBJMACROS
#include <windows.h>
#include <tchar.h>
#include <shlobj.h>
#include <dll/desk/deskcplx.h>
#include "deskadp.h"
@@ -3,4 +3,7 @@
#define IDD_DISPLAYADAPTER 100
#define IDC_ADAPTERNAME 201
#define IDC_ADAPTERPROPERTIES 201
#endif /* __RESOURCE__H */