|
// PSLWindows.h : Declaration of the CPSLWindows
#pragma once
#include "resource.h" // main symbols
#include "GUIDs.h"
#include "AutoObject.h"
#include "PSLExceptions.h"
#include "ProSysLib_i.h"
#include "PSLWindowsFilter.h"
DECLARE_PSL_COLLECTION(Windows, Window)
class ATL_NO_VTABLE CPSLWindows :
public CComObjectRootEx<CComMultiThreadModel>,
public CComCoClass<CPSLWindows, &CLSID_PSLWindows>,
public CWindowsCollection,
public CPSLException<&CLSID_PSLWindows, &IID_IPSLWindows>
{
struct CWndEnumHelper
{
WindowsType * pList; // Collection where the elements should be added;
DWORD dwProcessID; // ID of the current process;
CPSLWindowsFilter::CWindowsFilter * pFilter; // Filter;
};
public:
CPSLWindows();
BEGIN_COM_MAP(CPSLWindows)
COM_INTERFACE_ENTRY(IPSLWindows)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct();
void FinalRelease();
////////////////////////////
// Interface Implementation:
////////////////////////////
STDMETHOD(Update)();
STDMETHOD(Find)(VARIANT Handle, IPSLWindow ** ppValue);
STDMETHOD(get_Filter)(IPSLWindowsFilter ** ppValue);
protected:
virtual HRESULT OnIndexOutOfRange();
virtual HRESULT OnInterfaceAccess();
private:
static bool IsValidWindow(HWND hWnd, CPSLWindowsFilter::CWindowsFilter * pFilter);
static BOOL CALLBACK EnumWndProc(HWND hWnd, LPARAM lParam);
static BOOL CALLBACK EnumChildWndProc(HWND hWnd, LPARAM lParam);
void InternalUpdate(bool bForceUpdate);
CAutoObject<CPSLWindowsFilter> m_Filter;
};
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.