/*++ Copyright (C) 1996-2001 Microsoft Corporation Module Name: WBEMDLG.H Abstract: History: --*/ #ifndef __WBEMTEST_DIALOG__H_ #define __WBEMTEST_DIALOG__H_ #include 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 INT_PTR CALLBACK 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