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

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

?? flatbar.cpp

?? VC++環境下的GPS全球定位系統源代碼
?? 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一区二区三区免费野_久草精品视频
99视频超级精品| 国产不卡一区视频| 欧美精品一二三区| 色综合色综合色综合色综合色综合 | 亚洲欧美另类在线| 中文字幕不卡一区| 久久精品视频一区二区三区| 欧美午夜片在线看| 欧美日韩精品一区二区| 555夜色666亚洲国产免| 欧美大黄免费观看| 久久亚区不卡日本| 国产精品美女www爽爽爽| 中文字幕一区二区不卡| 亚洲永久免费av| 亚洲成a人v欧美综合天堂下载| 久久久久久久久99精品| 国产精品午夜免费| 亚洲综合一区二区三区| 日韩和的一区二区| 国产一区二区三区综合| caoporm超碰国产精品| 91高清在线观看| 日韩欧美国产综合在线一区二区三区| 北岛玲一区二区三区四区| 91香蕉视频mp4| 日韩主播视频在线| 亚洲午夜av在线| 精品一区二区久久久| 波多野结衣中文一区| 一本一道综合狠狠老| 精品国产一区二区亚洲人成毛片 | 91国偷自产一区二区开放时间| 久久se精品一区二区| 丁香婷婷综合五月| 51久久夜色精品国产麻豆| 久久综合九色欧美综合狠狠| 日韩欧美一级二级三级久久久| 一本久久a久久精品亚洲| 日韩欧美一区二区在线视频| 欧美性大战久久| 欧美在线播放高清精品| 久久综合九色综合欧美亚洲| 亚洲老妇xxxxxx| 国产.精品.日韩.另类.中文.在线.播放| 日韩电影在线免费看| jizzjizzjizz欧美| 精品国产免费人成电影在线观看四季 | 亚洲国产成人午夜在线一区| 国产网红主播福利一区二区| 午夜日韩在线观看| www.色综合.com| 久久精品免费在线观看| 麻豆久久一区二区| 91麻豆精品国产91久久久使用方法| 欧美福利视频一区| 一区精品在线播放| 国产不卡在线视频| 久久久精品日韩欧美| 国产精品视频一二三区| 一区二区三区四区高清精品免费观看 | 欧美激情一二三区| 狠狠网亚洲精品| 精品欧美久久久| 青娱乐精品在线视频| 5月丁香婷婷综合| 亚洲二区视频在线| 欧美日韩在线亚洲一区蜜芽| 1024精品合集| 色婷婷综合在线| 亚洲一区二区偷拍精品| 无码av免费一区二区三区试看 | 国产大片一区二区| 久久久三级国产网站| 国产一区二区三区国产| 不卡免费追剧大全电视剧网站| 色久综合一二码| 亚洲与欧洲av电影| 欧美午夜精品一区二区三区| 亚洲成人资源在线| 91精品一区二区三区久久久久久| 国产日韩精品视频一区| 成人永久免费视频| 亚洲欧洲无码一区二区三区| 91美女蜜桃在线| 亚洲国产精品一区二区久久恐怖片 | 天天综合天天做天天综合| 在线成人av网站| 久久国产视频网| 久久精品视频网| 91影院在线免费观看| 亚洲制服丝袜av| 在线播放/欧美激情| 精品亚洲国内自在自线福利| 中文字幕巨乱亚洲| 91成人在线观看喷潮| 奇米色一区二区三区四区| 久久久久免费观看| 日本精品免费观看高清观看| 久久久久久电影| 97se亚洲国产综合自在线不卡| 欧美v日韩v国产v| 不卡的av电影| 日本特黄久久久高潮| 国产日产亚洲精品系列| 色域天天综合网| 精品一区二区三区免费观看| 欧美一区二区精品在线| 成人黄色小视频在线观看| 午夜在线成人av| 中文字幕精品一区二区精品绿巨人 | 亚洲日本va在线观看| 91精品国产91热久久久做人人| 一区二区三区小说| 精品久久久久久久久久久久久久久 | 精品久久人人做人人爽| 91丨porny丨中文| 久久精品国产亚洲一区二区三区| 欧美日韩免费视频| 风流少妇一区二区| 丝袜美腿亚洲一区二区图片| 欧美色图一区二区三区| 国产不卡视频一区二区三区| 午夜不卡在线视频| 欧美激情一区不卡| 精品奇米国产一区二区三区| 在线日韩一区二区| av网站免费线看精品| 亚洲人成精品久久久久久| 久久人人爽爽爽人久久久| 欧美一区二区三区成人| 色系网站成人免费| av电影在线观看不卡| 国产一区二区三区在线观看免费| 26uuu久久天堂性欧美| 91精品在线观看入口| 久久精品国产99国产精品| 欧美精品一区二区三区在线播放| 国产在线精品免费| 日本va欧美va精品| 日av在线不卡| 日韩福利电影在线观看| 久久伊人蜜桃av一区二区| 成人免费毛片嘿嘿连载视频| 久久精工是国产品牌吗| 美女视频一区在线观看| 日本网站在线观看一区二区三区| 久久这里只精品最新地址| 欧美电影免费观看完整版| 欧美喷水一区二区| 9191国产精品| 成人网页在线观看| 高清av一区二区| www.色综合.com| 91视频免费播放| 91成人在线免费观看| 欧美性猛交一区二区三区精品| 六月丁香婷婷色狠狠久久| 美腿丝袜一区二区三区| 免费成人在线播放| 国产精品综合久久| 丰满放荡岳乱妇91ww| 日本美女视频一区二区| 亚洲欧洲在线观看av| 一区二区三区视频在线看| 精品久久久久久无| 亚洲国产成人在线| 欧美大片免费久久精品三p| 久久久久国产精品麻豆ai换脸 | 国产精品一卡二卡| 国产69精品久久777的优势| 91浏览器入口在线观看| 91福利区一区二区三区| 日韩欧美不卡在线观看视频| 国产视频一区在线播放| 制服丝袜亚洲播放| 久久久久国产精品麻豆ai换脸| 欧美日韩不卡一区| 日韩欧美成人一区| 综合色天天鬼久久鬼色| 亚洲123区在线观看| 国产精品自拍毛片| 日本乱人伦aⅴ精品| 26uuu国产在线精品一区二区| 884aa四虎影成人精品一区| 久久综合九色综合97_久久久| 欧美一区二区日韩| 中文字幕一区二区三区不卡| 午夜在线成人av| 99久久综合精品| 日韩欧美一级在线播放| 亚洲欧美精品午睡沙发| 美女一区二区在线观看| 日本高清不卡一区| 久久久精品免费网站| 婷婷激情综合网| 成人av午夜电影| 91尤物视频在线观看| 久久日韩精品一区二区五区| 一区二区三区四区激情 |