156 lines
3.6 KiB
C++
156 lines
3.6 KiB
C++
/*++
|
|
|
|
Copyright (C) 1996-2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
WBEMDLG.H
|
|
|
|
Abstract:
|
|
|
|
History:
|
|
|
|
--*/
|
|
|
|
#ifndef __WBEMTEST_DIALOG__H_
|
|
#define __WBEMTEST_DIALOG__H_
|
|
|
|
#include <windows.h>
|
|
|
|
class CRefCountable
|
|
{
|
|
protected:
|
|
long m_lRefCount;
|
|
public:
|
|
virtual long AddRef() {return ++m_lRefCount;}
|
|
virtual long Release() {return --m_lRefCount;}
|
|
};
|
|
|
|
class CBasicWbemDialog : public CRefCountable
|
|
{
|
|
protected:
|
|
HWND m_hDlg;
|
|
HWND m_hParent;
|
|
BOOL m_bDeleteOnClose;
|
|
BOOL m_bModal;
|
|
|
|
CRefCountable* m_pOwner;
|
|
|
|
static HWND ms_hCurrentModeless;
|
|
public:
|
|
CBasicWbemDialog(HWND hParent = NULL);
|
|
virtual ~CBasicWbemDialog();
|
|
|
|
void SetDeleteOnClose() { m_bDeleteOnClose = TRUE;}
|
|
void SetOwner(CRefCountable* pOwner);
|
|
|
|
public:
|
|
HWND GetHWND() {return m_hDlg;}
|
|
|
|
BOOL EndDialog(int nResult);
|
|
HWND GetDlgItem(int nID) {return ::GetDlgItem(m_hDlg, nID);}
|
|
|
|
WORD GetCheck(int nID);
|
|
void SetCheck(int nID, WORD wCheck);
|
|
|
|
UINT GetDlgItemTextX(int nDlgItem, LPWSTR pStr, int nMaxCount);
|
|
BOOL SetDlgItemText(int nID, LPSTR szStr)
|
|
{return ::SetDlgItemText(m_hDlg, nID, szStr);}
|
|
BOOL SetDlgItemText(int nID, UINT uTextId);
|
|
BOOL SetDlgItemTextX(int nDlgItem, LPWSTR pStr);
|
|
|
|
void AddStringToCombo(int nID, LPSTR szString, DWORD dwItemData=CB_ERR);
|
|
void SetComboSelection (int nID, DWORD dwItemData);
|
|
void AddStringToList(int nID, LPSTR szString);
|
|
|
|
LRESULT GetLBCurSel(int nID);
|
|
LPSTR GetLBCurSelString(int nID);
|
|
LRESULT GetCBCurSel(int nID);
|
|
LPSTR GetCBCurSelString(int nID);
|
|
|
|
void CenterOnParent();
|
|
|
|
BOOL PostUserMessage(HWND hWnd, WPARAM wParam, LPARAM lParam);
|
|
int MessageBox(UINT uTextId, UINT uCaptionId, UINT uType);
|
|
static int MessageBox(HWND hDlg, UINT uTextId, UINT uCaptionId, UINT uType);
|
|
|
|
static BOOL IsDialogMessage(MSG* pmsg);
|
|
static void EnableAllWindows(BOOL bEnable);
|
|
|
|
protected:
|
|
virtual BOOL DlgProc(
|
|
HWND hDlg,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
virtual BOOL OnInitDialog() {return TRUE;}
|
|
virtual BOOL OnCommand(WORD wNotifyCode, WORD wID) {return TRUE;}
|
|
virtual BOOL OnUser(WPARAM wParam, LPARAM lParam)
|
|
{return TRUE;}
|
|
virtual BOOL OnOK();
|
|
virtual BOOL OnCancel();
|
|
virtual BOOL OnDoubleClick(int nID) {return TRUE;}
|
|
virtual BOOL OnSelChange(int nID) {return TRUE;}
|
|
virtual BOOL Verify() {return TRUE;}
|
|
|
|
protected:
|
|
static INT_PTR CALLBACK staticDlgProc(
|
|
HWND hDlg,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
LRESULT MessageLoop();
|
|
};
|
|
|
|
class CWbemDialog : public CBasicWbemDialog
|
|
{
|
|
public:
|
|
int m_ID;
|
|
CWbemDialog(int tID, HWND hParent = NULL) : CBasicWbemDialog(hParent), m_ID(tID) {}
|
|
virtual ~CWbemDialog(){}
|
|
|
|
BOOL Create(BOOL bChild = TRUE);
|
|
INT_PTR Run(HWND hParent = NULL, bool bPopup = false);
|
|
};
|
|
|
|
inline BOOL CWbemDialog::Create(BOOL bChild)
|
|
{
|
|
m_bModal = FALSE;
|
|
m_hDlg = CreateDialogParam(GetModuleHandle(NULL),
|
|
MAKEINTRESOURCE(m_ID),
|
|
(bChild?m_hParent:NULL), &staticDlgProc,
|
|
(LPARAM)(CBasicWbemDialog*)this);
|
|
|
|
ShowWindow(m_hDlg, SW_NORMAL);
|
|
return (m_hDlg != NULL);
|
|
}
|
|
|
|
inline INT_PTR CWbemDialog::Run(HWND hParent, bool bPopup)
|
|
{
|
|
if(hParent != NULL)
|
|
m_hParent = hParent;
|
|
|
|
//Create(TRUE);
|
|
m_bModal = TRUE;
|
|
HWND hCurrentFocus = GetFocus();
|
|
|
|
if(!bPopup)
|
|
EnableAllWindows(FALSE);
|
|
|
|
INT_PTR ptr = DialogBoxParam(GetModuleHandle(NULL),
|
|
MAKEINTRESOURCE(m_ID), m_hParent, &staticDlgProc,
|
|
(LPARAM)(CBasicWbemDialog*)this);
|
|
|
|
if(!bPopup)
|
|
EnableAllWindows(TRUE);
|
|
SetFocus(hCurrentFocus);
|
|
return ptr;
|
|
|
|
}
|
|
|
|
#endif
|