亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? visualfx.h

?? VC&Matlab混合編程實現(xiàn)無線電導航指示器
?? H
字號:
#ifndef __TABWINDOW_H__
#define __TABWINDOW_H__

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#pragma warning(disable: 4786)

#ifndef __AFXEXT_H__
#include <afxext.h>
#endif

#include <list>
#include <map>

using namespace std;

//=============================================================================
// class TTabItem
//
// This class holds a description of one tab
//=============================================================================

class TTabItem
{
private:
  CWnd *m_pWnd;             // Window (view) associated with this tab
  CStatic *m_pCaption;      // Caption of this tab
  BOOL m_bWndEnabled;       // Is window enabled
  BOOL m_bEnabled;          // Is tab enabled
  BOOL m_bVisible;          // Is tab visible
  int m_nMinX;              // Client left X coordinate
  int m_nMaxX;              // Client right X coordinate

public:  HICON m_hIcon;            // Optional icon handle for tab

public:
  TTabItem(CWnd *pParent, LPCTSTR label, HICON hIcon = NULL);
  TTabItem(const TTabItem& obj);
  TTabItem& operator=(const TTabItem& obj);
  virtual ~TTabItem();
  
  void SetRect(CRect& rect);
  void SetFont(CFont *pFont);
  void SetIcon(HICON hIcon);

  CString GetText(void);
  void SetText(LPCTSTR szLabel);

  void Enable(BOOL bEnable);
  void EnableTab(BOOL bEnable);
  void ShowTab(BOOL nShow);
  
  int GetLength(void);
  CWnd *GetSafeWnd(void);

  friend class TTabWnd;
};

typedef list<TTabItem*> TTabItemList;

//=============================================================================
// class TTabWnd
//
//=============================================================================

class TVisualFramework;

class TTabWnd : public CWnd 
{
  DECLARE_DYNCREATE(TTabWnd)

public:
  enum TTabPos { TP_TOP, TP_BOTTOM };

protected:
  CBrush m_BrushBlack, m_BrushLGray;
  CPen m_PenWhite, m_PenWhite2, m_PenBlack, m_PenLGray, m_PenDGray, m_PenDGray2;
  CFont m_Font;

protected:
  int m_nSelectedTab;
  BOOL m_bLockFlag;
  TTabItemList m_TabList;
  TTabPos m_nTabPos;

private:
  TTabItem *findTabItem(int nIndex);

protected:
  void createFont();
  int drawTabTop(CDC *pDC, int x, CRect& client, TTabItem *pItem);
  int drawTabBottom(CDC *pDC, int x, CRect& client, TTabItem *pItem);
  int drawSelTabTop(CDC *pDC, int x, CRect& client, TTabItem *pItem);
  int drawSelTabBottom(CDC *pDC, int x, CRect& client, TTabItem *pItem);
  void drawClient(CDC *pDc, CRect& rect);
  void invalidateTabArea(void);
  TTabItem *addTab(CWnd *pWnd, LPCTSTR szLabel);
  BOOL updateFrame(CFrameWnd *pFrame, CWnd *pWnd);

protected:
  // Following functions are protected since tab window cannot be created outside
  // of the visual framework. Otherwise, we have memory leaks.
  
  // Create a tab window
  virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, 
                      DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, 
                      UINT nID=AFX_IDW_PANE_FIRST, CCreateContext *pContext = NULL);
  // Resize tabs
  virtual void ResizeTab(int cx = -1, int cy = -1);
  // Create pane
  virtual TTabItem *CreatePane(LPCTSTR lpszLabel, CRuntimeClass *pViewClass, 
                                CCreateContext *pContext);
  // Create splitter
	virtual TTabItem *CreatePane(LPCTSTR lpszLabel, int nRows, int nCols, 
                                CWnd *pWnd, UINT nID = AFX_IDW_PANE_FIRST);

public:
  TTabWnd();
  virtual ~TTabWnd();

  int GetTabLength(void);
  int GetTabCount(void);
  CWnd *GetTabWnd(int nIndex);
  CString GetTabLabel(int nIndex);
  void SetTabLabel(int nIndex, LPCTSTR szLabel);

  int GetTabIndex(void);
  int GetTabIndex(CWnd *pWnd);

  void Enable(int nIndex, BOOL bEnable);
  void EnableTab(int nIndex, BOOL bEnable);
  void ShowTab(int nIndex, BOOL bShow);
  
  BOOL IsTabEnabled(int nIndex);
  BOOL IsTabVisible(int nIndex);
  
  void SetFont(CFont *pFont);
  void SetTabPos(TTabPos nTabPos);

  virtual int HitTest(int x, int y);
  virtual int HitTest(CPoint& point);

  // Change active pane
  virtual BOOL SetActivePane(int nIndex, BOOL bActivate = TRUE);

  // Empty functions (implement in derived classes)
  virtual BOOL CanSetActivePane(CWnd *pOldPane, CWnd *pNewPane);
  virtual void OnSetActivePane(CWnd *pOldPane, CWnd *pNewPane);
  
protected:
  //{{AFX_MSG(TTabWnd)
  afx_msg LRESULT OnSizeParent(WPARAM, LPARAM lParam);
  afx_msg BOOL OnEraseBkgnd(CDC* pDC);
  afx_msg void OnPaint();
  afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
  afx_msg void OnDestroy();
  afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	//}}AFX_MSG
  DECLARE_MESSAGE_MAP()

  friend class TVisualFramework;
};

//=============================================================================
// class TVisualObject
//
//=============================================================================

class TVisualObject;
class TVisualFramework;

typedef list<TVisualObject*> TVisualObjectList;
typedef map<DWORD,TVisualObject*> TVisualObjectMap;

class TVisualObject {
public:
  enum TObjectStyle {
    TOS_TABTOP        = 0x00000001, // Tabs on top (tab window)
    TOS_TABBOTTOM     = 0x00000002, // Tabs on bottom (tab window)
    TOS_SELECTED      = 0x00000004  // This tab is active
  };

private:
  enum TObjectType { 
    OT_UNKNOWN,
    OT_SPLITTER,                    // Splitter window
    OT_SPLITTERVIEW,                // View within a splitter window
    OT_SPLITTERSPLITTER,            // Nested splitter window
    OT_TAB,                         // Tab window
    OT_TABVIEW,                     // View within a tab window
    OT_VIEW,                        // Plain view
  };
  
private:
  TObjectType m_nObjectType;
  DWORD m_dwId;                     // Unique identifier of this object
  CWnd *m_pWnd;                     // Window associated with this object
  CWnd *m_pParent;                  // Parent window
  CString m_strTitle;               // Title of this window
  CString m_strDescription;         // Optional description of this window
  int m_nRows;                      // Splitters: number of rows
  int m_nCols;                      // Splitters: number of columns
  int m_nRowIndex;                  // Splitter view: row index
  int m_nColIndex;                  // Splitter view: column index
  CCreateContext *m_pContext;       // Context 
  CRuntimeClass *m_pRuntimeClass;   // Class of this window
  CSize m_Size;                     // Splitter: initial size
  BOOL m_bEnabled;                  // Enable state
  DWORD m_dwStyle;                  // Additonal style (for tab window)
  CHAR m_cHotKey;                   // Optional hot key (for example, '2' for ALT+2)
public:
  HICON m_hIcon;                    // Optional icon for tab

private:
  TVisualObject *m_pOwner;          // Owner of this child (or NULL for root level)
  TVisualFramework *m_pFramework;   // Pointer to framework that owns this object
  TVisualObjectList m_ObjectList;   // Child object list

private:
  TVisualObject();
  void zeroAll(void);
  void checkStyle(void);

public:
  // Create a plain view
  TVisualObject(DWORD dwId, CCreateContext *pContext, 
                CRuntimeClass *pClass);
  // Create a tab window or a view within a tab window
  TVisualObject(DWORD dwId, LPCTSTR szTitle, CCreateContext *pContext, 
                CRuntimeClass *pClass, DWORD dwStyle = 0);
  // Create a splitter window
  TVisualObject(DWORD dwId, LPCTSTR szTitle, int nRows, int nCols, 
                CCreateContext *pContext, DWORD dwStyle = 0); 
  // 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:
  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);
  TVisualObject *findObject(DWORD dwId);
  TVisualObject *findObject(CWnd *pWnd);

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 + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级理论片| 成人免费的视频| 日韩av中文在线观看| 成人免费毛片嘿嘿连载视频| 欧美天天综合网| 国产精品三级视频| 国产自产v一区二区三区c| 欧美三日本三级三级在线播放| 欧美国产欧美综合| 久99久精品视频免费观看| 欧美伊人久久久久久午夜久久久久| 91精品国产综合久久久蜜臀粉嫩| 欧美高清在线一区二区| 日韩经典一区二区| 色综合久久久久综合体桃花网| 26uuu成人网一区二区三区| 日韩精品一区二区三区中文精品| 国产午夜三级一区二区三| 1区2区3区欧美| 麻豆91免费看| 欧美在线观看一区| 久久精品亚洲乱码伦伦中文| 亚洲资源在线观看| 国产精品综合久久| 久久综合国产精品| 成人免费视频免费观看| 亚洲午夜精品在线| 久久久www成人免费无遮挡大片| 成人午夜免费av| 国产精品久99| 日韩精品电影在线| 精品一二三四在线| 欧美色图一区二区三区| 欧美一二三四区在线| 中文字幕中文在线不卡住| 极品销魂美女一区二区三区| 色美美综合视频| 国产丝袜在线精品| 国产一区亚洲一区| 日韩视频123| 日韩av一区二区在线影视| 欧美视频中文字幕| 亚洲国产精品麻豆| 欧美亚洲国产一区在线观看网站| 国产精品九色蝌蚪自拍| 国产精品影音先锋| 久久久久久综合| 国产成人精品一区二| 欧美极品xxx| 欧美亚洲综合色| 国产在线精品一区二区三区不卡| 国产精品色呦呦| 在线观看免费一区| 激情图区综合网| 亚洲激情图片小说视频| 精品国产乱码久久久久久牛牛| 懂色av一区二区夜夜嗨| 亚洲国产精品嫩草影院| 精品处破学生在线二十三| 在线观看视频一区| 狠狠色综合播放一区二区| 亚洲精品乱码久久久久| 国产亚洲精品资源在线26u| 欧美日韩一区二区三区在线 | 91福利在线导航| 国产一区美女在线| 日本午夜精品一区二区三区电影| 久久久久久久免费视频了| 91精品国产免费| 亚洲亚洲人成综合网络| 99re热这里只有精品免费视频| 懂色av噜噜一区二区三区av| 国产精品中文有码| 91在线观看一区二区| 色屁屁一区二区| 91久久国产综合久久| 欧美日韩国产一级| 精品国产三级电影在线观看| 久久影院视频免费| 中文字幕在线不卡| 国产精品久久久爽爽爽麻豆色哟哟| 九九精品一区二区| 日韩在线播放一区二区| 亚洲6080在线| 国产主播一区二区| 成人高清伦理免费影院在线观看| 大白屁股一区二区视频| 92国产精品观看| 欧美日韩亚洲高清一区二区| 欧美一区在线视频| 国产精品乱码一区二三区小蝌蚪| 亚洲欧美日韩国产另类专区| 日韩av在线发布| 97久久久精品综合88久久| 欧美日韩在线直播| 日韩女优视频免费观看| 国产精品第五页| 久久99精品网久久| 91国偷自产一区二区开放时间| 欧美日韩免费电影| 国产精品免费视频一区| 美女在线观看视频一区二区| 91亚洲永久精品| 久久精品亚洲国产奇米99| 亚洲一区二区三区精品在线| 国产丶欧美丶日本不卡视频| 欧美日韩国产乱码电影| 亚洲日本欧美天堂| 成人h动漫精品一区二区| 日韩精品中文字幕在线不卡尤物 | 4438x成人网最大色成网站| 国产精品久久久久影院亚瑟| 精品视频一区三区九区| 久久久电影一区二区三区| 国产裸体歌舞团一区二区| 久久综合九色综合97婷婷| 99国产精品99久久久久久| 亚洲综合av网| www久久精品| 91成人免费在线| 国产在线观看一区二区| 国产精品传媒在线| 欧美一卡二卡在线观看| 成人h精品动漫一区二区三区| 亚洲综合一二三区| 久久精品男人天堂av| 欧美日韩国产免费一区二区| 国产风韵犹存在线视精品| 亚洲综合自拍偷拍| 国产亲近乱来精品视频| 欧美一区二区三区白人| 在线视频国内自拍亚洲视频| 国模冰冰炮一区二区| 香蕉久久一区二区不卡无毒影院| 国产欧美日韩综合| 91精品在线观看入口| 日本韩国精品一区二区在线观看| 久国产精品韩国三级视频| 亚洲第一av色| 一区二区三区在线观看动漫| 日本一区二区三区久久久久久久久不| 51午夜精品国产| 在线观看一区二区精品视频| 成人高清伦理免费影院在线观看| 国内外成人在线| 国产一区二区主播在线| 蜜臀av性久久久久蜜臀aⅴ| 日韩和欧美一区二区| 日韩电影网1区2区| 日韩av在线发布| 国产在线视频一区二区| 韩国女主播一区| 国产高清精品在线| 亚洲在线免费播放| 国产亚洲自拍一区| 久久蜜桃香蕉精品一区二区三区| 欧美性淫爽ww久久久久无| 91免费小视频| 91女神在线视频| 色综合久久综合| 欧美在线免费观看视频| 99久久久久久| 欧美亚洲国产一区在线观看网站| 99久久国产免费看| 97精品国产97久久久久久久久久久久| 蜜乳av一区二区| 国产成人av在线影院| 成人午夜碰碰视频| 91麻豆产精品久久久久久| 欧美日韩视频在线一区二区| 欧美肥妇bbw| 精品福利视频一区二区三区| 国产精品无遮挡| 亚洲免费观看在线视频| 蜜臀va亚洲va欧美va天堂| 国产美女视频91| 色婷婷综合久久久中文字幕| 91精品国产综合久久福利软件| 日本一区二区三区国色天香 | 亚洲人吸女人奶水| 午夜精品福利在线| 成人精品gif动图一区| 欧美福利视频一区| 日韩欧美视频一区| 亚洲大片一区二区三区| 91美女片黄在线观看91美女| 久久久精品人体av艺术| 久久久久久9999| 亚洲午夜久久久久久久久电影院 | 日韩女优制服丝袜电影| 国产精品水嫩水嫩| 日精品一区二区三区| 国产激情视频一区二区在线观看 | 91年精品国产| 亚洲人成在线播放网站岛国| 国产高清成人在线| 国产三级精品三级| 国产美女在线精品| 日本一区二区三区在线观看| 国产成人福利片|