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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? visualfx.cpp

?? 一個串口通信的程序
?? CPP
?? 第 1 頁 / 共 5 頁
字號:

  CRect rect;
  GetClientRect(&rect);
  switch (m_nTabPos) {
  case TP_TOP:
    pDC->FillSolidRect(&CRect(0, 0, rect.right, TABWND_HEIGHT), 
                      ::GetSysColor(COLOR_BTNFACE));
    break;
  case TP_BOTTOM:
    pDC->FillSolidRect(&CRect(0, rect.bottom-TABWND_HEIGHT-3, rect.right, rect.bottom), 
                      ::GetSysColor(COLOR_BTNFACE));
    break;
  }
  return TRUE;
}

// Handle couse click on tabs
void TTabWnd::OnLButtonUp(UINT nFlags, CPoint point)
{
  int nNewTab = HitTest(point.x, point.y);
  SetActivePane(nNewTab);
  CWnd::OnLButtonUp(nFlags, point);
}

// Handle resize
LRESULT TTabWnd::OnSizeParent(WPARAM, LPARAM lParam)
{
  if (m_bLockFlag)
    return 0;
  ResizeTab();
  return 0;
}

// Handle resize
void TTabWnd::OnSize(UINT nType, int cx, int cy) 
{
  CWnd::OnSize(nType, cx, cy);
  ResizeTab(cx,cy);
}

// Create a CView derived class as a tab
TTabItem *TTabWnd::CreatePane(LPCTSTR lpszLabel, CRuntimeClass *pViewClass, 
                                 CCreateContext *pContext)
{
  CRect rect, client;
  ASSERT(pViewClass && pContext);

  CWnd *pWnd = (CWnd*)pViewClass->CreateObject();
  if (!pWnd) 
    return NULL;
  
  GetClientRect(&client);
  rect.left = 0;
  rect.top = TABWND_HEIGHT+2;
  rect.right = client.right;
  rect.bottom = client.bottom;

  int dwStyle = AFX_WS_DEFAULT_VIEW;
  if (GetParent()->IsKindOf(RUNTIME_CLASS(CSplitterWnd))) {
    dwStyle &= ~WS_BORDER;
  }

  if (!pWnd->Create(NULL, NULL, dwStyle, rect, this, 13576+m_TabList.size(), pContext))
  {
    TRACE0("Warning: couldn't create client area for tab view\n");
    // pWnd will be cleaned up by PostNcDestroy
    return NULL;
  }

  // Insert new tab object into the list
  TTabItem *pTab = addTab(pWnd,lpszLabel);
  ASSERT(pTab);
  if (m_TabList.size() != 1) {
    pWnd->EnableWindow(FALSE);
    pWnd->ShowWindow(SW_HIDE);
  /*
  // Framework is responsible to set the active view
  } else {
    CWnd *pParent = GetParent();
    if (pParent->IsKindOf(RUNTIME_CLASS(CFrameWnd))) {
      ((CFrameWnd*)pParent)->SetActiveView((CView*)pWnd);
    } else if (pParent->IsKindOf(RUNTIME_CLASS(CSplitterWnd))) {
      ((CSplitterWnd*)pParent)->SetActivePane(0,0,pWnd);
    }
  */
  }
  return pTab;
}

// Create a splitter window as a tab
TTabItem *TTabWnd::CreatePane(LPCTSTR lpszLabel, int nRows, int nCols, 
                                 CWnd *pWnd, UINT nID)
{
  ASSERT(pWnd);
  ASSERT(pWnd->IsKindOf(RUNTIME_CLASS(CSplitterWnd)));

  // Moved to TVisualFramework to handle creation of CSplitterWnd derived classes
  //CSplitterWnd *pWnd = new CSplitterWnd;
  //if (!pWnd) 
  //  return NULL;

  int dwStyle = AFX_WS_DEFAULT_VIEW;
  dwStyle &= ~WS_BORDER;

  CSplitterWnd *pSplitter = (CSplitterWnd*)pWnd;
  if (!pSplitter->CreateStatic(this, nRows, nCols, dwStyle, nID)) {
    TRACE0("Warning: couldn't create client area for tab view\n");
    // pWnd will be cleaned up by PostNcDestroy
    return NULL;
  }

  TTabItem *pTab = addTab(pWnd,lpszLabel);
  ASSERT(pTab);
  if (m_TabList.size() != 1) {
    pWnd->EnableWindow(FALSE);
    pWnd->ShowWindow(SW_HIDE);
  } 

  /*
  // Framework will set the active view
  CWnd *paneWnd = pWnd->GetActivePane();
  if (paneWnd) {
    ((CFrameWnd*)GetParent())->SetActiveView((CView*)paneWnd);
  } else {
    paneWnd = pWnd->GetPane(0,0);
    pWnd->SetActivePane(0,0);
    ((CFrameWnd*)GetParent())->SetActiveView((CView*)paneWnd);
  }
  */

  return pTab;
}

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

// Private constructor
TVisualObject::TVisualObject()
{
}

// Create a plain view
TVisualObject::TVisualObject(DWORD dwId, CCreateContext *pContext, 
                       CRuntimeClass *pClass)
{
  ASSERT(pContext);
  ASSERT(pClass);
  ASSERT(pClass->IsDerivedFrom(RUNTIME_CLASS(CView)));

  zeroAll();
  m_dwId = dwId;
  m_nObjectType = OT_VIEW;
  m_pContext = pContext;
  m_pRuntimeClass = pClass;
  checkStyle();
}

// Create a view within a tab window or a tab window
TVisualObject::TVisualObject(DWORD dwId, LPCTSTR szTitle, CCreateContext *pContext, 
                       CRuntimeClass *pClass, DWORD dwStyle)
{
  ASSERT(szTitle);
  ASSERT(pContext);
  ASSERT(pClass);

  zeroAll();
  m_dwId = dwId;
  if (pClass->IsDerivedFrom(RUNTIME_CLASS(TTabWnd))) {
    m_nObjectType = OT_TAB;
  } else if (pClass->IsDerivedFrom(RUNTIME_CLASS(CView))) {
    m_nObjectType = OT_TABVIEW;
  } else {
    ASSERT(FALSE);
  }
  m_strTitle = szTitle;
  m_pContext = pContext;
  m_pRuntimeClass = pClass;
  m_dwStyle = dwStyle;
  checkStyle();
}

// Create a splitter window
TVisualObject::TVisualObject(DWORD dwId, LPCTSTR szTitle, int nRows, int nCols, 
                       CCreateContext *pContext, DWORD dwStyle)
{
  ASSERT(szTitle);
  ASSERT(pContext);
  ASSERT(nRows);
  ASSERT(nCols);

  zeroAll();
  m_dwId = dwId;
  m_nObjectType = OT_SPLITTER;
  m_strTitle = szTitle;
  m_pContext = pContext;
  m_nRows = nRows;
  m_nCols = nCols;
  m_dwStyle = dwStyle;
  checkStyle();
}

// Create a view within a splitter window
TVisualObject::TVisualObject(DWORD dwId, int nRow, int nCol, CCreateContext *pContext, 
                       CRuntimeClass *pClass, CSize size, DWORD dwStyle)
{
  ASSERT(pContext);
  ASSERT(pClass);
  ASSERT(pClass->IsDerivedFrom(RUNTIME_CLASS(CView)) ||
         pClass->IsDerivedFrom(RUNTIME_CLASS(TTabWnd)));

  zeroAll();
  m_dwId = dwId;
  m_nObjectType = OT_SPLITTERVIEW;
  m_pContext = pContext;
  m_pRuntimeClass = pClass;
  m_nRowIndex = nRow;
  m_nColIndex = nCol;
  m_Size = size;
  m_dwStyle = dwStyle;
  checkStyle();
}

// Create a splitter within a splitter window
TVisualObject::TVisualObject(DWORD dwId, int nRow, int nCol, int nRows, int nCols, 
                       CCreateContext *pContext, DWORD dwStyle)
{
  ASSERT(pContext);
  ASSERT(nRows);
  ASSERT(nCols);

  zeroAll();
  m_dwId = dwId;
  m_nObjectType = OT_SPLITTERSPLITTER;
  m_pContext = pContext;
  m_nRowIndex = nRow;
  m_nColIndex = nCol;
  m_nRows = nRows;
  m_nCols = nCols;
  m_dwStyle = dwStyle;
  checkStyle();
}

TVisualObject::TVisualObject(const TVisualObject& obj)
{
  zeroAll();
  *this = obj;
}

TVisualObject::~TVisualObject()
{
  if (m_hIcon) {
    ::DestroyIcon(m_hIcon);
    m_hIcon = NULL;
  }
}

TVisualObject& TVisualObject::operator=(const TVisualObject& obj)
{
  // No need to copy m_ObjectList since it is populated after
  // this code is executed in STL container
  m_nObjectType = obj.m_nObjectType;
  m_dwId = obj.m_dwId;
  m_pWnd = obj.m_pWnd;
  m_pParent = obj.m_pParent;
  m_strTitle = obj.m_strTitle;
  m_nRows = obj.m_nRows;
  m_nCols = obj.m_nCols;
  m_nRowIndex = obj.m_nRowIndex;
  m_nColIndex = obj.m_nColIndex;
  m_pContext = obj.m_pContext;
  m_pRuntimeClass = obj.m_pRuntimeClass;
  m_Size = obj.m_Size;
  m_bEnabled = obj.m_bEnabled;
  m_dwStyle = obj.m_dwStyle;
  m_cHotKey = obj.m_cHotKey;
  m_hIcon = obj.m_hIcon;
  m_pOwner = obj.m_pOwner;
  m_pFramework = obj.m_pFramework;
  return *this;
}

void TVisualObject::zeroAll(void)
{
  // No need to zero m_ObjectList since it is already empty
  m_nObjectType = OT_UNKNOWN;
  m_dwId = 0;
  m_pWnd = NULL;
  m_pParent = NULL;
  m_strTitle = _T("");
  m_nRows = 0;
  m_nCols = 0;
  m_nRowIndex = 0;
  m_nColIndex = 0;
  m_pContext = NULL;
  m_pRuntimeClass = NULL;
  m_Size = CSize(0,0);
  m_bEnabled = TRUE;
  m_dwStyle = 0;
  m_cHotKey = 0;
  m_pOwner = NULL;
  m_pFramework = NULL;
  m_hIcon = NULL;
}

// Check if style is valid
void TVisualObject::checkStyle(void)
{
  if ((m_dwStyle & TOS_TABTOP) || (m_dwStyle & TOS_TABBOTTOM)) {
    ASSERT(m_pRuntimeClass);
    // Tab position valid only for tab window derived classes
    ASSERT(m_pRuntimeClass->IsDerivedFrom(RUNTIME_CLASS(TTabWnd)));
  }
  if (m_dwStyle & TOS_SELECTED) {
    // Selected valid only for tab panes that are not splitters and tabs
    // In this case, use TVisualFramework::SetActivePane() to set the active pane
    // once the framework is created
    if (m_pRuntimeClass == NULL) {
      // Splitters canot be dynamically create (m_pRuntimeClass is NULL)
      ASSERT((m_nObjectType != OT_SPLITTER) && (m_nObjectType != OT_SPLITTERVIEW));
    } else {
      ASSERT(!m_pRuntimeClass->IsDerivedFrom(RUNTIME_CLASS(TTabWnd)));
    }
  }
}

// Delete the window pointer and optionally destroy the window
void TVisualObject::Destroy(BOOL bDestroyWindow)
{
  if (m_pWnd) {
    if (bDestroyWindow)
      m_pWnd->DestroyWindow();
    delete m_pWnd;
    m_pWnd = NULL;
  }
}

// If this object is a tab window or splitter window that it 
// cannot be focused
BOOL TVisualObject::CanFocus(void)
{
  ASSERT(m_pWnd);

  if (m_pWnd->IsKindOf(RUNTIME_CLASS(CSplitterWnd)) ||
      m_pWnd->IsKindOf(RUNTIME_CLASS(TTabWnd)))
  {
    return FALSE;
  }
  return TRUE;
}

// Set hot key for this tab object
void TVisualObject::SetHotKey(CHAR cHotKey)
{
  m_cHotKey = cHotKey;
}

// Optional: Set description 
void TVisualObject::SetDescription(LPCTSTR szDesc)
{
  m_strDescription = szDesc;
}

// Optional: Set icon for tab and load it from the resource
BOOL TVisualObject::SetIcon(UINT nIconId)
{
  // Cannot specify icon if already specified
  if (m_hIcon)
    return FALSE;

  // Load icon if possible
  if (nIconId == 0) {
    m_hIcon = NULL;
  } else {
    m_hIcon = (HICON)::LoadImage(::AfxGetResourceHandle(), 
                        MAKEINTRESOURCE(nIconId), 
                        IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
    if (m_hIcon == NULL)
      return FALSE;
  }
  return TRUE;
}

// Optional: Return icon handle for tab
HICON TVisualObject::GetIcon(void)
{
  return m_hIcon;
}

// Set this object as active pane
BOOL TVisualObject::SetActivePane(void)
{
  ASSERT(m_pFramework);
  return m_pFramework->SetActivePane(this);
}

// Set this tab to be active tab (not the active pane)
BOOL TVisualObject::SetActiveTab(void)
{
  ASSERT(m_pFramework);
  return m_pFramework->SetActiveTab(this);
}

// Enable/disable this object
BOOL TVisualObject::Enable(BOOL bEnable)
{
  ASSERT(m_pFramework);
  return m_pFramework->Enable(this,bEnable);
}

// Enable/disable tab
BOOL TVisualObject::EnableTab(BOOL bEnable)
{
  ASSERT(m_pFramework);
  return m_pFramework->EnableTab(this,bEnable);
}

// SHow/hide this object
BOOL TVisualObject::ShowTab(BOOL bShow)
{
  ASSERT(m_pFramework);
  return m_pFramework->ShowTab(this,bShow);
}

// Is this object enabled
BOOL TVisualObject::IsEnabled(BOOL& bEnabled)
{
  ASSERT(m_pFramework);
  return m_pFramework->IsEnabled(this,bEnabled);
}

// Is this object enabled
BOOL TVisualObject::IsTabEnabled(BOOL& bEnabled)
{
  ASSERT(m_pFramework);
  return m_pFramework->IsTabEnabled(this,bEnabled);
}

// Is this object visible
BOOL TVisualObject::IsTabVisible(BOOL& bVisible)
{
  ASSERT(m_pFramework);
  return m_pFramework->IsTabVisible(this,bVisible);
}

// Returns TRUE if this object is a tab within a tab window
BOOL TVisualObject::IsTabPane(void)
{
  ASSERT(m_pFramework);
  return m_pFramework->IsTabPane(this);
}

// Returns TRUE if this object is a tab window
BOOL TVisualObject::IsTabWindow(void)
{
  ASSERT(m_pFramework);
  return m_pFramework->IsTabWindow(this);
}

// Returns TRUE if this object is a pane within a splitter window
BOOL TVisualObject::IsSplitterPane(void)
{
  ASSERT(m_pFramework);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看不卡一区| 亚洲婷婷国产精品电影人久久| 7777精品伊人久久久大香线蕉最新版| 日本黄色一区二区| 91精品国产手机| 精品免费99久久| 亚洲欧美日韩国产手机在线 | 亚洲123区在线观看| 日本人妖一区二区| 成人免费毛片嘿嘿连载视频| 99久久99久久免费精品蜜臀| 欧美久久高跟鞋激| 中文字幕av免费专区久久| 亚洲一区日韩精品中文字幕| 三级欧美韩日大片在线看| 国产夫妻精品视频| 欧美三级在线播放| 国产无一区二区| 日韩精品成人一区二区在线| 欧美性高清videossexo| 欧美男男青年gay1069videost| 欧美成人免费网站| 亚洲一区二区在线播放相泽| 韩国成人在线视频| 欧美日韩不卡一区| 亚洲日本青草视频在线怡红院| 日韩国产欧美视频| 欧洲视频一区二区| 亚洲欧洲精品一区二区精品久久久| 一区二区三区在线不卡| 成人丝袜高跟foot| 26uuu亚洲| 韩日av一区二区| 日韩一区二区三区在线视频| 午夜日韩在线观看| 色婷婷久久久综合中文字幕| 国产精品久久久久久久久图文区| 日韩精品免费视频人成| 欧美日韩一区在线| 午夜欧美视频在线观看| 欧美三级电影在线观看| 洋洋成人永久网站入口| 一本色道**综合亚洲精品蜜桃冫| 中文字幕亚洲一区二区av在线| 国产美女视频一区| 国产日产欧美精品一区二区三区| 国产在线精品一区二区夜色 | 欧美精品在线观看播放| 亚洲成人你懂的| 日韩午夜中文字幕| 色婷婷久久一区二区三区麻豆| 国产精品免费视频一区| 成人高清在线视频| 亚洲欧美一区二区久久 | 91一区在线观看| 亚洲激情欧美激情| 7777精品伊人久久久大香线蕉完整版 | 亚洲一区二区精品3399| 337p亚洲精品色噜噜| 久久99精品久久久| 国产精品日产欧美久久久久| 91蜜桃网址入口| 日本vs亚洲vs韩国一区三区| 久久久精品天堂| 欧美日韩免费高清一区色橹橹 | 亚州成人在线电影| 337p日本欧洲亚洲大胆精品| 国产69精品一区二区亚洲孕妇| 亚洲欧洲精品一区二区三区不卡| 欧美日韩在线播放三区| 国产精品自拍网站| 香蕉成人啪国产精品视频综合网| 26uuu欧美日本| 欧美性色综合网| 国产成人aaaa| 亚洲国产精品嫩草影院| 国产午夜亚洲精品午夜鲁丝片| 色悠悠久久综合| 国产成人精品网址| 亚洲v精品v日韩v欧美v专区 | 日韩和欧美一区二区| 国产精品你懂的| 久久你懂得1024| 欧美精品18+| 欧美性猛片xxxx免费看久爱| 成人免费毛片片v| 国产精品中文字幕日韩精品| 国产v综合v亚洲欧| 视频在线观看国产精品| 亚洲曰韩产成在线| 亚洲欧洲国产日本综合| 日韩国产高清在线| 日本成人在线看| 国产精品成人免费在线| 欧美一区二区在线免费观看| 国产精品亚洲а∨天堂免在线| 精品噜噜噜噜久久久久久久久试看| 国产成人a级片| 一本久久精品一区二区| 3atv一区二区三区| 一本大道av伊人久久综合| 北条麻妃国产九九精品视频| 激情五月婷婷综合| 蜜桃av一区二区| 毛片av一区二区| 久久成人久久鬼色| 国产精品99久久久久久似苏梦涵| 久久国产精品色| 国产aⅴ综合色| 一区二区三区影院| 4438亚洲最大| 日韩欧美久久一区| xfplay精品久久| 国产精品女人毛片| 亚洲一区二区视频在线| 天天色天天操综合| 国产在线精品一区二区夜色| 国产99久久久国产精品免费看| 激情av综合网| 色婷婷综合久久久| 日韩美女在线视频| 中文字幕一区在线观看| 亚洲精选视频在线| 狠狠色综合色综合网络| 99久久久久免费精品国产 | 99精品视频一区二区三区| 91成人免费在线| 精品动漫一区二区三区在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲第一精品在线| 国产麻豆视频一区| 欧美日韩国产一级片| 久久无码av三级| 亚洲第一福利一区| 懂色av噜噜一区二区三区av| 欧美在线免费观看亚洲| 欧美精品一区二区三| 亚洲国产精品综合小说图片区| 国精品**一区二区三区在线蜜桃| 91小视频在线免费看| 久久久久久久综合色一本| 亚洲h在线观看| 色激情天天射综合网| 欧美极品少妇xxxxⅹ高跟鞋| 偷拍日韩校园综合在线| 色综合天天天天做夜夜夜夜做| 精品毛片乱码1区2区3区| 视频一区二区三区中文字幕| 色呦呦国产精品| 亚洲人成精品久久久久| 国产东北露脸精品视频| 久久久精品一品道一区| 国产乱人伦精品一区二区在线观看| 日韩精品资源二区在线| 午夜精品久久久久久久99樱桃| 在线观看一区二区视频| 一个色综合av| 欧美三级电影网| 日韩高清不卡一区| 日韩欧美国产一区二区在线播放| 成人av在线一区二区| 国产视频在线观看一区二区三区 | 欧美一区二区大片| 美女爽到高潮91| 精品日韩在线观看| 国产乱人伦偷精品视频不卡| 中文字幕乱码久久午夜不卡| 99国产精品久| 香蕉加勒比综合久久| 日韩精品专区在线影院观看| 国产乱妇无码大片在线观看| 国产亚洲欧洲997久久综合| 成人精品免费看| 图片区小说区国产精品视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 亚洲国产欧美在线| 91视频你懂的| 石原莉奈一区二区三区在线观看| 精品国产髙清在线看国产毛片| 国产·精品毛片| 免费看日韩精品| 亚洲女同女同女同女同女同69| 欧美精品乱人伦久久久久久| 九九精品视频在线看| 亚洲人成网站在线| 精品国产乱码久久久久久牛牛| 99在线精品一区二区三区| 日本最新不卡在线| 一区二区在线观看不卡| 日本一区二区三区在线不卡| 国产女同互慰高潮91漫画| 欧美一区二区播放| 色婷婷久久久综合中文字幕| 国产91在线|亚洲| 国产乱子伦一区二区三区国色天香| 亚洲国产日韩a在线播放| 亚洲欧美一区二区视频| 久久久久国色av免费看影院| 欧美一区二区人人喊爽| 欧美日韩一本到|