⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 visualfx.h

📁 一个串口通信的程序
💻 H
📖 第 1 页 / 共 2 页
字号:
  // Create a nested splitter window
  TVisualObject(DWORD dwId, int nRow, int nCol, CCreateContext *pContext, 
                CRuntimeClass *pClass, CSize size, DWORD dwStyle = 0);
  // Create a view within a splitter window
  TVisualObject(DWORD dwId, int nRow, int nCol, int nRows, int nCols, 
                CCreateContext *pContext, DWORD dwStyle = 0); 
  TVisualObject(const TVisualObject& obj);
  virtual ~TVisualObject();

  TVisualObject& operator=(const TVisualObject& obj);
  void Destroy(BOOL bDestroyWindow = FALSE);

  BOOL CanFocus(void);
  void SetHotKey(CHAR cHotKey);
  void SetDescription(LPCTSTR szDesc);
  BOOL SetIcon(UINT nIconId);
  HICON GetIcon(void);

  BOOL SetActivePane(void);
  BOOL SetActiveTab(void);

  BOOL Enable(BOOL bEnable);
  BOOL EnableTab(BOOL bEnable);
  BOOL ShowTab(BOOL bShow);

  BOOL IsEnabled(BOOL& bEnabled);
  BOOL IsTabEnabled(BOOL& bEnabled);
  BOOL IsTabVisible(BOOL& bVisible);

  BOOL IsTabPane(void);
  BOOL IsTabWindow(void);
  BOOL IsSplitterPane(void);
  BOOL IsSplitterWindow(void);
  BOOL IsView(void);

  DWORD GetID(void);
  CWnd *GetWnd(void);
  CWnd *GetSafeWnd(void);
  CString GetTitle(void);
  CString GetDescription(void);
  CWnd *GetParentWnd(void);
  TVisualFramework *GetFramework(void);
  TVisualObject *GetOwner(void);

  friend class TVisualFramework;
  friend class TVisualFrameworkIterator;
};

#ifndef _DEBUG

inline DWORD TVisualObject::GetID(void)
  { return m_dwId; }
inline CWnd *TVisualObject::GetWnd(void)
  { return m_pWnd; }
inline CWnd *TVisualObject::GetSafeWnd(void)
  { return ::IsWindow(m_pWnd->m_hWnd) ? m_pWnd : NULL;; }
inline CString TVisualObject::GetTitle(void)
  { return m_strTitle; }
inline CString TVisualObject::GetDescription(void)
  { return m_strDescription; }
inline CWnd *TVisualObject::GetParentWnd(void)
  { return m_pParent; }
inline TVisualFramework *TVisualObject::GetFramework(void)
  { return m_pFramework; }
inline TVisualObject *TVisualObject::GetOwner(void)
  { return m_pOwner; }

#endif

//=============================================================================
// class TVisualFramework
//
//=============================================================================

class TVisualFrameworkIterator;

class TVisualFramework : public CCmdTarget {
	DECLARE_DYNCREATE(TVisualFramework)

private:
  CWnd *m_pOwner;
  TVisualObjectList m_ObjectList;
  TVisualObjectMap m_ObjectMap;

private:
  BOOL m_bEnableCtrlTab;

private:
  TVisualObject *findObject(DWORD dwId);
  TVisualObject *findObject(CWnd *pWnd);
  void execDestroy(TVisualObject *pObject);
  BOOL execCreate(CWnd *pWnd, TVisualObject *pObject);
  BOOL execCreateView(CWnd *pWnd, TVisualObject *pObject);
  BOOL execCreateTabView(CWnd *pWnd, TVisualObject *pObject);
  BOOL execCreateSplitter(CWnd *pWnd, TVisualObject *pObject);
  BOOL execCreateSplitterView(CWnd *pWnd, TVisualObject *pObject);
  BOOL execCreateSplitterSplitter(CWnd *pWnd, TVisualObject *pObject);
  BOOL execCreateTabWnd(CWnd *pWnd, TVisualObject *pObject);
  void setTabWndProperties(TVisualObject *pObject);

public:
  TVisualFramework();
  virtual ~TVisualFramework();

  BOOL Add(TVisualObject *pObject);
  BOOL Add(TVisualObject *pOwner, TVisualObject *pObject);

  virtual BOOL Create(CWnd *pWnd = NULL);
  virtual void Destroy(void);

  CWnd *GetWnd(void);
  CWnd *GetSafeWnd(void);
  CWnd *GetObject(DWORD dwId);
  DWORD GetObject(CWnd *pWnd);
  TVisualObject *Get(DWORD dwId);
  TVisualObject *Get(CWnd *pWnd);

  BOOL IsTabPane(TVisualObject *pObject);
  BOOL IsTabWindow(TVisualObject *pObject);
  BOOL IsSplitterPane(TVisualObject *pObject);
  BOOL IsSplitterWindow(TVisualObject *pObject);
  BOOL IsView(TVisualObject *pObject);

  int GetCount(void);

  TVisualObject *GetActiveTab(TVisualObject *pObject);
  BOOL SetActiveTab(TVisualObject *pObject);

  BOOL SetActivePane(TVisualObject *pObject);
  TVisualObject *GetActivePane(void);

  BOOL Enable(TVisualObject *pObject, BOOL bEnable);
  BOOL EnableTab(TVisualObject *pObject, BOOL bEnable);
  BOOL ShowTab(TVisualObject *pObject, BOOL bEnable);

  BOOL IsEnabled(TVisualObject *pObject, BOOL& bEnabled);
  BOOL IsTabEnabled(TVisualObject *pObject, BOOL& bEnabled);
  BOOL IsTabVisible(TVisualObject *pObject, BOOL& bVisible);

  void SetFont(CFont *pFont);

  void EnableCtrlTab(BOOL bEnable);

  virtual CSplitterWnd *CreateSplitter(DWORD dwId);
  virtual BOOL ProcessMessage(MSG *pMsg);

	//{{AFX_VIRTUAL(TVisualFramework)
	public:
	virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
	//}}AFX_VIRTUAL

protected:
	//{{AFX_MSG(TVisualFramework)
	//}}AFX_MSG

  DECLARE_MESSAGE_MAP()

  friend class TVisualFrameworkIterator;
};

//=============================================================================
// TVisualFrameworkIterator
//
// Iterates thru all visual objects in the framework (including objects that
// cannot be focused like tab windows and splitters)
//=============================================================================

class TVisualFrameworkIterator {
private:
  enum TIteratorType { IT_MAP, IT_LIST };
  TVisualObjectMap *m_pObjectMap;
  TVisualObjectMap::iterator m_MapIt;
  TVisualObjectList *m_pObjectList;
  TVisualObjectList::iterator m_ListIt;
  TIteratorType m_nType;

public:
  TVisualFrameworkIterator(TVisualFramework& obj)
    :m_pObjectMap(&(obj.m_ObjectMap))
  {
    m_MapIt = m_pObjectMap->begin();
    m_nType = IT_MAP;
  }
  TVisualFrameworkIterator(TVisualObject& obj)
    :m_pObjectList(&(obj.m_ObjectList))
  {
    m_ListIt = m_pObjectList->begin();
    m_nType = IT_LIST;
  }
  TVisualObject *operator->()
  {
    return Get();
  }
  TVisualObject *Get(void)
  {
    switch (m_nType) {
    case IT_MAP: return m_MapIt->second;
    case IT_LIST: return *m_ListIt;
    }
    ASSERT(FALSE);
    return NULL;
  }
  int End(void)
  {
    switch (m_nType) {
    case IT_MAP: return (m_MapIt != m_pObjectMap->end()) ? 0 : 1; 
    case IT_LIST: return (m_ListIt != m_pObjectList->end()) ? 0 : 1;
    }
    ASSERT(FALSE);
    return 1;
  }
  int operator++(int)
  { 
    switch (m_nType) {
    case IT_MAP: m_MapIt++; break;
    case IT_LIST: m_ListIt++; break;
    default: ASSERT(FALSE);
    }
    return End();
  }
};

//=============================================================================
// class TVisualFormView
//
//=============================================================================

class TVisualFormView : public CFormView {
	DECLARE_DYNAMIC(TVisualFormView)

protected:
	TVisualFormView(LPCTSTR lpszTemplateName);
	TVisualFormView(UINT nIDTemplate);

public:
  void SetFont(CFont *pFont);

	//{{AFX_MSG(TVisualFormView)
	afx_msg void OnEnable(BOOL bEnable);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

#endif

/*#############################################################################
# End of file VISUALFX.H
#############################################################################*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -