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

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

?? flatbar.cpp

?? 這是從賽迪網共享出來的可以直接使用的 GBS lib
?? CPP
字號:
#include "stdafx.h"
#include "flatbar.h"
#include "resource.h"

#ifdef _DEBUG
#undef THIS_FILE
#define new DEBUG_NEW
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif

#ifndef TBSTYLE_FLAT
#define TBSTYLE_FLAT 0x0800	// (in case you don't have the new commctrl.h)
#endif

#ifndef TB_GETIMAGELIST
#define TB_GETIMAGELIST         (WM_USER + 49)
#endif // TB_GETIMAGELIST

#ifndef TB_SETINDENT
#define TB_SETINDENT            (WM_USER + 47)
#endif

BEGIN_MESSAGE_MAP(CFlatToolBar, CToolBar)
	ON_WM_CONTEXTMENU()
  //{{AFX_MSG_MAP(CFlatToolBar)
  ON_WM_WINDOWPOSCHANGING()
	ON_WM_CREATE()
  ON_WM_PAINT()
  ON_WM_NCPAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

IMPLEMENT_DYNAMIC(CFlatToolBar,CToolBar)

BOOL CFlatToolBar::IsAvailable()
{
  return (SendMessage(TB_GETIMAGELIST) != 0);
}

void CFlatToolBar::ShowFlat(BOOL bFlat)
{
  if (bFlat)
  {
    BOOL bAvailable = (SendMessage(TB_GETIMAGELIST) != 0);
    if (bAvailable)
    {
      m_bFlat = TRUE;
      ModifyStyle(0, TBSTYLE_FLAT); // make it flat
      EraseNonClient();
      Invalidate();
    }
  }
  else
  {
    m_bFlat = FALSE;
    ModifyStyle(TBSTYLE_FLAT, 0); // revert to usual look
    EraseNonClient();
    Invalidate();
  }
}

// Because buttons are transparent, we need to repaint the background
void CFlatToolBar::RepaintBackground() 
{
 	CRect rc; GetWindowRect(&rc); // get rect for toolbar
	CWnd* pParent = GetParent();  // get parent windows
	pParent->ScreenToClient(&rc); // convert to parent coords
	pParent->InvalidateRect(&rc); // paint rectangle underneath
}

// Because buttons are transparaent, we need to repaint background if style changes
void CFlatToolBar::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler) 
{
	static CUIntArray styles;
	// save styles
	int nIndexMax = (int)DefWindowProc(TB_BUTTONCOUNT, 0, 0);
	int nIndex;
	for (nIndex = 0; nIndex < nIndexMax; nIndex++) 
	{
		UINT dwStyle = GetButtonStyle(nIndex);
		styles.SetAtGrow(nIndex,dwStyle);
	}
	// default processing
	CToolBar::OnUpdateCmdUI(pTarget,bDisableIfNoHndler);

	// make checked button appear pushed in
	for (nIndex = 0; nIndex < nIndexMax; nIndex++) 
	{
    UINT dwStyle = GetButtonStyle(nIndex); 
    if (dwStyle & TBBS_DISABLED) 
    { 
    // don't touch if disabled (avoids flicker) 
    } 
    else if (dwStyle & TBBS_CHECKBOX) 
    { 
      UINT dwStyleWas = dwStyle; 
      // if checked, make it pressed, else not pressed 
      if (dwStyle & TBBS_CHECKED) 
      { 
        dwStyle |= TBBS_PRESSED; 
      } 
      else if (!(styles[nIndex]&TBBS_CHECKED) && (styles[nIndex]&TBBS_PRESSED)) 
      { 
        dwStyle |= TBBS_PRESSED; 
      } 
      else 
      { 
        dwStyle &= ~TBBS_PRESSED; 
      } 

      // set new style if changed 
      if (dwStyleWas != dwStyle) 
      { 
        SetButtonStyle(nIndex,dwStyle); 
      } 
    } 
  }

	// check for changes to style (buttons presssed/released)
	for (nIndex = 0; nIndex < nIndexMax; nIndex++) 
	{
		UINT dwStyle = GetButtonStyle(nIndex);
		if (styles[nIndex] != dwStyle) 
		{
			//RepaintBackground();	// need to take care of button background
			//Invalidate();   			// repaint toolbar (not just this button)

      //PJ: Optimized code above to only redraw the button
			CRect rect;
			if (DefWindowProc(TB_GETITEMRECT, nIndex, (LPARAM)&rect))
				InvalidateRect(rect, TRUE);    // + erase the background

			break;
		}
	}
}

// Because buttons are transparent, we need to repaint background on size or move
void CFlatToolBar::OnWindowPosChanging(LPWINDOWPOS lpwp) 
{
	// default processing
	CToolBar::OnWindowPosChanging(lpwp);

	// repaint background if size or move
  RepaintBackground();
  PostMessage(WM_NCPAINT);
}

int CFlatToolBar::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CToolBar::OnCreate(lpCreateStruct) == -1)
		return -1;
	
  //Make the toolbar flatstyle
	ModifyStyle(0, TBSTYLE_FLAT);

	return 0;
}

// Draw the separators in the client area
void CFlatToolBar::DrawSeparators() 
{
	CClientDC dc(this); // get a dc for the client area
	DrawSeparators(&dc);     // draw the separators on it
}

// Draw the separators
void CFlatToolBar::DrawSeparators(CClientDC* pDC) 
{
	// horizontal vs vertical
	BOOL ishorz = (m_dwStyle & CBRS_ORIENT_HORZ) != 0;
	// get number of buttons
	int nIndexMax = (int)DefWindowProc(TB_BUTTONCOUNT, 0, 0);
	int nIndex;
	// try each button
	for (nIndex = 0; nIndex < nIndexMax; nIndex++) 
	{
		UINT dwStyle = GetButtonStyle(nIndex);
		UINT wStyle = LOWORD(dwStyle);
		// if it is a separator
		if (wStyle == TBBS_SEPARATOR) 
		{
			// get it's rectangle and width
			CRect rect;
			GetItemRect(nIndex,rect);
			// if small enough to be a true separator
			int w = rect.Width();
			if (w <= 8) 
			{
				if (ishorz) 
				{
					// draw the separator bar in the middle
					CRect rectbar = rect;
					int x = (rectbar.left+rectbar.right)/2;
					rectbar.left = x-1; rectbar.right = x+1;
					rectbar.top += 2; rectbar.bottom -= 2;
					pDC->Draw3dRect(rectbar,::GetSysColor(COLOR_3DSHADOW), ::GetSysColor(COLOR_3DHILIGHT));
				} 
				else 
				{
					// draw the separator bar in the middle
					CRect rectbar = rect;
					rectbar.left = rectbar.left - m_sizeButton.cx;
					rectbar.right = rectbar.left + m_sizeButton.cx;
					rectbar.top = rectbar.bottom+1;
					rectbar.bottom = rectbar.top+3;
					int y = (rectbar.top+rectbar.bottom)/2;
					rectbar.top = y-1; rectbar.bottom = y+1;
					rectbar.left += 2; rectbar.right -= 2;
					pDC->Draw3dRect(rectbar,::GetSysColor(COLOR_3DSHADOW), ::GetSysColor(COLOR_3DHILIGHT));
				}
			}
		}
	}
}

// Paint the toolbar
void CFlatToolBar::OnPaint() 
{
	// standard toolbar
	CToolBar::OnPaint();

	// plus separators if required
  if (m_bFlat)
	  DrawSeparators();
}

// Erase the non-client area (borders) - copied from MFC implementation
void CFlatToolBar::EraseNonClient() 
{
	// get window DC that is clipped to the non-client area
	CWindowDC dc(this);
	CRect rectClient;
	GetClientRect(rectClient);
	CRect rectWindow;
	GetWindowRect(rectWindow);
	ScreenToClient(rectWindow);
	rectClient.OffsetRect(-rectWindow.left, -rectWindow.top);
	dc.ExcludeClipRect(rectClient);
	
	// draw borders in non-client area
	rectWindow.OffsetRect(-rectWindow.left, -rectWindow.top);
	DrawBorders(&dc, rectWindow);
	
	// erase parts not drawn
	dc.IntersectClipRect(rectWindow);
	SendMessage(WM_ERASEBKGND, (WPARAM)dc.m_hDC);

  if (m_bFlat)
  	DrawGripper(&dc, rectWindow); // <-- my addition to draw gripper
}

// Draw the gripper at left or top
void CFlatToolBar::DrawGripper(CWindowDC *pDC, CRect& rectWindow) 
{
	CRect gripper = rectWindow;
	gripper.DeflateRect(1,1);
	if (m_dwStyle & CBRS_FLOATING) 
	{
		// no grippers
	} 
	else if (m_dwStyle & CBRS_ORIENT_HORZ) 
	{
		// gripper at left
    gripper.left++;
		gripper.right = gripper.left+3;
    gripper.top += 2; gripper.bottom -= 2;
		pDC->Draw3dRect(gripper,::GetSysColor(COLOR_3DHIGHLIGHT),	::GetSysColor(COLOR_3DSHADOW));
	} 
	else 
	{
		// gripper at top
    gripper.top++;
		gripper.bottom = gripper.top+3;
		gripper.left += 2; gripper.right -= 2;
		pDC->Draw3dRect(gripper,::GetSysColor(COLOR_3DHIGHLIGHT), ::GetSysColor(COLOR_3DSHADOW));
	}
}

// Paint the non-client area - copied from MFC implementatios
void CFlatToolBar:: OnNcPaint() 
{
	EraseNonClient();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜av在线| 精品免费视频一区二区| 日韩激情av在线| 久久亚洲二区三区| 91电影在线观看| 国产精品一区二区不卡| 亚洲国产精品久久久久婷婷884 | 精品欧美黑人一区二区三区| 成人免费观看av| 麻豆视频一区二区| 亚洲国产精品人人做人人爽| 中文字幕一区二区在线观看| 欧美电影精品一区二区| 欧美午夜理伦三级在线观看| 精彩视频一区二区三区| 7777精品伊人久久久大香线蕉完整版 | 日韩免费视频一区二区| 亚洲黄色片在线观看| 91香蕉视频黄| 亚洲在线观看免费视频| 国产精品乡下勾搭老头1| 午夜欧美在线一二页| 中文字幕一区av| 久久精品一区二区三区不卡牛牛 | 51精品久久久久久久蜜臀| 91亚洲国产成人精品一区二三| 久99久精品视频免费观看| 亚洲超碰精品一区二区| 亚洲精品大片www| 亚洲国产成人在线| 久久九九久久九九| 欧美精品一区二区三区蜜桃视频| 69成人精品免费视频| 色婷婷av久久久久久久| 色综合久久中文字幕| 99精品视频在线免费观看| 国产九九视频一区二区三区| 国产综合色精品一区二区三区| 麻豆国产精品官网| 秋霞国产午夜精品免费视频 | 夫妻av一区二区| 激情图片小说一区| 精品一区二区免费在线观看| 久草这里只有精品视频| 国产在线精品免费| 国产福利91精品| 成人性生交大合| 91最新地址在线播放| 一本久久a久久精品亚洲| 色综合中文字幕| 91成人看片片| 欧美日韩1234| 日韩精品一区在线| 亚洲精品一区二区三区99| 久久影院电视剧免费观看| 精品国产免费人成在线观看| 精品日韩成人av| 国产偷v国产偷v亚洲高清| 中文字幕欧美日韩一区| 亚洲欧洲综合另类| 亚洲成人av在线电影| 国产精品免费aⅴ片在线观看| 亚洲18影院在线观看| 国产精品看片你懂得| 日韩理论片中文av| 国产精品九色蝌蚪自拍| 久久先锋影音av| www久久久久| 亚洲精品一区二区三区精华液| 日韩精品在线看片z| 精品国精品国产| 亚洲欧美日韩久久精品| 亚洲bt欧美bt精品777| 奇米精品一区二区三区四区| 国产成人福利片| 日本黄色一区二区| 精品少妇一区二区三区日产乱码 | 久久er精品视频| 国产成人在线观看免费网站| 色菇凉天天综合网| 欧美一级生活片| 欧美高清在线视频| 香蕉成人啪国产精品视频综合网| 国产综合久久久久久久久久久久| 色综合中文字幕国产 | 一本久久精品一区二区| 欧美一区二区三区在线观看视频| 欧美激情中文字幕一区二区| 亚洲综合网站在线观看| 韩国三级在线一区| 91福利社在线观看| 国产亚洲欧洲997久久综合| 亚洲国产三级在线| 国产精品一二一区| 欧美日韩国产成人在线91| 日本一区二区三区高清不卡| 青青草原综合久久大伊人精品 | 欧美私模裸体表演在线观看| 久久人人爽爽爽人久久久| 亚洲尤物在线视频观看| 国产乱码字幕精品高清av| 欧美色涩在线第一页| 国产午夜精品久久| 日韩vs国产vs欧美| 91福利社在线观看| 日本一区二区久久| 紧缚奴在线一区二区三区| 色吊一区二区三区| 国产精品久久久久久久午夜片| 久草精品在线观看| 欧美日韩情趣电影| 一区在线播放视频| 狠狠色丁香婷婷综合久久片| 91精品在线免费观看| 一区二区三区精品视频| 福利视频网站一区二区三区| 欧美zozo另类异族| 日韩影院精彩在线| 在线国产亚洲欧美| 亚洲免费观看视频| 成人av一区二区三区| 久久欧美一区二区| 久久99热这里只有精品| 欧美精品v国产精品v日韩精品| 一级做a爱片久久| 97se亚洲国产综合自在线| 国产欧美精品日韩区二区麻豆天美| 欧美精品自拍偷拍| 亚洲欧美视频在线观看| 国产福利一区在线观看| 26uuu另类欧美亚洲曰本| 美国三级日本三级久久99| 欧美日韩黄色影视| 亚洲成a天堂v人片| 欧美三级电影网| 亚洲成人在线免费| 欧美日本高清视频在线观看| 亚洲午夜在线视频| 精品视频一区二区三区免费| 一区二区高清视频在线观看| 色综合天天综合网国产成人综合天| 国产精品乱码一区二区三区软件 | 欧美天堂一区二区三区| 一区二区三区国产| 在线观看av一区| 亚洲香肠在线观看| 制服丝袜日韩国产| 日韩av一级片| 欧美成人女星排行榜| 激情综合色综合久久| 久久精品一级爱片| 高清在线观看日韩| 综合久久给合久久狠狠狠97色| 99久久精品免费看| 亚洲一区二区三区四区在线| 欧美日韩国产另类不卡| 免费人成网站在线观看欧美高清| 欧美xxx久久| 粉嫩欧美一区二区三区高清影视| 亚洲欧洲精品一区二区三区不卡| 91免费视频网| 亚洲第一久久影院| 精品欧美一区二区久久| 国产999精品久久久久久 | 免费在线观看精品| 久久久久久久久久久久久夜| av一区二区不卡| 亚洲图片欧美色图| 欧美一区二区三区在线| 国产夫妻精品视频| 综合分类小说区另类春色亚洲小说欧美| 欧美在线观看视频一区二区三区| 日韩av一区二| 国产女人水真多18毛片18精品视频 | 91麻豆国产福利精品| 丝袜亚洲另类欧美综合| 国产亚洲综合在线| 色88888久久久久久影院野外| 免费观看久久久4p| 国产精品久久久久影院亚瑟 | 免费不卡在线观看| 一区二区三区成人| 国产乱一区二区| 欧美亚洲自拍偷拍| 欧美日韩精品三区| 欧美老年两性高潮| 久久久久久久免费视频了| 国产亚洲自拍一区| 亚洲精品乱码久久久久久日本蜜臀| 国产精品色在线观看| 亚洲色图在线视频| 日韩av中文在线观看| 国产白丝精品91爽爽久久| 欧美亚洲国产bt| 毛片基地黄久久久久久天堂| 国产精品美女一区二区三区 | 欧美另类一区二区三区| 狠狠色丁香婷综合久久| 亚洲一区二区在线播放相泽 | 亚洲欧美在线视频|