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

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

?? newmenu.cpp

?? vc++的技巧查找方式源代碼。
?? CPP
?? 第 1 頁 / 共 5 頁
字號(hào):

    // only need for the rest, can be optimized
    {
      // We need a brush (can be doted)
      CBrush TempBrush(EndColor);
      pDC->FillRect(Rect,&TempBrush);
    }
    n-=4;
    for(int dn=0;dn<=n;dn+=4)
    {
      BYTE ActRed = (BYTE)(MulDiv(int(EndRed)-StartRed,dn,n)+StartRed);
      BYTE ActGreen = (BYTE)(MulDiv(int(EndGreen)-StartGreen,dn,n)+StartGreen);
      BYTE ActBlue = (BYTE)(MulDiv(int(EndBlue)-StartBlue,dn,n)+StartBlue);

      CRect TempRect; 
      if(bHorizontal)
      {
        TempRect = CRect(CPoint(Rect.left+dn,Rect.top),CSize(4,Rect.Height()));
      }
      else
      {
        TempRect = CRect(CPoint(Rect.left,Rect.top+dn),CSize(Rect.Width(),4));
      }
      CBrush TempBrush(RGB(ActRed,ActGreen,ActBlue));
      pDC->FillRect(TempRect,&TempBrush);
    }
  }
}

/////////////////////////////////////////////////////////////////////////////
// CMenuTheme for drawing border and the rest

typedef void (CNewMenu::*pItemMeasureFkt) (LPMEASUREITEMSTRUCT lpMIS, BOOL bIsMenubar);
typedef void (CNewMenu::*pItemDrawFkt) (LPDRAWITEMSTRUCT lpDIS, BOOL bIsMenubar);
typedef BOOL (CNewMenu::*pEraseBkgndFkt) (HWND hWnd, HDC hDC);

typedef void (CMenuTheme::*pDrawMenuBorder)( HWND hWnd, HDC hDC, CPoint screen);

class CMenuTheme
{
public:
  CMenuTheme();

  CMenuTheme(DWORD dwThemeId, 
             pItemMeasureFkt pMeasureItem,
             pItemDrawFkt pDrawItem,
             pItemDrawFkt pDrawTitle,
             DWORD dwFlags=0);

  virtual ~CMenuTheme();
  virtual BOOL OnInitWnd(HWND hWnd);
  virtual BOOL OnUnInitWnd(HWND hWnd);

  virtual BOOL DoDrawBorder();

  virtual BOOL OnDrawBorder(HWND hWnd, HDC hDC);
  virtual BOOL OnEraseBkgnd(HWND hWnd, HDC hDC);
  virtual BOOL OnNcCalcSize(HWND hWnd, NCCALCSIZE_PARAMS* pCalc);
  virtual BOOL OnWindowPosChanging(HWND hWnd, LPWINDOWPOS pPos);
  virtual BOOL OnCalcFrameRect(HWND hWnd,LPRECT pRect);

  void DrawShade( HWND hWnd, HDC hDC, CPoint screen);
  void DrawSmalBorder( HWND hWnd, HDC hDC);
  void DrawFrame(CDC* pDC, CRect rectOuter, CRect rectInner, COLORREF crBorder);


public:
  DWORD m_dwThemeId;
  DWORD m_dwFlags;

  pItemMeasureFkt m_pMeasureItem;
  pItemDrawFkt m_pDrawItem;
  pItemDrawFkt m_pDrawTitle;

  CSize m_BorderTopLeft;
  CSize m_BorderBottomRight;
};

/////////////////////////////////////////////////////////////////////////////
// CMenuThemeXP for drawing border and the rest

class CMenuThemeXP :public CMenuTheme
{
public:
  CMenuThemeXP(DWORD dwThemeId, 
                pItemMeasureFkt pMeasureItem,
                pItemDrawFkt pDrawItem,
                pItemDrawFkt pDrawTitle,
                DWORD dwFlags=0);

  virtual BOOL OnDrawBorder(HWND hWnd, HDC hDC);
  virtual BOOL OnEraseBkgnd(HWND hWnd, HDC hDC);
};

/////////////////////////////////////////////////////////////////////////////
// CNewMenuHook important class for subclassing menus!

class CNewMenuHook
{
public:
  class CMenuHookData 
  {
  public:
    CMenuHookData(HWND hWnd,BOOL bSpecialWnd) 
      : m_dwData(bSpecialWnd),m_bDrawBorder(TRUE),m_Point(0,0)
    {
      // Safe actual menu
      m_hMenu = CNewMenuHook::m_hLastMenu;
      // Reset for the next menu
      CNewMenuHook::m_hLastMenu = NULL;

      // Save actual border setting etc.
      m_dwStyle = GetWindowLong(hWnd, GWL_STYLE) ;
      m_dwExStyle = GetWindowLong(hWnd, GWL_EXSTYLE); 
    }

    DWORD m_dwStyle;
    DWORD m_dwExStyle;

    CPoint m_Point;
    DWORD m_dwData;

    BOOL m_bDrawBorder;
    HMENU m_hMenu;
  }; 

public:
  CNewMenuHook();
  ~CNewMenuHook();

public:
  static CMenuHookData* GetMenuHookData(HWND hWnd);

  static BOOL AddTheme(CMenuTheme*);
  static CMenuTheme* RemoveTheme(DWORD dwThemeId);
  static CMenuTheme* FindTheme(DWORD dwThemeId);

private:
  static LRESULT CALLBACK NewMenuHook(int code, WPARAM wParam, LPARAM lParam);
  static BOOL CheckSubclassing(HWND hWnd,BOOL bSpecialWnd);
  static LRESULT CALLBACK SubClassMenu(HWND hWnd,  UINT uMsg, WPARAM wParam,  LPARAM lParam );
  static void UnsubClassMenu(HWND hWnd);
 
  static BOOL SubClassMenu2(HWND hWnd,  UINT uMsg, WPARAM wParam,  LPARAM lParam, DWORD* pResult);

public:
  static HMENU m_hLastMenu;
  static DWORD m_dwMsgPos; 

private:
  static HMODULE m_hLibrary;
  static HHOOK HookOldMenuCbtFilter;
  // an map of actual opened Menu and submenu
  static CTypedPtrMap<CMapPtrToPtr,HWND,CMenuHookData*> m_MenuHookData;
  // Stores list of all defined Themes
  static CTypedPtrList<CPtrList, CMenuTheme*>* m_pRegisteredThemesList; 
};

/////////////////////////////////////////////////////////////////////////////
// CNewMenuIconLock Helperclass for reference-counting !

class CNewMenuIconLock
{
  CNewMenuIcons* m_pIcons;

public:
  CNewMenuIconLock(CNewMenuIcons* pIcons):m_pIcons(pIcons)
  {
    m_pIcons->AddRef();
  }

  ~CNewMenuIconLock()
  {
    m_pIcons->Release();
  }
  operator CNewMenuIcons*(){return m_pIcons;}
};

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

IMPLEMENT_DYNAMIC(CNewMenuIcons,CObject); 

CNewMenuIcons::CNewMenuIcons()
: m_lpszResourceName(NULL),
  m_hInst(NULL),
  m_nColors(0),
  m_crTransparent(CLR_NONE),
  m_dwRefCount(0)
{
}

CNewMenuIcons::~CNewMenuIcons()
{
  if(m_lpszResourceName && !IS_INTRESOURCE(m_lpszResourceName))
  {
    delete (LPTSTR)m_lpszResourceName;
  }
}

int CNewMenuIcons::AddRef()
{
  if(this==NULL)
    return NULL;

  return ++m_dwRefCount;
}

int CNewMenuIcons::Release()
{
  if(this==NULL)
    return NULL;

  DWORD dwCount = --m_dwRefCount;
  if(m_dwRefCount==0)
  {
    if(CNewMenu::m_pSharedMenuIcons)
    {
      POSITION pos = CNewMenu::m_pSharedMenuIcons->Find(this);
      if(pos)
      {
        CNewMenu::m_pSharedMenuIcons->RemoveAt(pos);
      }      
    }
    delete this;
  }
  return dwCount;
}



#if defined(_DEBUG) || defined(_AFXDLL)
// Diagnostic Support
void CNewMenuIcons::AssertValid() const
{
  CObject::AssertValid();
}

void CNewMenuIcons::Dump(CDumpContext& dc) const
{
  CObject::Dump(dc);
  dc << _T("NewMenuIcons: ") << _T("\n"); 
}

#endif


BOOL CNewMenuIcons::DoMatch(LPCTSTR lpszResourceName, HMODULE hInst)
{
  if(hInst==m_hInst && lpszResourceName)
  {
    if(IS_INTRESOURCE(m_lpszResourceName))
      return (lpszResourceName==m_lpszResourceName);
    
    return (_tcscmp(lpszResourceName,m_lpszResourceName)==0);
  }
  return FALSE;
}

BOOL CNewMenuIcons::DoMatch(WORD* pIconInfo, COLORREF crTransparent)
{
  if(m_crTransparent==crTransparent && pIconInfo!=NULL)
  {
    CNewMenuIconInfo* pInfo = (CNewMenuIconInfo*)pIconInfo;

    // Check for the same resource ID
    if( pInfo->wBitmapID && IS_INTRESOURCE(m_lpszResourceName) &&
        ((UINT)(UINT_PTR)m_lpszResourceName)==pInfo->wBitmapID)
    {
      int nCount = (int)m_IDs.GetSize();
      WORD* pID = pInfo->ids();
      for(int nIndex=0 ; nIndex<nCount ; nIndex++,pID++)
      {
        if( (*pID)==0 || m_IDs.GetAt(nIndex)!=(*pID) )
        {
          return FALSE;
        }
      }
      return TRUE;
    }
  }
  return FALSE;
} 

int CNewMenuIcons::FindIndex(UINT nID)
{
  int nIndex = (int)m_IDs.GetSize();
  while(nIndex--)
  {
    if(m_IDs.GetAt(nIndex)==nID)
    {
      return nIndex*MENU_ICONS;
    }
  }
  return -1;
}

BOOL CNewMenuIcons::GetIconSize(int* cx, int* cy)
{
  return ::ImageList_GetIconSize(m_IconsList,cx,cy);
}

CSize CNewMenuIcons::GetIconSize()
{
  int cx=0;
  int cy=0;
  if(::ImageList_GetIconSize(m_IconsList,&cx,&cy))
  {
    return CSize(cx,cy);
  }
  return CSize(0,0);
}

void CNewMenuIcons::OnSysColorChange()
{
  if(m_lpszResourceName!=NULL)
  {
    int cx=16,cy=16;
    if(GetIconSize(&cx, &cy) && LoadBitmap(cx,cy,m_lpszResourceName,m_hInst))
    {
      MakeImages();
    }
  }
} 

BOOL CNewMenuIcons::LoadBitmap(int nWidth, int nHeight, LPCTSTR lpszResourceName, HMODULE hInst)
{
  m_nColors = 0;
  HBITMAP hBitmap = LoadColorBitmap(lpszResourceName,hInst,&m_nColors);
  if(hBitmap!=NULL)
  {
    CBitmap bitmap;
    bitmap.Attach(hBitmap);
    if(m_IconsList.GetSafeHandle())
    {
      m_IconsList.DeleteImageList();
    }
    m_IconsList.Create(nWidth,nHeight,ILC_COLORDDB|ILC_MASK,0,10); 
    m_IconsList.Add(&bitmap,m_crTransparent);

    return TRUE;
  }
  return FALSE;
}

BOOL CNewMenuIcons::LoadToolBar(WORD* pIconInfo, COLORREF crTransparent)
{
  BOOL bResult = FALSE;
  m_crTransparent = crTransparent;
  CNewMenuIconInfo* pInfo = (CNewMenuIconInfo*)pIconInfo; 
  
  if (LoadBitmap(pInfo->wWidth,pInfo->wHeight,MAKEINTRESOURCE(pInfo->wBitmapID)))
  {
    SetResourceName(MAKEINTRESOURCE(pInfo->wBitmapID));

    WORD* pID = pInfo->ids();
    while(*pID)
    {
      UINT nID = *(pID++);
      m_IDs.Add(nID);
      bResult = TRUE;
    }
    MakeImages();
  } 
  return bResult;
}

void CNewMenuIcons::SetResourceName(LPCTSTR lpszResourceName)
{
  ASSERT_VALID(this);
  ASSERT(lpszResourceName != NULL);

  if(m_lpszResourceName && !IS_INTRESOURCE(m_lpszResourceName))
  {
    delete (LPTSTR)m_lpszResourceName;
  }
  if( lpszResourceName && !IS_INTRESOURCE(lpszResourceName))
  {
    m_lpszResourceName = new TCHAR[_tcslen(lpszResourceName)+1];
    _tcscpy((LPTSTR)m_lpszResourceName,lpszResourceName);
  }
  else
  {
    m_lpszResourceName = lpszResourceName;
  }
}

BOOL CNewMenuIcons::LoadToolBar(LPCTSTR lpszResourceName, HMODULE hInst)
{
  ASSERT_VALID(this);

  SetResourceName(lpszResourceName);

  m_hInst = hInst;

  // determine location of the bitmap in resource
  if(hInst==0)
  {
    hInst = AfxFindResourceHandle(lpszResourceName, RT_TOOLBAR);
  }
  HRSRC hRsrc = ::FindResource(hInst, lpszResourceName, RT_TOOLBAR);
  
  if (hRsrc == NULL)
  { // Special purpose when you try to load it from a dll 30.05.2002
    if(AfxGetResourceHandle()!=hInst)
    {  
      hInst = AfxGetResourceHandle();
      hRsrc = ::FindResource(hInst, lpszResourceName, RT_TOOLBAR);
    }
    if (hRsrc == NULL)
      return FALSE;
  }

  HGLOBAL hGlobal = LoadResource(hInst, hRsrc);
  if (hGlobal == NULL)
    return FALSE;

  CToolBarData* pData = (CToolBarData*)LockResource(hGlobal);
  if (pData == NULL)
    return FALSE;

  BOOL bResult = FALSE;
  ASSERT(pData->wVersion == 1);
  
  if(LoadBitmap(pData->wWidth,pData->wHeight,lpszResourceName,hInst))
  {
    // Remove all previous ID's
    m_IDs.RemoveAll();
    for (int i = 0; i < pData->wItemCount; i++)
    { 
      UINT nID = pData->items()[i];
      if (nID)
      {
        m_IDs.Add(nID);
        bResult = TRUE;
      }
    }
  }

  UnlockResource(hGlobal);
  FreeResource(hGlobal);
  
  MakeImages();
  
  return bResult;
}

int CNewMenuIcons::AddGloomIcon(HICON hIcon, int nIndex)
{
  ICONINFO iconInfo;
  ZeroMemory(&iconInfo,sizeof(iconInfo));
  if(!GetIconInfo(hIcon,&iconInfo))
    return -1;

  CSize nSize = GetIconSize();
  CDC myDC;
  myDC.CreateCompatibleDC(0);

  CBitmap bmColor;
  bmColor.Attach(iconInfo.hbmColor);
  CBitmap bmMask;
  bmMask.Attach(iconInfo.hbmMask);

  CBitmap* pOldBitmap = myDC.SelectObject(&bmColor);
  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,DarkenColor(50,crPixel));
    }
  }
  myDC.SelectObject(pOldBitmap);
  if(nIndex==-1)
    return m_IconsList.Add(&bmColor,&bmMask);

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

int CNewMenuIcons::AddGrayIcon(HICON hIcon, int nIndex)
{
  ICONINFO iconInfo;
  ZeroMemory(&iconInfo,sizeof(iconInfo));
  if(!GetIconInfo(hIcon,&iconInfo))
    return -1;

  CSize nSize = GetIconSize();
  CDC myDC;
  myDC.CreateCompatibleDC(0);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99国产精品久久99| 亚洲成人黄色小说| 国产一本一道久久香蕉| 欧美变态凌虐bdsm| 一本大道久久a久久综合婷婷| 国产在线播放一区三区四| 久久精品国产一区二区三| 午夜激情一区二区| 日韩精品成人一区二区在线| 亚洲成人激情自拍| 亚洲成av人片一区二区梦乃 | 久久99精品国产麻豆婷婷| 日韩一区二区影院| 色婷婷综合久久久中文字幕| 丁香桃色午夜亚洲一区二区三区| 奇米色777欧美一区二区| 一区二区三区欧美日| 亚洲视频在线一区二区| 欧美一区二区在线看| 麻豆成人久久精品二区三区小说| 国产人成亚洲第一网站在线播放 | 国产一区二区毛片| 奇米888四色在线精品| 久久99久久99| 99riav久久精品riav| 国产精品性做久久久久久| 男人操女人的视频在线观看欧美| 日韩国产一二三区| 激情另类小说区图片区视频区| 久久机这里只有精品| 狠狠色狠狠色合久久伊人| 狠狠色丁香婷综合久久| 国产麻豆精品视频| 色猫猫国产区一区二在线视频| 91女神在线视频| 色哟哟日韩精品| 欧美va亚洲va在线观看蝴蝶网| 国产女人水真多18毛片18精品视频| 日韩精品一区二区三区中文精品| 7777精品伊人久久久大香线蕉 | 久久久午夜精品| 国产精品色婷婷| 亚洲女性喷水在线观看一区| 亚洲午夜免费电影| 精久久久久久久久久久| 午夜成人免费电影| 91精彩视频在线| 国产亚洲一区二区三区在线观看| 亚洲成av人综合在线观看| 国产成人av自拍| 欧美一激情一区二区三区| 国产欧美日韩精品a在线观看| 看片的网站亚洲| 欧美一区二区免费观在线| 亚洲欧美激情插 | 亚洲免费观看高清| 91论坛在线播放| 国产福利精品一区二区| 国产精品久线观看视频| 国产福利一区二区三区在线视频| 久久综合色8888| 国产在线播放一区| 国产欧美一区二区精品忘忧草 | 成人黄页毛片网站| 久久99精品国产麻豆婷婷洗澡| 欧美日韩国产区一| 亚洲第一狼人社区| 91精品婷婷国产综合久久性色| 看国产成人h片视频| 欧美高清在线视频| 9i看片成人免费高清| 亚洲国产成人私人影院tom| 久久精品免费看| 日韩美女视频19| 欧美麻豆精品久久久久久| 国产成人综合网| 亚洲婷婷综合久久一本伊一区| 91丨九色丨尤物| 国产美女一区二区三区| 亚洲欧美国产三级| 国产欧美精品一区二区三区四区 | 麻豆精品在线看| 一区二区国产盗摄色噜噜| 精品国产亚洲一区二区三区在线观看| 99久久精品费精品国产一区二区 | 亚洲综合色成人| 欧美日韩国产色站一区二区三区| 天堂久久一区二区三区| 欧美亚洲丝袜传媒另类| 国内精品嫩模私拍在线| 6080午夜不卡| 国产精品18久久久久久久久| 国产精品女同互慰在线看| 亚洲理论在线观看| 日本成人中文字幕在线视频| 国产一区 二区| 成人免费视频caoporn| 人人超碰91尤物精品国产| 蜜桃传媒麻豆第一区在线观看| 国产精品99久久久久久有的能看| 久久精品国产亚洲一区二区三区| 成人性色生活片免费看爆迷你毛片| 91成人网在线| 欧美国产精品v| 久久99热这里只有精品| 国产色产综合色产在线视频| 成人免费看片app下载| 成人av免费网站| 欧洲一区在线电影| 91在线观看视频| 大尺度一区二区| 国产传媒久久文化传媒| 91在线观看下载| 欧美日韩一卡二卡| 久久久久久久久一| 亚洲天堂精品在线观看| 青青草成人在线观看| 成人精品高清在线| 日韩欧美卡一卡二| 一级做a爱片久久| 国产91精品久久久久久久网曝门| 色婷婷av久久久久久久| 精品日产卡一卡二卡麻豆| 亚洲精选一二三| 亚洲福利一区二区| 国产真实乱对白精彩久久| 欧美在线免费观看视频| 国产精品麻豆久久久| 国内精品不卡在线| 日韩欧美色电影| 一区二区三区中文在线| 成人精品一区二区三区中文字幕| 日韩精品在线看片z| 亚洲精品视频观看| 欧美在线视频日韩| 婷婷成人激情在线网| 亚洲成人1区2区| 欧美激情中文字幕| 国产精品乱码一区二三区小蝌蚪| 国产精品麻豆视频| 婷婷六月综合网| 一区二区三区中文在线观看| 中文字幕亚洲在| 亚洲欧美色综合| 国产精品一二三区| 久久久久久久综合色一本| 麻豆免费精品视频| 日本一区二区三级电影在线观看| 亚洲风情在线资源站| 春色校园综合激情亚洲| 久久新电视剧免费观看| 日韩成人免费看| 久久久亚洲午夜电影| 精品一区二区免费| 欧美韩日一区二区三区四区| 国产成人精品亚洲777人妖| 欧美成人乱码一区二区三区| 国产精品乡下勾搭老头1| 欧美激情艳妇裸体舞| 在线观看一区二区精品视频| 欧美一区二区在线免费播放| 日本不卡123| 国产精品久久毛片a| 欧美一区二区私人影院日本| 日本va欧美va精品发布| 欧美tickling网站挠脚心| 色94色欧美sute亚洲线路二| 亚洲精品网站在线观看| 欧美国产一区二区| 蜜臀精品一区二区三区在线观看| 色噜噜狠狠成人网p站| 国产在线精品一区二区三区不卡| 亚洲精品国产第一综合99久久| 日韩精品一区二区三区视频在线观看| 成人免费高清视频| 丝袜美腿高跟呻吟高潮一区| 亚洲欧美区自拍先锋| 国产日韩欧美精品在线| 精品国产91乱码一区二区三区 | 国产精品理论在线观看| 欧美一区二区三区成人| 这里只有精品免费| 91.xcao| 欧美一区二区三区在线电影| 精品视频免费看| 欧美久久久久免费| 欧美一区二区国产| 欧美日韩国产天堂| 日韩久久久久久| 精品久久久久99| 国产精品久久三| 亚洲一区二区三区美女| 亚洲男人天堂一区| 亚洲午夜日本在线观看| 亚洲不卡一区二区三区| 日本成人在线视频网站| 国产精品中文有码| 色综合久久六月婷婷中文字幕| 91官网在线免费观看| 8x8x8国产精品|