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

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

?? undoredobar.cpp

?? A Model-View-Controller Framework that integrates with the MFC Doc/View architecture.
?? CPP
字號:
#include "stdafx.h"
#include "UndoRedoBar.h"
#include "UndoRedoMenu.h"
#include "UndoRedoButton.h"
#include "UndoRedoListBox.h"
#include "WndController.h"
#include "WndMsgHandler.h"

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


namespace SbjCore
{
 	namespace Mvc
	{
		struct UndoRedoBarImpl : public WndController
		{
			UndoRedoListBox	theListBox;
			CRect			rectLabel;
			int				nLabelHeight;
			CString			sLabel;
			
			class UndoRedoBarCreateHandler : public SbjCore::Mvc::WndMsgHandler
			{
				CALL_DEFAULT_FIRST() // comment out to handle message before default

					virtual LRESULT OnHandleWndMsg(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
				{
					wParam;
					lParam;
					*pResult = 0;
					LRESULT lRslt = 1;

					SbjCore::Mvc::UndoRedoBarImpl* pCtrlr = dynamic_cast<SbjCore::Mvc::UndoRedoBarImpl*>(GetController());

					if (pCtrlr != NULL)
					{
						SbjCore::Mvc::UndoRedoBar* pBar = dynamic_cast<SbjCore::Mvc::UndoRedoBar*>(pCtrlr->GetWnd());	

						if (pBar != NULL)
						{
							CFont* pMenuFont = (CFont*)&CMFCMenuBar::GetMenuFont();

							CRect rectDummy (0, 0, 0, 0);

							pCtrlr->theListBox.Create (WS_VISIBLE | WS_CHILD | LBS_NOINTEGRALHEIGHT | LBS_NOTIFY | WS_VSCROLL | LBS_MULTIPLESEL, 
								rectDummy, pBar, 1);

							pCtrlr->theListBox.ModifyStyle(WS_BORDER, 0);

							pCtrlr->theListBox.SetFont(pMenuFont);

							CStringList& list = UndoRedoButton::GetUndoRedoList();

							for (POSITION pos = list.GetHeadPosition(); pos != NULL;)
							{
								pCtrlr->theListBox.AddString(list.GetNext(pos));
							}
						}
					}

					return lRslt;
				}

			} theUndoRedoBarCreateHandler;
			friend UndoRedoBarCreateHandler;
			
			class UndoRedoBarSizeHandler : public SbjCore::Mvc::WndMsgHandler
			{
				CALL_DEFAULT_FIRST() // comment out to handle message before default

					virtual LRESULT OnHandleWndMsg(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
				{
					wParam;
					lParam;
					*pResult = 0;
					LRESULT lRslt = 1;

					SbjCore::Mvc::UndoRedoBarImpl* pCtrlr = dynamic_cast<SbjCore::Mvc::UndoRedoBarImpl*>(GetController());

					if (pCtrlr != NULL)
					{
						SbjCore::Mvc::UndoRedoBar* pBar = dynamic_cast<SbjCore::Mvc::UndoRedoBar*>(pCtrlr->GetWnd());	

						if (pBar != NULL)
						{
							CRect rectClient;
							pBar->GetClientRect(rectClient);

							CFont* pMenuFont = (CFont*) &CMFCMenuBar::GetMenuFont();

							CClientDC dc(pBar);
							CFont* pOldFont = dc.SelectObject(pMenuFont);

							TEXTMETRIC tm;
							dc.GetTextMetrics (&tm);

							pCtrlr->nLabelHeight = tm.tmHeight + 2;

							dc.SelectObject (pOldFont);


							pCtrlr->rectLabel = rectClient;
							pCtrlr->rectLabel.top = (pCtrlr->rectLabel.bottom - pCtrlr->nLabelHeight);
							pCtrlr->rectLabel.top -= (pCtrlr->rectLabel.top % tm.tmHeight);

							CRect rectList = rectClient;
							rectList.bottom = pCtrlr->rectLabel.top;

							pCtrlr->theListBox.MoveWindow(rectList);
						}
					}
					return lRslt;
				}

			} theUndoRedoBarSizeHandler;
			friend UndoRedoBarSizeHandler;
			
			UndoRedoBarImpl()
			{
				AddHandler(WM_CREATE, &theUndoRedoBarCreateHandler);
				AddHandler(WM_SIZE, &theUndoRedoBarSizeHandler);
			}
			
			virtual ~UndoRedoBarImpl()
			{
			}
		};
		
		/////////////////////////////////////////////////////////////////////////////

		IMPLEMENT_SERIAL(UndoRedoBar, CMFCPopupMenuBar, 1)

		UndoRedoBar::UndoRedoBar() :
			m_pImpl(new UndoRedoBarImpl)
		{
			SetController(m_pImpl);
		}

		UndoRedoBar::~UndoRedoBar()
		{
			try
			{
				delete m_pImpl;
			}
			catch(...)
			{
				ASSERT(FALSE);
			}
		}

		/////////////////////////////////////////////////////////////////////////////
		// UndoRedoBar message handlers

		void UndoRedoBar::OnFillBackground (CDC* pDC)
		{
			ASSERT_VALID (pDC);

			CRect rectClient;
			GetClientRect (rectClient);

			::FillRect (pDC->GetSafeHdc (), &rectClient, ::GetSysColorBrush (COLOR_WINDOW));

			CBrush br;
			br.CreateSolidBrush(RGB(0xF8, 0xF8, 0xF8));
			// Draw label:
			::FillRect(pDC->GetSafeHdc (), &m_pImpl->rectLabel, br);

			CFont* pOldFont = pDC->SelectObject ((CFont*) &CMFCMenuBar::GetMenuFont ());
			pDC->SetBkMode (TRANSPARENT);
			pDC->SetTextColor (::GetSysColor (COLOR_BTNTEXT));

			CRect rectText = m_pImpl->rectLabel;
			rectText.OffsetRect(CPoint(0,4));
			pDC->DrawText (m_pImpl->sLabel, rectText, DT_CENTER | DT_VCENTER);

			pDC->SelectObject (pOldFont);
		}

		CSize UndoRedoBar::CalcSize (BOOL /*bVertDock*/)
		{
			return CSize (160, 115);
		}

		UndoRedoButton* UndoRedoBar::GetUndoRedoButton () const
		{
			// Get parent button:
			UndoRedoButton* pUndoRedoButton = NULL;

			UndoRedoMenu* pParentMenu = DYNAMIC_DOWNCAST(UndoRedoMenu, GetParent());
			if (pParentMenu != NULL)
			{
				pUndoRedoButton = DYNAMIC_DOWNCAST(UndoRedoButton, pParentMenu->GetParentButton());
			}

			return pUndoRedoButton;
		}

		void UndoRedoBar::DoUndo ()
		{
			UndoRedoButton* pUndoRedoButton = GetUndoRedoButton();

			pUndoRedoButton->SetCount(m_pImpl->theListBox.GetSelCount());
			GetOwner()->PostMessage (WM_COMMAND, pUndoRedoButton->m_nID);

			CMFCPopupMenu* pMenu = (CMFCPopupMenu*)GetParent();

			pMenu->CloseMenu ();
		}

		void UndoRedoBar::SetLabelCount(const int nCount)
		{
			UndoRedoButton* pUndoRedoButton = GetUndoRedoButton();
			
			if (ID_EDIT_UNDO == pUndoRedoButton->m_nID)
			{
				m_pImpl->sLabel.Format(_T("Undo %d Actions"), nCount);
			}

			if (ID_EDIT_REDO == pUndoRedoButton->m_nID)
			{
				m_pImpl->sLabel.Format(_T("Redo %d Actions"), nCount);
			}

			if (GetSafeHwnd () != NULL)
			{
				InvalidateRect (m_pImpl->rectLabel);
				UpdateWindow ();
			}
		}

	}
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情丁香综合五月| 欧美性色aⅴ视频一区日韩精品| 国产很黄免费观看久久| 色爱区综合激月婷婷| 日韩一区二区麻豆国产| 亚洲欧美一区二区视频| 麻豆精品视频在线观看免费| 91丝袜美腿高跟国产极品老师| 日韩精品最新网址| 亚洲国产sm捆绑调教视频 | 国产乱子轮精品视频| 欧洲国产伦久久久久久久| 国产亚洲欧美日韩日本| 免费成人在线观看| 欧美日韩久久一区二区| 一区二区三区产品免费精品久久75| 国产一区二区免费看| 日韩一二三区视频| 免费看日韩a级影片| 欧美日韩国产123区| 亚洲精品福利视频网站| 99久久综合国产精品| 欧美国产精品一区| 国产精品一区二区无线| 久久综合久久综合久久综合| 日本aⅴ亚洲精品中文乱码| 欧美日韩视频第一区| 亚洲欧洲综合另类| 91麻豆国产自产在线观看| 国产精品福利av| 99热国产精品| 亚洲精品你懂的| 在线一区二区三区| 亚洲一区二区中文在线| 在线观看日韩av先锋影音电影院| 亚洲同性同志一二三专区| 不卡的电影网站| 亚洲免费高清视频在线| 色屁屁一区二区| 亚洲一区二区精品视频| 制服丝袜亚洲网站| 美女视频黄久久| 久久蜜桃一区二区| 高清国产午夜精品久久久久久| 国产欧美综合在线观看第十页 | 精品国一区二区三区| 久久精品国产精品亚洲红杏| 欧美成人a视频| 国产精品一区二区三区乱码| 亚洲国产高清不卡| 色综合欧美在线视频区| 亚洲高清免费一级二级三级| 91麻豆精品国产91久久久使用方法| 秋霞影院一区二区| 国产色综合一区| 91免费看视频| 日本欧美韩国一区三区| 久久久www免费人成精品| av在线播放一区二区三区| 亚洲国产精品欧美一二99| 日韩三级在线观看| a4yy欧美一区二区三区| 午夜精品久久久久久久99樱桃| 日韩欧美国产麻豆| 成人动漫视频在线| 日韩精品国产欧美| 国产亚洲欧美一级| 欧美三级在线播放| 国产精品一区2区| 一区二区三区在线观看欧美| 7777精品伊人久久久大香线蕉的 | 色吊一区二区三区| 免费看黄色91| 最好看的中文字幕久久| 欧美精品九九99久久| 粉嫩高潮美女一区二区三区| 亚洲国产精品精华液网站| 久久久久久久久久久久电影| 欧美专区亚洲专区| 国产成人在线免费| 午夜伦理一区二区| 中文字幕国产一区| 欧美一区二区三区喷汁尤物| eeuss鲁一区二区三区| 免费欧美日韩国产三级电影| 亚洲欧洲国产日本综合| 精品捆绑美女sm三区| 欧美网站一区二区| 99re热视频这里只精品| 国产自产v一区二区三区c| 亚洲一区二区视频| 亚洲天堂福利av| 国产欧美综合在线| 欧美精品一区二区三区视频 | 91麻豆免费看| 成人在线综合网| 国产专区综合网| 免费高清在线视频一区·| 一区二区三区欧美久久| 亚洲国产精品av| 国产午夜精品美女毛片视频| 欧美一区二区三区视频免费播放| 在线中文字幕不卡| 色噜噜夜夜夜综合网| 不卡av免费在线观看| 国产剧情一区二区| 精品一区免费av| 美洲天堂一区二卡三卡四卡视频| 亚洲一区二区三区免费视频| 亚洲欧美综合在线精品| 国产精品美女久久久久久久久 | 精品国产一区二区三区四区四 | 在线免费观看日韩欧美| av电影在线观看一区| 成人毛片在线观看| 国产成人av自拍| 成人黄色一级视频| 丁香六月久久综合狠狠色| 国产美女精品人人做人人爽| 国产麻豆一精品一av一免费| 老司机午夜精品| 国产一区二区精品久久91| 精品一区二区免费| 国产精品综合二区| 福利电影一区二区| 成人国产一区二区三区精品| 懂色av中文字幕一区二区三区| 国产v日产∨综合v精品视频| 成人免费av在线| 91麻豆自制传媒国产之光| 欧美性xxxxxxxx| 日韩一区二区不卡| 国产女人水真多18毛片18精品视频| 欧美韩国日本不卡| 亚洲女同女同女同女同女同69| 一级做a爱片久久| 日韩电影一区二区三区| 国内精品免费在线观看| 成人丝袜高跟foot| 91国偷自产一区二区开放时间| 欧美日韩不卡在线| 日韩欧美亚洲国产精品字幕久久久| 欧美变态凌虐bdsm| 国产精品国产三级国产三级人妇 | 亚洲精品综合在线| 五月婷婷欧美视频| 国产一区中文字幕| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产传媒日韩欧美成人| 99vv1com这只有精品| 欧美一卡2卡三卡4卡5免费| 国产亚洲欧美激情| 亚洲无人区一区| 国产精品99久久久| 欧洲激情一区二区| 国产午夜三级一区二区三| 午夜欧美大尺度福利影院在线看| 国产精品影视在线| 欧美日韩一本到| 国产精品日韩成人| 日韩精品亚洲一区| 成人精品鲁一区一区二区| 欧美福利一区二区| 中文字幕亚洲不卡| 久久精品国产77777蜜臀| 97精品电影院| 久久久电影一区二区三区| 天天做天天摸天天爽国产一区| 成人一区二区三区在线观看| 欧美精选在线播放| 亚洲免费视频中文字幕| 国产一区二区91| 欧美精品久久99久久在免费线| 中文字幕一区二区三| 精品一区二区免费| 欧美一区二区免费视频| 一区二区国产视频| 91影视在线播放| 欧美激情一区二区三区四区| 欧美96一区二区免费视频| 色爱区综合激月婷婷| 国产精品免费看片| 成人精品高清在线| 国产亚洲短视频| 国产精品影音先锋| 久久久久久久电影| 精品亚洲国产成人av制服丝袜| 欧美久久久影院| 亚洲大片在线观看| 色欧美片视频在线观看| 国产精品国产三级国产aⅴ入口| 国产剧情av麻豆香蕉精品| 精品人伦一区二区色婷婷| 蜜桃av一区二区三区电影| 日韩一区二区精品在线观看| 天天色 色综合| 91麻豆精品国产91久久久久久| 日韩精品电影在线| 91精品国产综合久久久久久| 舔着乳尖日韩一区|