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

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

?? newmenu.cpp

?? 方便的串口監視工具
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
{
  CObject::AssertValid();
}

void CNewMenuItemData::Dump(CDumpContext& dc) const
{
  CObject::Dump(dc);
  dc << _T("MenuItem: ") << m_szMenuText << _T("\n"); 
}

#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

IMPLEMENT_DYNAMIC(CNewMenu,CMenu);

// Stores list of all sub-menus
CTypedPtrArray<CPtrArray, HMENU> CNewMenu::m_AllSubMenus;

// actual selectet menu-draw mode
CMenuTheme* CNewMenu::m_pActMenuDrawing = NULL;

// one instance of the hook for menu-subclassing
static CNewMenuHook MyNewMenuHookInstance;

// color for drawing menubar
int CNewMenu::cCOLOR_MENUBAR = COLOR_MENU;

// how the menu's are drawn in winXP
BOOL CNewMenu::m_bSelectDisable=TRUE;

static Win32Type g_Shell=IsShellType();

CNewMenu::CNewMenu(HMENU hParent)
: m_hParentMenu(hParent),
  m_bIsPopupMenu(FALSE),
  m_dwOpenMenu(NULL),
  m_LastActiveMenuRect(0,0,0,0)
{
  // O.S. - no dynamic icons by default
  m_bDynIcons = FALSE;
  // Icon sizes default to 16 x 16
  m_iconX = 16;
  m_iconY = 15;
  m_selectcheck = -1;
  m_unselectcheck = -1;
  checkmaps=NULL;
  checkmapsshare=FALSE;
  CMenuButton* m_pBar=NULL;	
  // set the color used for the transparent background in all bitmaps
  m_bitmapBackground = CLR_DEFAULT;
}

CNewMenu::~CNewMenu()
{
  DestroyMenu();
}

void CNewMenu::SetLastMenuRect(HDC hDC, LPRECT pRect)
{
  if(!m_bIsPopupMenu)
  {
    HWND hWnd = WindowFromDC(hDC);
    if(hWnd && pRect)
    {
      CRect Temp;
      GetWindowRect(hWnd,Temp);
      m_LastActiveMenuRect = *pRect;
      m_LastActiveMenuRect.OffsetRect(Temp.TopLeft());
    }
  }
}

BOOL CNewMenu::IsNewShell ()
{
  return (g_Shell>=Win95);
}

BOOL CNewMenu::OnMeasureItem(const MSG* pMsg)
{
  if(pMsg->message==WM_MEASUREITEM)
  {
    LPMEASUREITEMSTRUCT lpMIS = (LPMEASUREITEMSTRUCT)pMsg->lParam;
    if(lpMIS->CtlType==ODT_MENU)
    {
      CMenu* pMenu=NULL;
      if(::IsMenu(UIntToHMenu(lpMIS->itemID)) )
      {
        pMenu = CMenu::FromHandlePermanent(UIntToHMenu(lpMIS->itemID) );
      }
      else
      {
        _AFX_THREAD_STATE* pThreadState = AfxGetThreadState ();
        if (pThreadState->m_hTrackingWindow == pMsg->hwnd)
        {
          // start from popup
          pMenu = FindPopupMenuFromIDData(pThreadState->m_hTrackingMenu,lpMIS->itemID,lpMIS->itemData);
        }
        if(pMenu==NULL)
        {
          // start from menubar
          pMenu = FindPopupMenuFromIDData(::GetMenu(pMsg->hwnd),lpMIS->itemID,lpMIS->itemData);
          if(pMenu==NULL)
          {
            // finaly start from system menu.
            pMenu = FindPopupMenuFromIDData(::GetSystemMenu(pMsg->hwnd,FALSE),lpMIS->itemID,lpMIS->itemData);
          }
        }
      }
      if(pMenu!=NULL)
      {
        pMenu->MeasureItem(lpMIS);
        return TRUE;
      }
    }
  }
  return FALSE;
}

CMenu* CNewMenu::FindPopupMenuFromID(HMENU hMenu, UINT nID)
{
  // check for a valid menu-handle
  if ( ::IsMenu(hMenu))
  {
    CMenu *pMenu = CMenu::FromHandlePermanent(hMenu);
    if(pMenu)
    {
      return FindPopupMenuFromID(pMenu,nID);
    }
  }
  return NULL; 
}

CMenu* CNewMenu::FindPopupMenuFromIDData(HMENU hMenu, UINT nID, ULONG_PTR pData)
{
  // check for a valid menu-handle
  if ( ::IsMenu(hMenu))
  {
    CMenu *pMenu = CMenu::FromHandlePermanent(hMenu);
    if(pMenu)
    {
      return FindPopupMenuFromIDData(pMenu,nID,pData);
    }
  }
  return NULL; 
}

CMenu* CNewMenu::FindPopupMenuFromIDData(CMenu* pMenu, UINT nID, ULONG_PTR pData)
{
  ASSERT_VALID(pMenu);
  // walk through all items, looking for ID match
  UINT nItems = pMenu->GetMenuItemCount();
  for (int iItem = 0; iItem < (int)nItems; iItem++)
  {
    CMenu* pPopup = pMenu->GetSubMenu(iItem);
    if (pPopup != NULL)
    {
      // recurse to child popup
      pPopup = FindPopupMenuFromIDData(pPopup, nID, pData);
      // check popups on this popup
      if (pPopup != NULL)
        return pPopup;
    }
    else if (pMenu->GetMenuItemID(iItem) == nID)
    { 
      MENUITEMINFO MenuItemInfo;
      ::ZeroMemory(&MenuItemInfo,sizeof(MenuItemInfo));
      MenuItemInfo.cbSize = sizeof(MenuItemInfo);
      MenuItemInfo.fMask = MIIM_DATA;

      if(pMenu->GetMenuItemInfo(iItem,&MenuItemInfo,TRUE))
      {
        if(MenuItemInfo.dwItemData==pData)
        {
          // it is a normal item inside our popup
          return pMenu;
        }
      }
    }
  }
  // not found
  return NULL;
}

CMenu* CNewMenu::FindPopupMenuFromID(CMenu* pMenu, UINT nID)
{
  ASSERT_VALID(pMenu);
  // walk through all items, looking for ID match
  UINT nItems = pMenu->GetMenuItemCount();
  for (int iItem = 0; iItem < (int)nItems; iItem++)
  {
    CMenu* pPopup = pMenu->GetSubMenu(iItem);
    if (pPopup != NULL)
    {
      // recurse to child popup
      pPopup = FindPopupMenuFromID(pPopup, nID);
      // check popups on this popup
      if (pPopup != NULL)
        return pPopup;
    }
    else if (pMenu->GetMenuItemID(iItem) == nID)
    {
      // it is a normal item inside our popup
      return pMenu;
    }
  }
  // not found
  return NULL;
}

BOOL CNewMenu::DestroyMenu()
{
  // Destroy Sub menus:
  int m,n;
  int numAllSubMenus = (int)m_AllSubMenus.GetUpperBound();
  for(n = numAllSubMenus; n>= 0; n--)
  {
    if(m_AllSubMenus[n]==this->m_hMenu)
      m_AllSubMenus.RemoveAt(n);
  }
  int numSubMenus = (int)m_SubMenus.GetUpperBound();
  for(m = numSubMenus; m >= 0; m--)
  {
    numAllSubMenus = (int)m_AllSubMenus.GetUpperBound();
    for(n = numAllSubMenus; n>= 0; n--)
    {
      if(m_AllSubMenus[n]==m_SubMenus[m])
        m_AllSubMenus.RemoveAt(n);
    }
    delete((CNewMenu *)FromHandle(m_SubMenus[m]));
  }
  m_SubMenus.RemoveAll();
  // Destroy menu data
  int numItems = (int)m_MenuList.GetUpperBound();
  for(m = 0; m <= numItems; m++)
  {
    delete(m_MenuList[m]);
  }
  
  m_MenuList.RemoveAll();
  if(checkmaps&&!checkmapsshare)
  {
    delete checkmaps;
    checkmaps=NULL;
  }
  // Call base-class implementation last:
  return(CMenu::DestroyMenu());
};

int CNewMenu::GetMenuDrawMode()
{
  ASSERT(m_pActMenuDrawing);
  return m_pActMenuDrawing->m_dwThemeId;
}

void CNewMenu::SetMenuDrawMode(UINT mode)
{
  CMenuTheme* pTheme = CNewMenuHook::FindTheme(mode);
  if(pTheme)
  {
    m_pActMenuDrawing = pTheme;
  }
}

HMENU CNewMenu::GetParent()
{
  return m_hParentMenu;
}

BOOL CNewMenu::IsPopup()
{
  return m_bIsPopupMenu;
}

BOOL CNewMenu::SetSelectDisableMode(BOOL mode)
{
  BOOL bOldMode = m_bSelectDisable;
  m_bSelectDisable=mode;

  return bOldMode;
}

BOOL CNewMenu::GetSelectDisableMode()
{
  return m_bSelectDisable;
}

void CNewMenu::MeasureItem( LPMEASUREITEMSTRUCT lpMIS )
{
  ASSERT(m_pActMenuDrawing);

  BOOL bIsMenuBar = IsMenuBar(UIntToHMenu(lpMIS->itemID));

  ((*this).*m_pActMenuDrawing->m_pMeasureItem)(lpMIS,bIsMenuBar);
}

void CNewMenu::DrawItem (LPDRAWITEMSTRUCT lpDIS)
{
  ASSERT(m_pActMenuDrawing);
  
  BOOL bIsMenuBar = m_hParentMenu ? FALSE: ((m_bIsPopupMenu)?FALSE:TRUE);

  (this->*m_pActMenuDrawing->m_pDrawItem)(lpDIS,bIsMenuBar);
}

// Erase the Background of the menu
BOOL CNewMenu::EraseBkgnd(HWND hWnd, HDC hDC)
{
  CDC* pDC = CDC::FromHandle (hDC);
  CRect Rect;
  //  Get the size of the menu... 
  GetClientRect(hWnd, Rect );

  pDC->FillSolidRect (Rect,GetSysColor(cCOLOR_MENUBAR));

  return TRUE;
}

void CNewMenu::DrawTitle(LPDRAWITEMSTRUCT lpDIS,BOOL bIsMenuBar)
{
  ASSERT(m_pActMenuDrawing);
  (this->*m_pActMenuDrawing->m_pDrawTitle)(lpDIS,bIsMenuBar);
}

void CNewMenu::DrawMenuTitle(LPDRAWITEMSTRUCT lpDIS, BOOL bIsMenuBar)
{
  UNREFERENCED_PARAMETER(bIsMenuBar);

  CDC* pDC = CDC::FromHandle(lpDIS->hDC);

  CNewMenuItemData* pMenuData = (CNewMenuItemData*)(lpDIS->itemData);
  ASSERT(pMenuData);

  COLORREF ColA = GetSysColor(COLOR_WINDOW);
  COLORREF ColB = GetSysColor(cCOLOR_MENUBAR);
  
  COLORREF colorMenu = MixedColor(ColA,ColB);

  CRect rcClipBox;
  pDC->GetClipBox(rcClipBox);

  // draw the title bar
  CRect rect = lpDIS->rcItem;
  CPoint TextPoint;

  CFont Font;
  if(pMenuData->m_nTitleFlags&MFT_SIDE_TITLE)
  {
    rect.top = rcClipBox.top;
    rect.bottom = rcClipBox.bottom;
    rect.right += GetSystemMetrics(SM_CXMENUCHECK);
    Font.CreateFont(16, 0, 900, 900, FW_BOLD,
                        0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
                        CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
                        DEFAULT_PITCH,_T("Arial"));

    TextPoint = CPoint(rect.left+2, rect.bottom-4);
    // DrawGradient(pDC,rect,colorMenu,::GetSysColor(COLOR_ACTIVECAPTION),false);
  }
  else
  {
    Font.CreateFont(16, 0, 0, 0, FW_BOLD,
                        0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
                        CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
                        DEFAULT_PITCH,_T("Arial"));

    TextPoint = CPoint(rect.left+2, rect.top);

    // DrawGradient(pDC,rect,::GetSysColor(COLOR_ACTIVECAPTION),colorMenu,true);
  }
  if(pMenuData->m_nTitleFlags&MFT_GRADIENT)
  {
    if(pMenuData->m_nTitleFlags&MFT_SIDE_TITLE)
    {
      DrawGradient(pDC,rect,colorMenu,::GetSysColor(COLOR_ACTIVECAPTION),false);
    }
    else
    {
      DrawGradient(pDC,rect,::GetSysColor(COLOR_ACTIVECAPTION),colorMenu,true);
    }
  }
  else
  {
    if(pMenuData->m_nTitleFlags&MFT_ROUND)
    {
      if(pMenuData->m_nTitleFlags&MFT_SIDE_TITLE)
      {
        TextPoint.y-=2;
        rect.right = rect.left+21;
      }
      else
      {
        TextPoint.x+=10;
      }

      CBrush brush(GetSysColor(COLOR_ACTIVECAPTION));
      CPen* pOldPen = (CPen*)pDC->SelectStockObject(WHITE_PEN);
      CBrush* pOldBrush = pDC->SelectObject(&brush);

      pDC->RoundRect(rect,CPoint(10,10));
      pDC->SelectObject(pOldBrush);
      pDC->SelectObject(pOldPen); 
      
    }
    else
    {
      pDC->FillSolidRect(rect,GetSysColor(COLOR_ACTIVECAPTION));
    }
  }
  if (pMenuData->m_nTitleFlags&MFT_SUNKEN)
  {
    pDC->Draw3dRect(rect,GetSysColor(COLOR_3DSHADOW),GetSysColor(COLOR_3DHILIGHT));
  }

  CFont *pOldFont = pDC->SelectObject(&Font);
  COLORREF oldColor = pDC->SetTextColor(::GetSysColor(COLOR_CAPTIONTEXT));
  int OldMode = pDC->SetBkMode(TRANSPARENT);

  if (pMenuData->m_nTitleFlags&MFT_CENTER)
  {
    SIZE size;
    VERIFY(::GetTextExtentPoint32(pDC->m_hDC,pMenuData->m_szMenuText,pMenuData->m_szMenuText.GetLength(),&size));
    if (pMenuData->m_nTitleFlags&MFT_SIDE_TITLE)
    {
      TextPoint.y = rect.bottom - ((rect.Height()-size.cx)>>1);
    }
    else
    {
      TextPoint.x = rect.left + ((rect.Width()-size.cx)>>1);
    }
  }

  pDC->TextOut(TextPoint.x,TextPoint.y, pMenuData->GetString());

  if(pMenuData->m_nTitleFlags&MFT_LINE)
  {
    if(pMenuData->m_nTitleFlags&MFT_SIDE_TITLE)
    {
      CRect rect2(rect.left+20,rect.top+5,rect.left+22,rect.bottom-5);
      pDC->Draw3dRect(rect2,GetSysColor(COLOR_3DSHADOW),GetSysColor(COLOR_3DHILIGHT));
      rect2.OffsetRect(3,0);
      rect2.InflateRect(0,-10);
      pDC->Draw3dRect(rect2,GetSysColor(COLOR_3DSHADOW),GetSysColor(COLOR_3DHILIGHT));
    }
    else
    {
      CRect rect2(rect.left+2,rect.bottom-7,rect.right-2,rect.bottom-5);
      pDC->Draw3dRect(rect2,GetSysColor(COLOR_3DHILIGHT),GetSysColor(COLOR_3DSHADOW));
      rect2.OffsetRect(0,3);
      rect2.InflateRect(-10,0);
      pDC->Draw3dRect(rect2,GetSysColor(COLOR_3DSHADOW),GetSysColor(COLOR_3DHILIGHT));
    }
  }
  
  pDC->SetBkMode(OldMode);
  pDC->SetTextColor(oldColor);  
  pDC->SelectObject(pOldFont);
}

void CNewMenu::DrawItem_WinXP(LPDRAWITEMSTRUCT lpDIS, BOOL bIsMenuBar)
{
  ASSERT(lpDIS != NULL);
  CDC* pDC = CDC::FromHandle(lpDIS->hDC);
  CRect rect;

  CNewMenuItemData* pMenuData = (CNewMenuItemData*)(lpDIS->itemData);
  ASSERT(pMenuData);

  UINT state = pMenuData->m_nFlags;

  COLORREF ColA = GetSysColor(COLOR_WINDOW);
  COLORREF ColB = GetSysColor(cCOLOR_MENUBAR);

  COLORREF colorMenu = MixedColor(ColA,ColB);
  COLORREF colorBitmap = MixedColor(ColB,ColA);

  COLORREF colorSel = MidColor(ColA,GetSysColor(COLOR_HIGHLIGHT));

  CPen Pen(PS_SOLID,0,GetSysColor(COLOR_HIGHLIGHT));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美午夜片在线看| 亚洲猫色日本管| 亚洲欧美日韩国产另类专区| 亚洲一线二线三线视频| 国产成人免费网站| 欧美老年两性高潮| 亚洲主播在线播放| 北条麻妃国产九九精品视频| 日韩美女一区二区三区四区| 亚洲精品菠萝久久久久久久| 国产不卡视频在线观看| 日韩一区二区三区高清免费看看| 亚洲综合在线视频| 国产成都精品91一区二区三| 91.成人天堂一区| 一区二区高清视频在线观看| 成人免费毛片app| 日本一区二区免费在线观看视频| 麻豆精品视频在线观看视频| 正在播放一区二区| 婷婷成人激情在线网| 在线看一区二区| 亚洲三级在线免费观看| 成人免费看片app下载| 国产日产欧美一区二区视频| 另类欧美日韩国产在线| 欧美一区二区福利视频| 日韩高清欧美激情| 欧美精品v日韩精品v韩国精品v| 亚洲视频综合在线| 99久久夜色精品国产网站| 中文字幕精品综合| 99re在线视频这里只有精品| 国产精品乱码一区二区三区软件 | 精品久久久久久久久久久院品网| 亚洲成人动漫av| 欧美久久久久久久久中文字幕| 伊人色综合久久天天人手人婷| 99re亚洲国产精品| 亚洲女同女同女同女同女同69| 92国产精品观看| 一区二区三区欧美在线观看| 欧美在线你懂的| 日日摸夜夜添夜夜添国产精品 | av电影在线观看不卡| 国产精品久久久久久久久久久免费看| www.色综合.com| 亚洲女女做受ⅹxx高潮| 欧美三级中文字幕| 精品一区二区三区在线观看| 久久久久88色偷偷免费| 99国产精品一区| 亚洲国产成人tv| 精品国产91亚洲一区二区三区婷婷 | 日本成人在线视频网站| 久久综合色综合88| 成人的网站免费观看| 亚洲激情第一区| 日韩欧美国产麻豆| 99热国产精品| 日日嗨av一区二区三区四区| 精品免费国产一区二区三区四区| 99久久精品国产导航| 婷婷久久综合九色综合伊人色| 精品国产一区二区三区久久久蜜月| 国产成人免费高清| 婷婷中文字幕综合| 中文字幕av一区二区三区| 欧美午夜精品理论片a级按摩| 伦理电影国产精品| 一区二区三区在线视频免费| 日韩欧美一级二级三级久久久| 国产丶欧美丶日本不卡视频| 一区二区欧美国产| 国产精品免费aⅴ片在线观看| 欧美人与性动xxxx| 99久久777色| 国产一区欧美一区| 日韩精品欧美成人高清一区二区| 国产亚洲成aⅴ人片在线观看| 欧美色综合影院| 丰满少妇在线播放bd日韩电影| 天堂在线亚洲视频| 18成人在线观看| 久久精品欧美一区二区三区麻豆 | 久久这里只有精品首页| 欧美无人高清视频在线观看| 国产v日产∨综合v精品视频| 日韩精品国产精品| 亚洲最大色网站| 亚洲视频一区二区在线观看| 精品国产亚洲在线| 制服丝袜中文字幕一区| 在线观看91精品国产入口| 成人v精品蜜桃久久一区| 久久 天天综合| 日韩福利电影在线| 视频一区欧美精品| 性做久久久久久免费观看欧美| 中文字幕一区二区三区在线播放| 久久亚洲二区三区| 欧美tickling网站挠脚心| 欧美日本视频在线| 欧美人体做爰大胆视频| 欧美色涩在线第一页| 色94色欧美sute亚洲线路一ni| 99久久精品国产一区| 国产盗摄女厕一区二区三区| 狠狠色伊人亚洲综合成人| 蜜臂av日日欢夜夜爽一区| 丝袜亚洲另类欧美| 偷拍一区二区三区四区| 亚洲综合一二三区| 亚洲国产你懂的| 亚洲第一狼人社区| 日产国产欧美视频一区精品| 日韩精品一区第一页| 天天综合网天天综合色| 日本系列欧美系列| 国产最新精品免费| 成人av资源在线| 色综合天天综合狠狠| 91精彩视频在线| 欧美日本在线一区| 精品久久人人做人人爱| 久久久精品tv| 亚洲人精品午夜| 五月婷婷综合在线| 久久精品国产在热久久| 国产一区二区导航在线播放| 成人晚上爱看视频| 日本精品视频一区二区| 在线播放视频一区| 精品处破学生在线二十三| 国产校园另类小说区| 成人欧美一区二区三区黑人麻豆| 中文字幕一区二区三区蜜月| 一区2区3区在线看| 日韩精品视频网| 国产一区二区精品久久91| 91在线免费视频观看| 欧美精品在线观看播放| 久久久久国产免费免费| 亚洲老妇xxxxxx| 麻豆国产一区二区| 99久久免费国产| 91精品在线免费观看| 国产亚洲美州欧州综合国| 亚洲另类春色国产| 久88久久88久久久| 色综合久久久网| 欧美精品一区二区三区在线| 亚洲免费伊人电影| 国产综合色产在线精品| 欧美中文字幕一区| 国产亚洲精品bt天堂精选| 亚洲国产成人精品视频| 国产xxx精品视频大全| 在线不卡免费av| 亚洲欧洲综合另类| 国产一区二三区好的| 欧美色欧美亚洲另类二区| 国产清纯白嫩初高生在线观看91| 午夜精品爽啪视频| www.成人在线| 欧美精品一区男女天堂| 午夜精品福利一区二区蜜股av| 不卡视频在线观看| 精品国产自在久精品国产| 亚洲午夜免费视频| av亚洲精华国产精华精| 久久先锋影音av| 老鸭窝一区二区久久精品| 色欧美片视频在线观看| 亚洲国产精品精华液ab| 精品在线一区二区三区| 欧美年轻男男videosbes| 最新热久久免费视频| 国产精品18久久久久| 日韩一区二区三免费高清| 亚洲尤物视频在线| 91丝袜美腿高跟国产极品老师| 久久精品亚洲一区二区三区浴池 | 日韩欧美国产电影| 天堂影院一区二区| 欧美亚洲日本国产| 亚洲美女在线一区| 97精品久久久午夜一区二区三区| 国产蜜臀av在线一区二区三区| 狠狠网亚洲精品| 久久久不卡网国产精品二区| 久久99国产精品免费网站| 日韩精品一区二区三区视频| 奇米影视一区二区三区| 欧美一级搡bbbb搡bbbb| 秋霞电影一区二区| 日韩一区二区免费在线电影| 日本成人超碰在线观看| 9191精品国产综合久久久久久| 天堂av在线一区|