// MainControlDlg.h : header file // #if !defined(AFX_MAINCONTROLDLG_H__65CF5826_1C58_40C9_9ED1_EF85A6FB369E__INCLUDED_) #define AFX_MAINCONTROLDLG_H__65CF5826_1C58_40C9_9ED1_EF85A6FB369E__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "PUBLIB2\CommonInterface.h" #define MAX_INSTANCE 8 #define MAX_FILTER 16 #define MAX_MEDIATYPE 16 #define COMMAND_MODE_DEFAULT 0 #define COMMAND_MODE_FORCETRUE 1 #define COMMAND_MODE_FORCEFALSE 2 struct TREEITEMDATA{ IProcessCtrl * pManager; DWORD data[3]; HTREEITEM item; }; struct CardLoadInfo; class CMainControlDlg; class CDeviceLister; ///////////////////////////////////////////////////////////////////////////// // CInstManager class CInstManager { public: virtual BOOL Activate(BOOL bActivate)=0; virtual BOOL OnCommandCapture(int Mode)=0; virtual BOOL OnCommandApply()=0; virtual BOOL OnCommandRestore()=0; virtual BOOL OnCommandDefault()=0; virtual BOOL OnComponentCommand(UINT nID)=0; virtual void OnTreeSelchanging(NMHDR* pNMHDR, LRESULT* pResult)=0; virtual BOOL AttatchToContainer(BOOL bAttatch)=0; }; ///////////////////////////////////////////////////////////////////////////// // CInstanceManager class CInstanceManager:public IInstanceManager ,public CInstManager { public: // virtual HRESULT STDMETHODCALLTYPE QueryInterface( REFIID riid,void __RPC_FAR *__RPC_FAR *ppvObject); virtual ULONG STDMETHODCALLTYPE AddRef( void); virtual ULONG STDMETHODCALLTYPE Release( void); // virtual HRESULT STDMETHODCALLTYPE GetMainWindowHandle(); virtual BOOL STDMETHODCALLTYPE SetMediaTypes(LONG mediaCount, MEDIATYPE_MULTICHANNEL* mediaTypes[],BOOL bCurrent); virtual BOOL STDMETHODCALLTYPE SetMediaTypeDetail(LONG mediaIndex, LONG chIndex,MEDIATYPE_BASE* mediaType,BOOL bCurrent); virtual HRESULT STDMETHODCALLTYPE ProcessMediaData(ULONG mediaIndex,ULONG linCh,MEDIADATA_BASE* MediaData,ReleaseMediaFunc relFunc); virtual HRESULT STDMETHODCALLTYPE GetDriverDLL(); virtual HRESULT STDMETHODCALLTYPE GetActivationCode(); //Initialize UI ... methods.. virtual BOOL STDMETHODCALLTYPE AddTreeViewItem(IProcessCtrl * pProcess,DWORD IconID,char* text,DWORD v1,DWORD v2,DWORD v3); virtual BOOL STDMETHODCALLTYPE AddTreeViewItemFormatted(IProcessCtrl * pProcess,DWORD IconID,DWORD v1,DWORD v2,DWORD v3,char *format,...); virtual BOOL STDMETHODCALLTYPE SelectTreeViewItem(IProcessCtrl * pProcess,BOOL bSelect,DWORD v1,DWORD v2,DWORD v3); virtual BOOL STDMETHODCALLTYPE SetTreeViewAddPosition(IProcessCtrl * pProcess,DWORD v1,DWORD v2,DWORD v3); virtual BOOL STDMETHODCALLTYPE DeleteTreeViewItem(IProcessCtrl * pProcess,DWORD v1,DWORD v2,DWORD v3); virtual BOOL STDMETHODCALLTYPE EmptyTreeView(IProcessCtrl * pProcess); virtual HRESULT STDMETHODCALLTYPE AdjustTreeViewLevel(BOOL bIncrease); virtual HRESULT STDMETHODCALLTYPE NotifyWindowInfo(IPrismIIWindowManage* pWndMng,UINT idx,WindowNotify uMsg,ULONG param); virtual HRESULT STDMETHODCALLTYPE AddToolbarButton(IProcessCtrl * pProcess,UINT uCmd,UINT iIcon,LPCSTR pText,BOOL bCheck,BOOL bOn); virtual HRESULT STDMETHODCALLTYPE InitializeContext(); virtual HRESULT STDMETHODCALLTYPE UninitizlizeContext(); virtual HRESULT STDMETHODCALLTYPE SetTimer(IProcessCtrl* pProc,UINT id,UINT uElapse); virtual HRESULT STDMETHODCALLTYPE KillTimer(IProcessCtrl* pProc,UINT id); virtual HRESULT STDMETHODCALLTYPE ProcessMediaCallback(DWORD callbackParamType,DWORD apiIndex,DWORD param1,DWORD param2,DWORD param3); public: CInstanceManager(); virtual ~CInstanceManager(); virtual BOOL Create(CMainControlDlg* pWnd,CTabCtrl* pTab,CardLoadInfo* pLoadInfo,DVRAUTHINFO authInfo[],int Count,HIMAGELIST himl1,HIMAGELIST himl2); virtual BOOL Activate(BOOL bActivate); virtual BOOL OnCommandCapture(int Mode); virtual BOOL OnCommandApply(); virtual BOOL OnCommandRestore(); virtual BOOL OnCommandDefault(); virtual BOOL OnComponentCommand(UINT nID); virtual BOOL AttatchToContainer(BOOL bAttatch); virtual void OnTreeSelchanging(NMHDR* pNMHDR, LRESULT* pResult); protected: private: CTreeCtrl m_Tree; CToolBarCtrl m_Toolbar; IPrismIICardManager* m_CardManager;//¹Ýµå½Ã ÀÖ¾î¾ß ÇϹǷÎ.. ±×¸®°í Çϳª¸¸ Á¸ÀçÇÑ´Ù. IPrismIIFilter* m_Filters[MAX_FILTER]; IProcessCtrl* m_Components[MAX_FILTER+MAX_FILTER+1]; PRISMEXTDLLINFO * m_DllInfos[MAX_FILTER+MAX_FILTER+1]; IPrismIIPlugIn* m_PlugIns[MAX_FILTER]; int m_FilterCount; int m_cComponent; int m_PlugInCount; CMainControlDlg *m_pSite; TREEITEMDATA *m_itemDatas; int m_itemCount; volatile LONG m_refCount; //loading time ¿¡ »ç¿ëÇÏ´Â º¯¼öµé.. HTREEITEM m_lastItem; HTREEITEM m_curItem; IProcessCtrl * m_LoadingControl; CWindowContainer* m_pContainer; private: int FindTreeViewItem(IProcessCtrl * pProcess,DWORD v1,DWORD v2,DWORD v3); int GetEmptyIndex(); struct { int nFilter;//ÇØ´ç media¸¦ ó¸®ÇÏ´Â ÇÊÅÍÀÇ ÃÑ °³¼ö BYTE fltIdx[MAX_FILTER];// BYTE mediaIdx[MAX_FILTER];// }m_mediaMap[MAX_MEDIATYPE];//max media types per card manager.... struct{ int nMedia; BYTE mediaIdx[MAX_MEDIATYPE]; }m_idxMap[MAX_FILTER]; BOOL m_bCapture; //// void StopProcessCtrls(); static DWORD WINAPI StopCaptureThreadProc(LPVOID lpParam); DWORD StopCaptureThreadProcInternal(); BOOL m_bStopping; public: int GetComponentCount(){return m_cComponent;} IProcessCtrl* GetComponent(int index){return m_Components[index];} PRISMEXTDLLINFO* GetComponentDllInfo(int index){return m_DllInfos[index];} }; ///////////////////////////////////////////////////////////////////////////// // CHollowTabCtrl class CHollowTabCtrl : public CTabCtrl { // Construction public: CHollowTabCtrl(); // Attributes public: // Operations public: // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CHollowTabCtrl) //}}AFX_VIRTUAL // Implementation public: virtual ~CHollowTabCtrl(); // Generated message map functions protected: //{{AFX_MSG(CHollowTabCtrl) afx_msg BOOL OnEraseBkgnd(CDC* pDC); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; ///////////////////////////////////////////////////////////////////////////// // CMainInstManager class CMainInstManager:public CInstManager { public: CMainInstManager(); virtual ~CMainInstManager(); virtual BOOL Create(CMainControlDlg* pWnd,CTabCtrl* pTab,HIMAGELIST himl1,HIMAGELIST himl2); virtual BOOL Activate(BOOL bActivate); virtual BOOL OnCommandCapture(int Mode); virtual BOOL OnCommandApply(); virtual BOOL OnCommandRestore(); virtual BOOL OnCommandDefault(); virtual BOOL OnComponentCommand(UINT nID); virtual BOOL AttatchToContainer(BOOL bAttatch){return TRUE;} virtual void OnTreeSelchanging(NMHDR* pNMHDR, LRESULT* pResult); void AddLogSettingTreeItems(); private: CTreeCtrl m_Tree; CMainControlDlg *m_pSite; BOOL m_bCapture; }; ///////////////////////////////////////////////////////////////////////////// // CMainControlDlg class CMainControlDlg : public CDialog { // Construction public: BOOL AddDll(const char* fileName, DWORD category); CMainControlDlg(CWnd* pParent = NULL); // standard constructor BOOL GetPageRect(LPRECT pRc); void NotifyWindowInfo(IPrismIIWindowManage* pWndMng,UINT idx,WindowNotify uMsg,ULONG param); CWindowContainer m_Container; // Dialog Data //{{AFX_DATA(CMainControlDlg) enum { IDD = IDD_PRISMII_DIALOG }; //}}AFX_DATA CHollowTabCtrl m_TabCtrl; // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CMainControlDlg) public: virtual BOOL PreTranslateMessage(MSG* pMsg); protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL void OnTabSelchanging(NMHDR* pNMHDR, LRESULT* pResult); void OnTreeSelchanging(NMHDR* pNMHDR, LRESULT* pResult); CInstManager* m_Managers[MAX_INSTANCE]; CMainInstManager* m_MainInst; CInstanceManager* m_InstManagers[MAX_INSTANCE]; int m_cManager; // Implementation protected: HICON m_hIcon; BOOL m_bUpdating; // Generated message map functions //{{AFX_MSG(CMainControlDlg) virtual BOOL OnInitDialog(); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnDestroy(); afx_msg BOOL OnEraseBkgnd(CDC* pDC); afx_msg void OnTimer(UINT nIDEvent); //}}AFX_MSG afx_msg BOOL AFX_MSG_CALL OnToolTipMsg(UINT, NMHDR*, LRESULT*); DECLARE_MESSAGE_MAP() afx_msg void OnCommandCapture(); afx_msg void OnCommandApply(); afx_msg void OnCommandRestore(); afx_msg void OnCommandDefault(); afx_msg void OnCommandClose(); afx_msg void OnCommandTest(); afx_msg void OnComponentCommand(UINT nID); HIMAGELIST m_himl1; HIMAGELIST m_himl2; CInstManager* m_CurInstMng; friend class CMainInstManager; CPageDllStatus m_pageStatus; CPageModelList m_pageModel; CPageLogSettingGlobal m_pageLogGlobal; CPageLogSettingComponent m_pageLogComp; struct{ IPrismIIWindowManage* pWndMng; UINT idx; }m_WindowOrder[64]; UINT m_nWindow; HWND GetWindowHandle(UINT OrderIdx); ISettingStorage* m_pStorage; CFont * m_Font; public: CDeviceLister* m_pDeviceLister; CToolBarCtrl m_Toolbar; protected: #define MAX_TIMER 32 IProcessCtrl* m_pTimerProc[MAX_TIMER]; UINT m_TimerIDs[MAX_TIMER]; public: BOOL SetTimer(IProcessCtrl* pProc,UINT id,UINT nElapse); BOOL KillTimer(IProcessCtrl* pProc,UINT id); }; ///////////////////////////////////////////////////////////////////////////// // CParamDlg class CParamDlg:public CDialog { public: CParamDlg(){m_local_param=NULL;} CParamDlg(UINT nIDTemplate, CWnd* pParentWnd): CDialog(nIDTemplate, pParentWnd){m_local_param=NULL;} BOOL CreateWithDefaultTempalte(CWnd* pParentWnd){return Create(m_lpszTemplateName,pParentWnd);} BOOL CreateWithDefaultTempalteHWND(HWND hParentWnd){return Create(m_lpszTemplateName,FromHandle(hParentWnd));} virtual ~CParamDlg(){} virtual BOOL SaveSetting(){return TRUE;} void SetParam(LPARAM param){m_local_param=param;} DWORD GetDlgType() { return m_local_param; } protected: DWORD m_local_param; }; ///////////////////////////////////////////////////////////////////////////// // CMessageManager class CMessageManager:public IMessageManager,ILogManager { public: virtual HRESULT STDMETHODCALLTYPE QueryInterface( REFIID riid,void __RPC_FAR *__RPC_FAR *ppvObject); virtual ULONG STDMETHODCALLTYPE AddRef( void); virtual ULONG STDMETHODCALLTYPE Release( void); virtual HRESULT STDMETHODCALLTYPE Show(BOOL bShow); virtual HRESULT STDMETHODCALLTYPE PushErrorCodeF(const char* format,...); virtual HRESULT STDMETHODCALLTYPE PushErrorCodeItem(void* errItem); virtual HRESULT STDMETHODCALLTYPE PushErrorCode(ULONG code, ULONG minorCode, const char* auxMsg,const char* session); virtual HRESULT STDMETHODCALLTYPE LogMessageF(IProcessCtrl* pComp,ULONG code, const char * logMsg,...); virtual HRESULT STDMETHODCALLTYPE LogMessageF2(IProcessCtrl* pComp,ULONG code, BOOL bPrefix, BOOL bLinefeed, const char * logMsg,...); public: CMessageManager(LPCSTR name,CInstanceManager* pInst); ~CMessageManager(); private: LONG volatile m_refCount; int m_index;//index for message dlg tab.. CInstanceManager* m_pInst; char m_name[32]; public: static CRITICAL_SECTION s_cs; }; ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_MAINCONTROLDLG_H__65CF5826_1C58_40C9_9ED1_EF85A6FB369E__INCLUDED_)