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.
 
 
 
 
 
 

168 lines
3.3 KiB

/*++
Copyright (C) 1997-2001 Microsoft Corporation
Module Name:
Abstract:
History:
--*/
// ParamsPg.cpp : implementation file
//
#include "stdafx.h"
#include "wmitest.h"
#include "WMITestDoc.h"
#include "OpView.h"
#include "OpWrap.h"
#include "ParamsPg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CParamsPg property page
IMPLEMENT_DYNCREATE(CParamsPg, CPropertyPage)
CParamsPg::CParamsPg() : CPropertyPage(CParamsPg::IDD)
{
//{{AFX_DATA_INIT(CParamsPg)
m_strName = _T("");
//}}AFX_DATA_INIT
}
CParamsPg::~CParamsPg()
{
}
void CParamsPg::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CParamsPg)
DDX_Text(pDX, IDC_NAME, m_strName);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CParamsPg, CPropertyPage)
//{{AFX_MSG_MAP(CParamsPg)
ON_BN_CLICKED(IDC_EDIT_INPUT, OnEditInput)
ON_BN_CLICKED(IDC_EDIT_OUT, OnEditOut)
ON_BN_CLICKED(IDC_NULL_IN, OnNullIn)
ON_BN_CLICKED(IDC_NULL_OUT, OnNullOut)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CParamsPg message handlers
BOOL CParamsPg::EditParams(DWORD dwID, IWbemClassObjectPtr &pObj)
{
HRESULT hr;
if (pObj == NULL)
{
//IWbemClassObjectPtr pClass;
if (SUCCEEDED(hr = g_pOpView->GetDocument()->m_pNamespace->GetObject(
L"__PARAMETERS",
WBEM_FLAG_RETURN_WBEM_COMPLETE,
NULL,
&pObj,
NULL)))
{
//_variant_t vValue = dwID == IDS_EDIT_IN_PARAMS ? L"InParams"
//hr =
// pClass->SpawnInstance(
// 0,
// ppObj);
}
if (FAILED(hr))
{
CWMITestDoc::DisplayWMIErrorBox(hr);
return FALSE;
}
}
return CWMITestDoc::EditGenericObject(dwID, pObj);
}
void CParamsPg::OnEditInput()
{
EditParams(IDS_EDIT_IN_PARAMS, m_pObjIn);
}
void CParamsPg::OnEditOut()
{
EditParams(IDS_EDIT_OUT_PARAMS, m_pObjOut);
}
void CParamsPg::OnNullIn()
{
GetDlgItem(IDC_EDIT_INPUT)->EnableWindow(
!IsDlgButtonChecked(IDC_NULL_IN));
}
void CParamsPg::OnNullOut()
{
GetDlgItem(IDC_EDIT_OUT)->EnableWindow(
!IsDlgButtonChecked(IDC_NULL_OUT));
}
BOOL CParamsPg::OnInitDialog()
{
CPropertyPage::OnInitDialog();
if (!m_bNewMethod)
{
m_pClass->GetMethod(
_bstr_t(m_strName),
0,
&m_pObjIn,
&m_pObjOut);
}
GetDlgItem(IDC_NAME)->EnableWindow(m_bNewMethod);
CheckDlgButton(IDC_NULL_IN, m_pObjIn == NULL);
OnNullIn();
CheckDlgButton(IDC_NULL_OUT, m_pObjOut == NULL);
OnNullOut();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CParamsPg::OnOK()
{
if (IsDlgButtonChecked(IDC_NULL_IN))
m_pObjIn = NULL;
if (IsDlgButtonChecked(IDC_NULL_OUT))
m_pObjOut = NULL;
CPropertyPage::OnOK();
}
BOOL CParamsPg::OnKillActive()
{
if (m_strName.IsEmpty())
{
AfxMessageBox(IDS_METHOD_NAME_IS_EMPTY, MB_ICONEXCLAMATION | MB_OK);
return FALSE;
}
return CPropertyPage::OnKillActive();
}