224 lines
6.6 KiB
C++
224 lines
6.6 KiB
C++
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// 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;
|
||
|
}
|