Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

223 lines
6.6 KiB

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: T D E V I C E S . C P P
//
// Contents: Device dialog for UPnP Device Tray
//
// Notes:
//
// Author: jeffspr 16 Dec 1999
//
//----------------------------------------------------------------------------
#include "pch.h"
#pragma hdrstop
#include <windowsx.h>
#include "tfind.h"
#include "clist.h"
#include "clistndn.h"
extern CComModule _Module;
#include <atlbase.h>
#include <atlwin.h>
//---[ Prototypes ]-----------------------------------------------------------
BOOL CALLBACK DevicePropsGenPageProc(
HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam);
HRESULT HrCreateDevicePropertySheets(
HWND hwndOwner,
NewDeviceNode * pNDN);
//+---------------------------------------------------------------------------
//
// Function: HrCreateDevicePropertySheets
//
// Purpose: Bring up the propsheet pages for a selected device
//
// Arguments:
// hwndOwner [in] Our parent window
// pNDN [in] The device info
//
// Returns:
//
// Author: jeffspr 6 Jan 2000
//
// Notes:
//
HRESULT HrCreateDevicePropertySheets(
HWND hwndOwner,
NewDeviceNode * pNDN)
{
Assert(pNDN);
HRESULT hr = S_OK;
PROPSHEETPAGE psp[2] = {0};
PROPSHEETHEADER psh = {0};
TCHAR * szGenPage = TszFromWsz(WszLoadIds(IDS_UPNPTRAYUI_GENERAL));
// Fill in the propsheet info for the General and Advanced pages
// of the device propsheet dialog
//
psp[0].dwSize = sizeof(PROPSHEETPAGE);
psp[0].dwFlags = PSP_USETITLE;
psp[0].hInstance = _Module.GetResourceInstance();
psp[0].pszTemplate = MAKEINTRESOURCE(IDD_DEVICE_PROPERTIES_GEN);
psp[0].pszIcon = NULL;
psp[0].pfnDlgProc = (DLGPROC)DevicePropsGenPageProc;
psp[0].pszTitle = szGenPage;
psp[0].lParam = (LPARAM) pNDN;
psh.dwSize = sizeof(PROPSHEETHEADER);
psh.dwFlags = PSH_PROPSHEETPAGE | PSH_NOAPPLYNOW |
PSH_NOCONTEXTHELP | PSH_PROPTITLE;
psh.hwndParent = hwndOwner;
psh.hInstance = _Module.GetResourceInstance();
psh.pszIcon = NULL;
psh.pszCaption = pNDN->pszDisplayName;
psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE);
psh.ppsp = (LPCPROPSHEETPAGE) &psp;
if (PropertySheet(&psh) == -1)
{
hr = E_FAIL;
}
delete szGenPage;
return hr;
}
//---[ DevicePropsGenPageProc ]------------------------------------------------
//
// Dlg Proc for the Discovered Devices dialog
//
//-----------------------------------------------------------------------------
BOOL CALLBACK DevicePropsGenPageProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
static LPPROPSHEETPAGE pPSP = NULL;
static BOOL fApplyNow = FALSE;
HRESULT hr = S_OK;
int iSelection = 0;
static NewDeviceNode * pNDN = NULL;
// WM_COMMAND stuff
static int iID = 0;
static HWND hwndCtl= NULL;
static UINT uiCodeNotify = 0;
// WM_NOTIFY stuff
static NMHDR FAR *pnmhdr = NULL;
switch(message)
{
case WM_INITDIALOG:
pPSP = (LPPROPSHEETPAGE)lParam;
fApplyNow=FALSE;
AssertSz(pPSP, "Propsheet page NULL in DevicePropsGenPageProc");
pNDN = (NewDeviceNode *) pPSP->lParam;
Assert(pNDN);
// Fill in the text fields from the device data
//
SendDlgItemMessage(hDlg, IDC_TXT_DEVICE_CAPTION, WM_SETTEXT, 0,
(LPARAM) pNDN->pszDisplayName);
SendDlgItemMessage(hDlg, IDC_TXT_MODEL_MANUFACTURER, WM_SETTEXT, 0,
(LPARAM) pNDN->pszManufacturerName);
SendDlgItemMessage(hDlg, IDC_TXT_MODEL_DESCRIPTION, WM_SETTEXT, 0,
(LPARAM) pNDN->pszDescription);
SendDlgItemMessage(hDlg, IDC_TXT_MODEL_NUMBER, WM_SETTEXT, 0,
(LPARAM) pNDN->pszModelNumber);
SendDlgItemMessage(hDlg, IDC_TXT_MODEL_NAME, WM_SETTEXT, 0,
(LPARAM) pNDN->pszModelName);
SendDlgItemMessage(hDlg, IDC_TXT_LOCATION, WM_SETTEXT, 0,
(LPARAM) pNDN->pszPresentationURL);
if(!GetParent(GetParent(hDlg)))
{
SetForegroundWindow(GetParent(hDlg));
}
// disable cancel button as this is a readonly page
::PostMessage(GetParent(hDlg), PSM_CANCELTOCLOSE, 0, 0L);
return FALSE;
case WM_DESTROY:
break;
case WM_COMMAND:
iID = GET_WM_COMMAND_ID(wParam, lParam);
hwndCtl = GET_WM_COMMAND_HWND(wParam, lParam);
uiCodeNotify = (UINT) GET_WM_COMMAND_CMD(wParam, lParam);
return(FALSE);
case WM_NOTIFY:
// See commctrl.h if Chicago's version of WM_NOTIFY changes.
pnmhdr = (NMHDR FAR *)lParam;
iID = (int) wParam;
AssertSz(pnmhdr, "Travel Experts");
switch(pnmhdr->code)
{
case PSN_APPLY:
break;
case PSN_KILLACTIVE:
// validate here
return TRUE;
case PSN_SETACTIVE:
return TRUE;
case PSN_WIZBACK:
case PSN_WIZNEXT:
case PSN_WIZFINISH:
case PSN_QUERYCANCEL:
break;
case PSN_RESET: // Cancelling dialog
break;
case PSN_HELP: // Help button was pressed
// dwMailHelpContext = IDH_INTERNET_SEND_DLG;
// WinHelp(hDlg, MAIL_HELP_NAME, HELP_CONTEXT, dwMailHelpContext);
break;
// We don't process any of these
//
case PSN_GETOBJECT:
case PSN_TRANSLATEACCELERATOR:
case PSN_QUERYINITIALFOCUS:
break;
default:
// This will break in the future. In my way of thinking, this is good
// because it informs us of new functionality that we can support,
// so I'll fire this assert.
//
//AssertSz(FALSE, "Eeeeeeee-gads! Unknown PSN_");
break;
}
return TRUE;
}
//
return FALSE;
}