659 lines
15 KiB
C++
659 lines
15 KiB
C++
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1997.
|
|
//
|
|
// File: T A G S P A G E . C P P
|
|
//
|
|
// Contents: TraceTags propsheet page handlers
|
|
//
|
|
// Notes:
|
|
//
|
|
// Author: jeffspr 24 Jan 1999
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#include <pch.h>
|
|
#pragma hdrstop
|
|
|
|
#ifdef ENABLETRACE
|
|
|
|
#include <crtdbg.h>
|
|
#include "ncdebug.h"
|
|
#include <ncui.h>
|
|
#include "traceui.h"
|
|
|
|
|
|
//---[ Globals ]--------------------------------------------------------------
|
|
|
|
#if 0
|
|
typedef struct _LV_COLUMN {
|
|
UINT mask;
|
|
int fmt;
|
|
int cx;
|
|
PWSTR pszText;
|
|
int cchTextMax;
|
|
int iSubItem;
|
|
} LV_COLUMN;
|
|
#endif
|
|
|
|
// | :--------- CHAR [] szShortName
|
|
// | | :------- CHAR [] szDescription
|
|
// | | | BOOL fOutputDebugString -----------------------------:
|
|
// | | | BOOL fOutputToFile ----------------------------------|---:
|
|
// | | | BOOL fVerboseOnly------------------------------------|---|---:
|
|
|
|
#define LVCF_NORMAL (LVCF_FMT | LVCF_TEXT | LVCF_WIDTH)
|
|
|
|
static LV_COLUMN g_lvcTags[] =
|
|
{
|
|
{LVCF_NORMAL, LVCFMT_LEFT, 30, L"Name", 0, 0},
|
|
{LVCF_NORMAL, LVCFMT_LEFT, 60, L"Description", 0, 0},
|
|
{LVCF_NORMAL, LVCFMT_LEFT, 30, L"Debug Logging", 0, 0},
|
|
{LVCF_NORMAL, LVCFMT_LEFT, 30, L"File Logging", 0, 0}
|
|
};
|
|
|
|
const DWORD g_dwTagColumnCount = celems(g_lvcTags);
|
|
|
|
static const UINT SELS_UNCHECKED = 0x1;
|
|
static const UINT SELS_CHECKED = 0x2;
|
|
|
|
|
|
CDbgFlagPage::CDbgFlagPage()
|
|
{
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::~CDbgFlagPage
|
|
//
|
|
// Purpose: Destroys the CDbgFlagPage object
|
|
//
|
|
// Arguments:
|
|
// (none)
|
|
//
|
|
// Returns: Nothing
|
|
//
|
|
// Author: danielwe 25 Feb 1998
|
|
//
|
|
// Notes:
|
|
//
|
|
CDbgFlagPage::~CDbgFlagPage()
|
|
{
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::OnInitDialog
|
|
//
|
|
// Purpose: Handles the WM_INITDIALOG message
|
|
//
|
|
// Arguments:
|
|
// uMsg []
|
|
// wParam []
|
|
// lParam []
|
|
// bHandled []
|
|
//
|
|
// Returns: TRUE
|
|
//
|
|
// Author: danielwe 29 Oct 1997
|
|
//
|
|
// Notes:
|
|
//
|
|
LRESULT CDbgFlagPage::OnInitDialog(UINT uMsg, WPARAM wParam,
|
|
LPARAM lParam, BOOL& bHandled)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
|
|
m_hwndLV = GetDlgItem(IDC_TRACETAGS);
|
|
|
|
hr = HrInitTraceListView(m_hwndLV, &m_hilCheckIcons);
|
|
|
|
for(DWORD dwLoop = 0; dwLoop < g_dwTagColumnCount; dwLoop++)
|
|
{
|
|
ListView_InsertColumn(m_hwndLV,dwLoop+1,&(g_lvcTags[dwLoop]));
|
|
}
|
|
|
|
LV_ITEM lvi = {0};
|
|
|
|
lvi.mask = LVIF_TEXT | LVIF_IMAGE |
|
|
LVIF_STATE | LVIF_PARAM;
|
|
|
|
INT nIndex =0;
|
|
|
|
#if 0
|
|
// Get the component's class image list index
|
|
if (pcild)
|
|
{
|
|
hr = HrSetupDiGetClassImageIndex(pcild, &guidClass, &nIndex);
|
|
TraceError("HrSetupDiGetClassImageIndex failed.", hr);
|
|
|
|
lvi.iImage = nIndex;
|
|
|
|
hr = S_OK;
|
|
}
|
|
|
|
lvi.iItem = *pnPos;
|
|
#endif
|
|
lvi.iItem = 0;
|
|
#if 0
|
|
NET_ITEM_DATA * pnid = new NET_ITEM_DATA;
|
|
pnid->szwName = SzDupSz(pszwName);
|
|
pnid->szwDesc = SzDupSz(pszwDesc);
|
|
pnid->dwFlags = dwFlags;
|
|
AddRefObj(pnid->pncc = pncc);
|
|
|
|
pnid->pCompObj = new CComponentObj(pncc);
|
|
hr = pnid->pCompObj->HrInit(plistBindingPaths);
|
|
|
|
if FAILED(hr)
|
|
{
|
|
TraceError("HrInsertComponent: failed to initialize a component object", hr);
|
|
hr = S_OK;
|
|
}
|
|
|
|
lvi.lParam = reinterpret_cast<LPARAM>(pnid);
|
|
lvi.pszText = pnid->szwName;
|
|
#endif
|
|
lvi.lParam = 0;
|
|
lvi.pszText = L"Hey, Jude";
|
|
|
|
// We will refresh the state of the whole list in the end
|
|
UINT iChkIndex = SELS_CHECKED;
|
|
lvi.state = INDEXTOSTATEIMAGEMASK( iChkIndex );
|
|
|
|
INT ret;
|
|
ret = ListView_InsertItem(m_hwndLV, &lvi);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::OnHelp
|
|
//
|
|
// Purpose: Handles the WM_HELP message.
|
|
//
|
|
// Arguments:
|
|
// uMsg []
|
|
// wParam []
|
|
// lParam []
|
|
// bHandled []
|
|
//
|
|
// Returns: TRUE
|
|
//
|
|
// Author: danielwe 25 Feb 1998
|
|
//
|
|
// Notes:
|
|
//
|
|
LRESULT CDbgFlagPage::OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam,
|
|
BOOL& bHandled)
|
|
{
|
|
OnTraceHelpGeneric(m_hWnd, lParam);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::OnDestroy
|
|
//
|
|
// Purpose: Called when the dialog page is destroyed
|
|
//
|
|
// Arguments:
|
|
// uMsg []
|
|
// wParam []
|
|
// lParam []
|
|
// bHandled []
|
|
//
|
|
// Returns:
|
|
//
|
|
// Author: danielwe 2 Feb 1998
|
|
//
|
|
// Notes:
|
|
//
|
|
LRESULT CDbgFlagPage::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam,
|
|
BOOL& bHandled)
|
|
{
|
|
UninitTraceListView(m_hwndLV);
|
|
|
|
return 0;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::OnSetCursor
|
|
//
|
|
// Purpose: Called in response to the WM_SETCURSOR message
|
|
//
|
|
// Arguments:
|
|
// uMsg []
|
|
// wParam []
|
|
// lParam []
|
|
// bHandled []
|
|
//
|
|
// Returns:
|
|
//
|
|
// Author: danielwe 2 Jan 1998
|
|
//
|
|
// Notes:
|
|
//
|
|
LRESULT CDbgFlagPage::OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam,
|
|
BOOL& bHandled)
|
|
{
|
|
if (m_hPrevCurs)
|
|
{
|
|
if (LOWORD(lParam) == HTCLIENT)
|
|
{
|
|
SetCursor(LoadCursor(NULL, IDC_WAIT));
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::OnAdd
|
|
//
|
|
// Purpose: Handles the clicking of the Add button
|
|
//
|
|
// Arguments:
|
|
// wNotifyCode []
|
|
// wID []
|
|
// hWndCtl []
|
|
// bHandled []
|
|
//
|
|
// Returns:
|
|
//
|
|
// Author: danielwe 29 Oct 1997
|
|
//
|
|
// Notes:
|
|
//
|
|
LRESULT CDbgFlagPage::OnAdd(WORD wNotifyCode, WORD wID, HWND hWndCtl,
|
|
BOOL& bHandled)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
|
|
#if 0
|
|
hr = HrLvAdd(m_hwndLV, m_hWnd, m_pnc, m_pnccAdapter, &m_listBindingPaths);
|
|
if (SUCCEEDED(hr) && (S_FALSE != hr))
|
|
{
|
|
// Change the Cancel Button to CLOSE (because we committed changes)
|
|
//
|
|
::PostMessage(GetParent(), PSM_CANCELTOCLOSE, 0, 0L);
|
|
}
|
|
|
|
if (NETCFG_S_REBOOT == hr)
|
|
{
|
|
RequestReboot();
|
|
|
|
// The reboot request has been handled
|
|
hr = S_OK;
|
|
}
|
|
|
|
TraceError("CDbgFlagPage::OnAdd", hr);
|
|
#endif
|
|
return LresFromHr(hr);
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::OnRemove
|
|
//
|
|
// Purpose: Handles the clicking of the Remove button
|
|
//
|
|
// Arguments:
|
|
// wNotifyCode []
|
|
// wID []
|
|
// hWndCtl []
|
|
// bHandled []
|
|
//
|
|
// Returns:
|
|
//
|
|
// Author: danielwe 29 Oct 1997
|
|
//
|
|
// Notes:
|
|
//
|
|
LRESULT CDbgFlagPage::OnRemove(WORD wNotifyCode, WORD wID, HWND hWndCtl,
|
|
BOOL& bHandled)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
#if 0
|
|
hr = HrLvRemove(m_hwndLV, m_hWnd, m_pnc, m_pnccAdapter,
|
|
&m_listBindingPaths);
|
|
|
|
// if list is empty, reset the buttons
|
|
if (0 == ListView_GetItemCount(m_hwndLV))
|
|
{
|
|
// Reset the buttons and the description text based on the changed selection
|
|
LvSetButtons(m_handles);
|
|
}
|
|
|
|
if (SUCCEEDED(hr) && (S_FALSE != hr))
|
|
{
|
|
// Change the Cancel Button to CLOSE (because we committed changes)
|
|
//
|
|
::PostMessage(GetParent(), PSM_CANCELTOCLOSE, 0, 0L);
|
|
}
|
|
|
|
if (NETCFG_S_REBOOT == hr)
|
|
{
|
|
RequestReboot();
|
|
|
|
// The reboot request has been handled
|
|
hr = S_OK;
|
|
}
|
|
|
|
TraceError("CDbgFlagPage::OnRemove", hr);
|
|
#endif
|
|
return LresFromHr(hr);
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::OnProperties
|
|
//
|
|
// Purpose: Handles the clicking of the Properties button
|
|
//
|
|
// Arguments:
|
|
// wNotifyCode []
|
|
// wID []
|
|
// hWndCtl []
|
|
// bHandled []
|
|
//
|
|
// Returns:
|
|
//
|
|
// Author: danielwe 29 Oct 1997
|
|
//
|
|
// Notes:
|
|
//
|
|
LRESULT CDbgFlagPage::OnProperties(WORD wNotifyCode, WORD wID, HWND hWndCtl,
|
|
BOOL& bHandled)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
#if 0
|
|
hr = HrLvProperties(m_hwndLV, m_hWnd, m_pnc, m_punk,
|
|
m_pnccAdapter, &m_listBindingPaths);
|
|
|
|
TraceError("CDbgFlagPage::OnProperties", hr);
|
|
#endif
|
|
return LresFromHr(hr);
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::OnApply
|
|
//
|
|
// Purpose: Called when the Networking page is applied
|
|
//
|
|
// Arguments:
|
|
// idCtrl []
|
|
// pnmh []
|
|
// bHandled []
|
|
//
|
|
// Returns:
|
|
//
|
|
// Author: danielwe 29 Oct 1997
|
|
//
|
|
// Notes:
|
|
//
|
|
LRESULT CDbgFlagPage::OnApply(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
|
|
#if 0
|
|
if (m_fReentrancyCheck)
|
|
{
|
|
TraceTag(ttidLanUi, "CDbgFlagPage::OnApply is being re-entered! "
|
|
"I'm outta here!");
|
|
|
|
// Don't allow the automatic EndDialog() to work just yet
|
|
SetWindowLong(DWLP_MSGRESULT, PSNRET_INVALID);
|
|
return TRUE;
|
|
}
|
|
|
|
m_hPrevCurs = SetCursor(LoadCursor(NULL, IDC_WAIT));
|
|
|
|
hr = m_pnc->Validate();
|
|
if (hr == S_OK)
|
|
{
|
|
BOOL fReboot = FALSE;
|
|
|
|
// Note: This function becomes reentrant because INetCfg::Apply()
|
|
// has a message pump in it which causes the PSN_APPLY message to
|
|
// be processed twice. This will happen ONLY if the user double-clicks
|
|
// the OK button.
|
|
m_fReentrancyCheck = TRUE;
|
|
|
|
TraceTag(ttidLanUi, "Calling INetCfg::Apply()");
|
|
hr = m_pnc->Apply();
|
|
if (NETCFG_S_REBOOT == hr)
|
|
{
|
|
fReboot = TRUE;
|
|
}
|
|
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
TraceTag(ttidLanUi, "INetCfg::Apply() succeeded");
|
|
hr = m_pnc->Uninitialize();
|
|
}
|
|
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
if (m_fRebootAlreadyRequested || fReboot)
|
|
{
|
|
DWORD dwFlags = QUFR_REBOOT;
|
|
if (!m_fRebootAlreadyRequested)
|
|
dwFlags |= QUFR_PROMPT;
|
|
|
|
(VOID) HrNcQueryUserForReboot(_Module.GetResourceInstance(),
|
|
m_hWnd, IDS_LAN_CAPTION,
|
|
IDS_REBOOT_REQUIRED,
|
|
dwFlags);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Apply "general" properties
|
|
//
|
|
if (SUCCEEDED(hr))
|
|
{
|
|
LANCON_INFO linfo = {0};
|
|
|
|
linfo.fShowIcon = IsDlgButtonChecked(IDC_CHK_ShowIcon);
|
|
|
|
// Set new value of show icon property
|
|
hr = m_plan->SetInfo(LCIF_ICON, &linfo);
|
|
}
|
|
|
|
// Normalize result
|
|
if (S_FALSE == hr)
|
|
{
|
|
hr = S_OK;
|
|
}
|
|
|
|
if (m_hPrevCurs)
|
|
{
|
|
SetCursor(m_hPrevCurs);
|
|
m_hPrevCurs = NULL;
|
|
}
|
|
|
|
// Reset this just in case
|
|
m_fReentrancyCheck = FALSE;
|
|
|
|
TraceError("CDbgFlagPage::OnApply", hr);
|
|
#endif
|
|
return LresFromHr(hr);
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::OnCancel
|
|
//
|
|
// Purpose: Called when the Networking page is cancelled.
|
|
//
|
|
// Arguments:
|
|
// idCtrl []
|
|
// pnmh []
|
|
// bHandled []
|
|
//
|
|
// Returns:
|
|
//
|
|
// Author: danielwe 3 Jan 1998
|
|
//
|
|
// Notes:
|
|
//
|
|
LRESULT CDbgFlagPage::OnCancel(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
|
|
{
|
|
HRESULT hr = S_OK;
|
|
#if 0
|
|
AssertSz(m_pnc, "I need a NetCfg object!");
|
|
|
|
hr = m_pnc->Uninitialize();
|
|
|
|
TraceError("CDbgFlagPage::OnCancel", hr);
|
|
#endif
|
|
return LresFromHr(hr);
|
|
}
|
|
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::OnDeleteItem
|
|
//
|
|
// Purpose: Called when the LVN_DELETEITEM message is received
|
|
//
|
|
// Arguments:
|
|
// idCtrl []
|
|
// pnmh []
|
|
// bHandled []
|
|
//
|
|
// Returns:
|
|
//
|
|
// Author: danielwe 3 Nov 1997
|
|
//
|
|
// Notes:
|
|
//
|
|
LRESULT CDbgFlagPage::OnDeleteItem(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
|
|
{
|
|
NM_LISTVIEW * pnmlv = reinterpret_cast<NM_LISTVIEW *>(pnmh);
|
|
#if 0
|
|
LvDeleteItem(m_hwndLV, pnmlv->iItem);
|
|
#endif
|
|
return 0;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::OnClick
|
|
//
|
|
// Purpose: Called in response to the NM_CLICK message
|
|
//
|
|
// Arguments:
|
|
// idCtrl []
|
|
// pnmh []
|
|
// fHandled []
|
|
//
|
|
// Returns:
|
|
//
|
|
// Author: danielwe 1 Dec 1997
|
|
//
|
|
// Notes:
|
|
//
|
|
LRESULT CDbgFlagPage::OnClick(int idCtrl, LPNMHDR pnmh, BOOL& fHandled)
|
|
{
|
|
#if 0
|
|
OnListClick(m_hwndLV, m_hWnd, m_pnc, m_punk,
|
|
m_pnccAdapter, &m_listBindingPaths, FALSE);
|
|
#endif
|
|
return 0;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::OnDbClick
|
|
//
|
|
// Purpose: Called in response to the NM_DBLCLK message
|
|
//
|
|
// Arguments:
|
|
// idCtrl []
|
|
// pnmh []
|
|
// fHandled []
|
|
//
|
|
// Returns:
|
|
//
|
|
// Author: danielwe 1 Dec 1997
|
|
//
|
|
// Notes:
|
|
//
|
|
LRESULT CDbgFlagPage::OnDbClick(int idCtrl, LPNMHDR pnmh, BOOL& fHandled)
|
|
{
|
|
#if 0
|
|
OnListClick(m_hwndLV, m_hWnd, m_pnc, m_punk,
|
|
m_pnccAdapter, &m_listBindingPaths, TRUE);
|
|
#endif
|
|
return 0;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::OnKeyDown
|
|
//
|
|
// Purpose: Called in response to the LVN_KEYDOWN message
|
|
//
|
|
// Arguments:
|
|
// idCtrl []
|
|
// pnmh []
|
|
// fHandled []
|
|
//
|
|
// Returns:
|
|
//
|
|
// Author: danielwe 1 Dec 1997
|
|
//
|
|
// Notes:
|
|
//
|
|
LRESULT CDbgFlagPage::OnKeyDown(int idCtrl, LPNMHDR pnmh, BOOL& fHandled)
|
|
{
|
|
LV_KEYDOWN* plvkd = (LV_KEYDOWN*)pnmh;
|
|
#if 0
|
|
OnListKeyDown(m_hwndLV, &m_listBindingPaths, plvkd->wVKey);
|
|
#endif
|
|
return 0;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Member: CDbgFlagPage::OnItemChanged
|
|
//
|
|
// Purpose: Called when the LVN_ITEMCHANGED message is received
|
|
//
|
|
// Arguments:
|
|
// idCtrl []
|
|
// pnmh []
|
|
// bHandled []
|
|
//
|
|
// Returns:
|
|
//
|
|
// Author: danielwe 10 Nov 1997
|
|
//
|
|
// Notes:
|
|
//
|
|
LRESULT CDbgFlagPage::OnItemChanged(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
|
|
{
|
|
NM_LISTVIEW * pnmlv = reinterpret_cast<NM_LISTVIEW *>(pnmh);
|
|
#if 0
|
|
HANDLES handles;
|
|
|
|
Assert(pnmlv);
|
|
|
|
// Reset the buttons and the description text based on the changed selection
|
|
LvSetButtons(m_handles);
|
|
#endif
|
|
return 0;
|
|
}
|
|
|
|
#endif // ENABLETRACE
|