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

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

?? newmenu.cpp

?? vc++的技巧查找方式源代碼。
?? CPP
?? 第 1 頁 / 共 5 頁
字號(hào):
  CBitmap bmColor;
  bmColor.Attach(iconInfo.hbmColor);
  CBitmap bmMask;
  bmMask.Attach(iconInfo.hbmMask);

  CBitmap* pOldBitmap = myDC.SelectObject(&bmColor);
  COLORREF crMenu = CNewMenu::GetMenuBarColor();
  COLORREF crPixel;
  for(int i=0;i<nSize.cx;++i)
  {
    for(int j=0;j<nSize.cy;++j)
    {
      crPixel = myDC.GetPixel(i,j);
      //myDC.SetPixel(i,j,GrayColor(crPixel));
      //myDC.SetPixel(i,j,MidColor(GrayColor(crPixel),crMenu));      
      myDC.SetPixel(i,j,MixedColor(LightenColor(100,GrayColor(crPixel)),crMenu));      
    }
  }
  myDC.SelectObject(pOldBitmap);
  if(nIndex==-1)
    return m_IconsList.Add(&bmColor,&bmMask);

  return (m_IconsList.Replace(nIndex,&bmColor,&bmMask)) ? nIndex: -1;
}

BOOL CNewMenuIcons::MakeImages()
{
  int nCount = m_IconsList.GetImageCount();
  if(!nCount)
    return FALSE;

  CSize nSize = GetIconSize();
  CImageList ilTemp;
  ilTemp.Attach(m_IconsList.Detach()); 
  m_IconsList.Create(nSize.cx,nSize.cy,ILC_COLORDDB|ILC_MASK,0,10);

  for(int nIndex=0;nIndex<nCount;nIndex++)
  {
    HICON hIcon = ilTemp.ExtractIcon(nIndex);
    m_IconsList.Add(hIcon);
    AddGloomIcon(hIcon);
    AddGrayIcon(hIcon);

    DestroyIcon(hIcon);
  }
  return TRUE;
}

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

IMPLEMENT_DYNAMIC(CNewMenuBitmaps,CNewMenuIcons); 

CNewMenuBitmaps::CNewMenuBitmaps()
{
}

CNewMenuBitmaps::~CNewMenuBitmaps()
{
}

int CNewMenuBitmaps::Add(UINT nID, COLORREF crTransparent)
{
  int nIndex = (int)m_IDs.GetSize();
  while(nIndex--)
  {
    if(m_IDs.GetAt(nIndex)==nID)
    {
      return nIndex*MENU_ICONS;
    }
  }
  // Try to load the bitmap for getting dimension
  HBITMAP hBitmap = LoadColorBitmap(MAKEINTRESOURCE(nID),0);
  if(hBitmap!=NULL)
  {
    CBitmap temp;
    temp.Attach(hBitmap);

    BITMAP bitmap;
    ZeroMemory(&bitmap,sizeof(bitmap));
    if(!temp.GetBitmap(&bitmap))
        return -1;

    if(m_IconsList.GetSafeHandle()==NULL)
    {
      m_IconsList.Create(bitmap.bmWidth,bitmap.bmHeight,ILC_COLORDDB|ILC_MASK,0,10);
    }
    else
    {
      CSize nSize = GetIconSize();
      // Wrong nSize?
      if(nSize.cx!=bitmap.bmWidth || nSize.cy!=bitmap.bmHeight)
        return -1;
    }
    m_TranspColors.Add(crTransparent);
    m_IDs.Add(nID);

    nIndex = m_IconsList.Add(&temp,crTransparent); 
    HICON hIcon = m_IconsList.ExtractIcon(nIndex);
    AddGloomIcon(hIcon);
    AddGrayIcon(hIcon);
    DestroyIcon(hIcon);

    //SetBlendImage();
    return nIndex;
  }
  return -1;
}

void CNewMenuBitmaps::OnSysColorChange()
{
  int nCount = (int)m_IDs.GetSize();
  for(int nIndex=0;nIndex<nCount;nIndex+=MENU_ICONS)
  {
    //Todo reload icons
    HICON hIcon = m_IconsList.ExtractIcon(nIndex);
    AddGloomIcon(hIcon,nIndex+1);
    AddGrayIcon(hIcon,nIndex+2);

    DestroyIcon(hIcon);
  }
}

int CNewMenuBitmaps::Add(HICON hIcon, UINT nID)
{
  ICONINFO iconInfo;
  ZeroMemory(&iconInfo,sizeof(iconInfo));
  if(!GetIconInfo(hIcon,&iconInfo))
    return -1;

  CBitmap temp;
  temp.Attach(iconInfo.hbmColor);
  ::DeleteObject(iconInfo.hbmMask);

  BITMAP bitmap;
  ZeroMemory(&bitmap,sizeof(bitmap));
  if(!temp.GetBitmap(&bitmap))
      return -1;

  if(m_IconsList.GetSafeHandle()==NULL)
  {
    m_IconsList.Create(bitmap.bmWidth,bitmap.bmHeight,ILC_COLORDDB|ILC_MASK,0,10);
  }
  else
  {
    CSize nSize = GetIconSize();
    // Wrong nSize?
    if(nSize.cx!=bitmap.bmWidth || nSize.cy!=bitmap.bmHeight)
      return -1;
  }
  if(nID)
  {
    int nIndex = (int)m_IDs.GetSize();
    while(nIndex--)
    {
      if(m_IDs.GetAt(nIndex)==nID)
      {
        // We found the index also replace the icon
        nIndex = nIndex*MENU_ICONS;
        m_IconsList.Replace(nIndex,hIcon);
        AddGloomIcon(hIcon,nIndex+1);
        AddGrayIcon(hIcon,nIndex+2);
        return nIndex;
      }
    }
  }
  COLORREF clr = CLR_NONE;
  m_TranspColors.Add(clr);
  m_IDs.Add(nID);
  int nIndex = m_IconsList.Add(hIcon);
  AddGloomIcon(hIcon);
  AddGrayIcon(hIcon);

  return nIndex;
}

int CNewMenuBitmaps::Add(CBitmap* pBitmap, COLORREF crTransparent)
{
  ASSERT(pBitmap);

  BITMAP bitmap;
  ZeroMemory(&bitmap,sizeof(bitmap));
  if(!pBitmap->GetBitmap(&bitmap))
      return -1;

  if(m_IconsList.GetSafeHandle()==NULL)
  {
    m_IconsList.Create(bitmap.bmWidth,bitmap.bmHeight,ILC_COLORDDB|ILC_MASK,0,10);
  }
  else
  {
    CSize nSize = GetIconSize();
    // Wrong nSize?
    if(nSize.cx!=bitmap.bmWidth || nSize.cy!=bitmap.bmHeight)
      return -1;
  }
  UINT nID = 0;
  m_TranspColors.Add(crTransparent);
  m_IDs.Add(nID);
  int nIndex = m_IconsList.Add(pBitmap,crTransparent);
  HICON hIcon = m_IconsList.ExtractIcon(nIndex);
  AddGloomIcon(hIcon);
  AddGrayIcon(hIcon);
  DestroyIcon(hIcon);
  //SetBlendImage();
  return nIndex;
}

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

IMPLEMENT_DYNAMIC(CNewMenuItemData,CObject); 

CNewMenuItemData::CNewMenuItemData()
: m_nTitleFlags(0),
  m_nFlags(0),
  m_nID(0),
  m_nSyncFlag(0),
  m_pData(NULL),
  m_pMenuIcon(NULL),
  m_nMenuIconOffset(-1)
{
}

CNewMenuItemData::~CNewMenuItemData()
{
  // it's a safe release. Do not care for NULL pointers.
  m_pMenuIcon->Release();
}

LPCTSTR CNewMenuItemData::GetString()
{
  return m_szMenuText;
}
 
void CNewMenuItemData::SetString(LPCTSTR szMenuText)
{
  m_szMenuText = szMenuText;
}

#if defined(_DEBUG) || defined(_AFXDLL)
// Diagnostic Support
void CNewMenuItemData::AssertValid() const
{
  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);

// actual selectet menu-draw mode
CMenuTheme* CNewMenu::m_pActMenuDrawing = NULL;
CTypedPtrList<CPtrList, CNewMenuIcons*>* CNewMenu::m_pSharedMenuIcons = NULL;

                                                                                
// Gloabal logfont for all menutitles
LOGFONT CNewMenu::m_MenuTitleFont = {16, 0, 0, 0, FW_BOLD,
                                    0, 0, 0, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
                                    CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
                                    DEFAULT_PITCH,_T("Arial")};


void CNewMenu::SetMenuTitleFont(CFont* pFont)
{
  ASSERT(pFont);
  pFont->GetLogFont(&m_MenuTitleFont);
}

void CNewMenu::SetMenuTitleFont(LOGFONT* pLogFont)
{
  ASSERT(pLogFont);
  m_MenuTitleFont = *pLogFont;
}

LOGFONT CNewMenu::GetMenuTitleFont()
{
  return m_MenuTitleFont;
}

DWORD CNewMenu::m_dwLastActiveItem = NULL;

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

const Win32Type g_Shell = IsShellType();
BOOL bRemoteSession = FALSE;

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

CNewMenu::CNewMenu(HMENU hParent)
: m_hParentMenu(hParent),
  m_bIsPopupMenu(TRUE),
  m_dwOpenMenu(NULL),
  m_LastActiveMenuRect(0,0,0,0),
  m_pData(NULL)
{
  // 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;
  m_checkmaps=NULL;
  m_checkmapsshare=FALSE;

  // set the color used for the transparent background in all bitmaps
  m_bitmapBackground = CLR_DEFAULT;
}

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

COLORREF CNewMenu::GetMenuBarColor()
{
  if(IsShellType()==WinXP)
  {
    BOOL bFlatMenu = FALSE;
    if(SystemParametersInfo(SPI_GETFLATMENU,0,&bFlatMenu,0) && bFlatMenu==TRUE)
    {
      return GetSysColor(COLOR_MENUBAR);
    }
  }
  return GetSysColor(COLOR_MENU);
}


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());
      #ifdef _TRACE_MENU_
        TRACE(_T("ActiveRect: (%ld,%ld,%ld,%ld)\n"),m_LastActiveMenuRect.left,m_LastActiveMenuRect.top,m_LastActiveMenuRect.right,m_LastActiveMenuRect.bottom);
      #endif 
    }
  }
}

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)
{
  if(!pMenu || !IsMenu(pMenu->m_hMenu))
  {
    return NULL;
  }
  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)
{
  if(!pMenu || !IsMenu(pMenu->m_hMenu))
  {
    return NULL;
  }
  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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美老人xxxx18| 另类小说视频一区二区| 欧美色图12p| 久久国产精品免费| 欧美人与禽zozo性伦| 国产一区二区三区最好精华液| 国产精品国产精品国产专区不片| av一二三不卡影片| 日韩av中文字幕一区二区 | 99精品国产热久久91蜜凸| 亚洲高清免费视频| 久久亚洲综合色| 欧美日韩一二三区| 东方欧美亚洲色图在线| 麻豆国产精品官网| 亚洲综合色噜噜狠狠| xvideos.蜜桃一区二区| 欧美日韩成人激情| 成人sese在线| 国产伦精品一区二区三区在线观看| 一级中文字幕一区二区| 国产日韩欧美在线一区| 欧美一卡2卡3卡4卡| www.成人网.com| 国产在线一区二区| 无码av中文一区二区三区桃花岛| 精品国产乱码久久久久久蜜臀 | 极品少妇xxxx精品少妇| 中文字幕制服丝袜一区二区三区| 日本一区二区三区国色天香| 日韩欧美中文一区二区| 欧美性色综合网| av在线不卡免费看| 国产高清在线精品| 另类综合日韩欧美亚洲| 婷婷一区二区三区| 亚洲成人av电影| 亚洲精品国产品国语在线app| 亚洲色图欧洲色图| 国产精品福利一区二区| 精品精品国产高清a毛片牛牛| 精品欧美一区二区在线观看| 7777女厕盗摄久久久| 欧美性猛片xxxx免费看久爱| 一本到高清视频免费精品| 伊人色综合久久天天人手人婷| 国产日韩影视精品| 久久久久综合网| 国产日韩欧美亚洲| 国产欧美一区二区三区鸳鸯浴 | 99热精品国产| 欧美调教femdomvk| 成人综合在线观看| 国产一区999| 国产精品综合一区二区| 国产一区二区调教| 精品无码三级在线观看视频| 美日韩一区二区| 免费成人在线观看| 国产高清在线精品| 本田岬高潮一区二区三区| 国产在线日韩欧美| 国产91精品入口| 成人性生交大片免费看中文网站| 国产91丝袜在线播放| 99vv1com这只有精品| 91免费视频大全| 91国产成人在线| 一本久道中文字幕精品亚洲嫩| 一本到不卡免费一区二区| 欧美三级电影一区| 日韩三级在线观看| 精品成人一区二区三区四区| 精品少妇一区二区三区视频免付费 | 国产精品一二三区| 青青草一区二区三区| 香蕉久久一区二区不卡无毒影院 | 亚洲免费av网站| 亚洲手机成人高清视频| 蜜臀av一区二区| 国产a视频精品免费观看| 91美女视频网站| 欧美一区二区三区系列电影| 精品少妇一区二区三区在线视频 | 亚洲欧美影音先锋| 亚洲成人你懂的| 国产伦精品一区二区三区免费迷| 丁香另类激情小说| 欧美美女喷水视频| 久久精品欧美一区二区三区不卡 | 精品亚洲成a人| 91在线观看视频| 91麻豆精品91久久久久久清纯 | 日韩一级视频免费观看在线| 精品国产凹凸成av人导航| 日本一区二区三区电影| 自拍偷拍国产精品| 午夜欧美大尺度福利影院在线看| 日本不卡一二三区黄网| 国产成人久久精品77777最新版本| 91视频观看视频| 欧美精品在线观看播放| 国产欧美日韩精品a在线观看| 一卡二卡欧美日韩| 国产成人在线看| 日韩精品一区二区三区在线观看| 中文久久乱码一区二区| 亚洲另类在线制服丝袜| 国产原创一区二区| 在线精品国精品国产尤物884a| 欧美tk—视频vk| 亚洲国产视频在线| 国产成人av一区二区三区在线 | 久久激五月天综合精品| 《视频一区视频二区| 日韩av网站在线观看| 成人av手机在线观看| 911精品国产一区二区在线| 成人欧美一区二区三区白人| 免费亚洲电影在线| 在线观看免费一区| 国产精品久久久久aaaa| 韩国v欧美v亚洲v日本v| 4hu四虎永久在线影院成人| 亚洲一区欧美一区| 成人免费高清视频在线观看| 欧美电视剧在线观看完整版| 亚洲一区二区在线免费看| 成人app网站| 欧美一级xxx| 一区二区三区中文字幕精品精品| 国产.欧美.日韩| 精品国产亚洲一区二区三区在线观看 | 精品无人区卡一卡二卡三乱码免费卡 | 欧美日韩美少妇| 亚洲欧美日韩精品久久久久| 国产激情91久久精品导航| 日韩欧美高清在线| 日本伊人色综合网| 日av在线不卡| 91精品国产一区二区三区蜜臀| 亚洲国产成人av好男人在线观看| 成人午夜电影小说| √…a在线天堂一区| 成人app下载| 在线精品亚洲一区二区不卡| 亚洲国产欧美一区二区三区丁香婷 | 1000部国产精品成人观看| www.成人在线| 国产精品国产三级国产aⅴ无密码| 麻豆国产一区二区| 精品国产麻豆免费人成网站| 久久9热精品视频| 欧美一区二区视频在线观看2020| 亚洲成在人线免费| 欧美丰满少妇xxxxx高潮对白 | 国产精品久久久久9999吃药| gogogo免费视频观看亚洲一| 日韩美女啊v在线免费观看| 不卡av电影在线播放| 成人免费在线播放视频| 一本一道久久a久久精品| 亚洲国产美女搞黄色| 欧美精品v日韩精品v韩国精品v| 亚洲成人av电影在线| 欧美在线观看视频一区二区 | 91精品在线麻豆| 精品一区二区三区影院在线午夜| 久久精品亚洲精品国产欧美 | 九九精品一区二区| 国产三级三级三级精品8ⅰ区| 色哟哟国产精品免费观看| 亚洲成人精品一区| 精品国内二区三区| 国产成人在线视频播放| 国产精品麻豆视频| 欧美一区午夜精品| 国产福利电影一区二区三区| 亚洲愉拍自拍另类高清精品| 欧美精品视频www在线观看| 懂色av一区二区三区蜜臀| 一区二区三区中文字幕| 欧美xxxxxxxxx| 97精品国产露脸对白| 一级日本不卡的影视| 久久久精品欧美丰满| 色综合久久88色综合天天免费| 日本在线播放一区二区三区| 日本一区二区三区国色天香| 欧美日韩精品一区视频| 国产麻豆成人精品| 精品国产91九色蝌蚪| 97久久超碰国产精品| 五月婷婷激情综合网| 中文字幕一区视频| 日韩欧美的一区| 欧美喷水一区二区| 国产91在线观看丝袜| 久久99最新地址| 亚洲蜜桃精久久久久久久|