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

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

?? tabbeddockingwindow.h

?? 一款最完整的工業(yè)組態(tài)軟源代碼
?? H
字號:
// TabbedDockingWindow.h: interface for the CTabbedDockingWindow class.
//
// NOTE: This class depends on Sergey Klimov's docking window framework
//  and "TabbedFrame.h"
//
//////////////////////////////////////////////////////////////////////

#ifndef __TABBED_DOCKING_WINDOW_H__
#define __TABBED_DOCKING_WINDOW_H__

#pragma once

#if !defined(__WTL_DW__EXTDOCKINGWINDOW_H__) && !defined(AFX_EXTDOCKINGWINDOW_H__0CD64AFC_8687_4B20_8B8F_EE149C8C0E94__INCLUDED_)
	#error TabbedDockingWindow.h requires ExtDockingWindow.h to be included first
#endif
#if !defined(__WTL_DW__DOCKMISC_H__) && !defined(AFX_DOCKMISC_H__2A1A3052_6F61_4F89_A2C4_AAAC46D67AF1__INCLUDED_)
	#error TabbedDockingWindow.h requires DockMisc.h to be included first
#endif
#ifndef __WTL_TABBED_FRAME_H__
	#error TabbedDockingWindow.h requires TabbedFrame.h to be included first
#endif

class CTabbedDockingWindow :
	public CTabbedFrameImpl<CTabbedDockingWindow, CDotNetTabCtrl<CTabViewTabItem>, dockwins::CTitleDockingWindowImpl< CTabbedDockingWindow,CWindow,dockwins::COutlookLikeTitleDockingWindowTraits> >
{
protected:
	typedef CTabbedDockingWindow thisClass;
	typedef CTabbedFrameImpl<CTabbedDockingWindow, CDotNetTabCtrl<CTabViewTabItem>, dockwins::CTitleDockingWindowImpl< CTabbedDockingWindow,CWindow,dockwins::COutlookLikeTitleDockingWindowTraits> > baseClass;

// Constructors
public:
	CTabbedDockingWindow(bool bReflectNotifications = true) :
		baseClass(bReflectNotifications)
	{
	}

// Message Handling
public:
	DECLARE_WND_CLASS_EX(_T("TabbedDockingWindow"), CS_DBLCLKS, COLOR_APPWORKSPACE)

	BOOL PreTranslateMessage(MSG* pMsg)
	{
		//if(baseClass::PreTranslateMessage(pMsg))
		//	return TRUE;

		//return m_view.PreTranslateMessage(pMsg);

		HWND hWndFocus = ::GetFocus();
		if(m_hWndActive != NULL && ::IsWindow(m_hWndActive) &&
			(m_hWndActive == hWndFocus || ::IsChild(m_hWndActive, hWndFocus)))
		{
			//active.PreTranslateMessage(pMsg);
			if(::SendMessage(m_hWndActive, WM_FORWARDMSG, 0, (LPARAM)pMsg))
			{
				return TRUE;
			}
		}

		return FALSE;
	}

	BEGIN_MSG_MAP(thisClass)
		MESSAGE_HANDLER(WM_SIZE, OnSize)
		CHAIN_MSG_MAP(baseClass)
	END_MSG_MAP()

	LRESULT OnSize(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled)
	{
		if(wParam != SIZE_MINIMIZED)
		{
			//T* pT = static_cast<T*>(this);
			//pT->UpdateLayout();
			UpdateLayout();
		}
		bHandled = FALSE;
		return 1;
	}

// Overrideables
public:
	void UpdateBarsPosition(RECT& /*rect*/, BOOL /*bResizeBars = TRUE*/)
	{
	}
};

#ifdef DF_AUTO_HIDE_FEATURES

class CTabbedAutoHideDockingWindow :
	public dockwins::CBoxedDockingWindowImpl< CTabbedAutoHideDockingWindow,CWindow,dockwins::CVC7LikeExBoxedDockingWindowTraits>
{
protected:
	typedef CTabbedAutoHideDockingWindow	thisClass;
	typedef dockwins::CBoxedDockingWindowImpl< CTabbedAutoHideDockingWindow,CWindow,dockwins::CVC7LikeExBoxedDockingWindowTraits> baseClass;

// Member variables
protected:
	HWND m_hWndClient;
	bool m_bReflectNotifications;
	bool m_bClientFlatOutline;
	int m_nMenuID;

// Constructors
public:
	CTabbedAutoHideDockingWindow(HWND hWndClient = NULL) : 
		m_hWndClient(hWndClient),
		m_bReflectNotifications(false),
		m_bClientFlatOutline(false),
		m_nMenuID(0)
	{
	}

// static public Methods:
public:
	static CTabbedAutoHideDockingWindow* CreateInstance(void)
	{
		return new CTabbedAutoHideDockingWindow;
	}

// Public Methods
public:
	bool AutoHide(bool bAutoHideOwnerTabBoxAsGroup = true)
	{
		bool returnValue = false;
		if(this->IsWindow() && this->IsDocking() && !this->IsPinned())
		{
			// NOTE: "IsPinned" really should be renamed to "IsAutoHidden" or something
			// TODO: The way IsPinned works seems backwards.
			//  Its true if the window is being auto-hidden.

			HWND hWndDockingBox = this->GetOwnerDockingBar();
			if(bAutoHideOwnerTabBoxAsGroup && dockwins::CDockingBox::IsWindowBox(hWndDockingBox))
			{
				// The pane window is docked, not auto-hidden already, and in a tab box.
				// Auto-hide the whole box at once (this will auto-hide all other
				// pane windows in this tab box as well).

				dockwins::DFPINBTNPRESS btnPress = {0};
				btnPress.hdr.hWnd = m_hWnd;
				btnPress.hdr.hBar = hWndDockingBox;
				btnPress.hdr.code = DC_PINBTNPRESS;
				btnPress.bVisualize = FALSE;
				returnValue = ::SendMessage(hWndDockingBox, WMDF_DOCK, 0, (WPARAM)&btnPress) ? true : false;

				//returnValue = ownerTabBox->PinBtnPress(false);
			}
			else //if(dockwins::CDockingBox::IsWindowBox(m_hWnd))
			{
				// The pane window is docked, not auto-hidden already and *not* in a tab box.
				// Auto-hide just the pane window.

				//dockwins::DFPINBTNPRESS btnPress = {0};
				//btnPress.hdr.hWnd = m_hWnd;
				//btnPress.hdr.hBar = hWndDockingBox;
				//btnPress.hdr.code = DC_PINBTNPRESS;
				//btnPress.bVisualize = FALSE;
				//::SendMessage(m_hWnd, WMDF_DOCK, 0, (WPARAM)&btnPress);
				returnValue = this->PinBtnPress(false);
			}
		}
		return returnValue;
	}

	void SetClient(HWND hWndClient)
	{
		m_hWndClient = hWndClient;

		if(	m_hWndClient && ::IsWindow(m_hWndClient) &&
			m_hWnd && ::IsWindow(m_hWnd))
		{
			// Set our small icon to the small icon of the client
			HICON hIcon = (HICON)::SendMessage(m_hWndClient, WM_GETICON, ICON_SMALL, 0L);
			if(hIcon==NULL)
			{
				hIcon = (HICON)::GetClassLongPtr(m_hWndClient, GCLP_HICONSM);
			}
			if(hIcon)
			{
				this->SetIcon(hIcon, ICON_SMALL);
			}

			if(m_bClientFlatOutline)
			{
				DWORD dwExStyle = (DWORD)::GetWindowLong(m_hWndClient, GWL_EXSTYLE);
				dwExStyle &= ~(WS_EX_CLIENTEDGE);
				::SetWindowLong(m_hWndClient, GWL_EXSTYLE, dwExStyle);
			}

			// Resize the client to fill our client area
			RECT rect;
			this->GetClientRect(&rect);

			if(m_bClientFlatOutline)
			{
				::SetWindowPos(m_hWndClient, NULL, rect.left+1, rect.top+1,
					rect.right - rect.left-2, rect.bottom - rect.top-2,
					SWP_NOZORDER | SWP_NOACTIVATE | SWP_FRAMECHANGED);
			}
			else
			{
				::SetWindowPos(m_hWndClient, NULL, rect.left, rect.top,
					rect.right - rect.left, rect.bottom - rect.top,
					SWP_NOZORDER | SWP_NOACTIVATE);
			}
		}
	}

	HWND GetClient(void)
	{
		return m_hWndClient;
	}

	void SetReflectNotifications(bool bReflectNotifications = true)
	{
		m_bReflectNotifications = bReflectNotifications;
	}

	bool GetReflectNotifications(void) const
	{
		return m_bReflectNotifications;
	}

	void SetClientFlatOutline(bool bFlat = true)
	{
		if(m_bClientFlatOutline!=bFlat)
		{
			ATLASSERT((m_hWndClient==NULL) && "Please call SetClientFlatOutline before setting client");
			m_bClientFlatOutline = bFlat;
		}
	}

	bool GetClientFlatOutline(void) const
	{
		return m_bClientFlatOutline;
	}

	void SetMenuID(int nMenuID)
	{
		m_nMenuID = nMenuID;
	}

	int GetMenuID(void) const
	{
		return m_nMenuID;
	}

// Message Handling
public:
	DECLARE_WND_CLASS_EX(_T("TabbedAutoHideDockingWindow"), CS_DBLCLKS, COLOR_APPWORKSPACE)

	virtual void OnFinalMessage(HWND /*hWnd*/)
	{
		// NOTE: This class is meant to be created with "new"
		delete this;
	}

	BOOL PreTranslateMessage(MSG* pMsg)
	{
		//if(baseClass::PreTranslateMessage(pMsg))
		//	return TRUE;

		//return m_view.PreTranslateMessage(pMsg);

		HWND hWndFocus = ::GetFocus();
		if(m_hWndClient != NULL && ::IsWindow(m_hWndClient) &&
			(m_hWndClient == hWndFocus || ::IsChild(m_hWndClient, hWndFocus)))
		{
			//active.PreTranslateMessage(pMsg);
			if(::SendMessage(m_hWndClient, WM_FORWARDMSG, 0, (LPARAM)pMsg))
			{
				return TRUE;
			}
		}

		return FALSE;
	}

	BEGIN_MSG_MAP(thisClass)	
		MESSAGE_HANDLER(WM_CREATE, OnCreate)
		MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
		MESSAGE_HANDLER(WM_CLOSE, OnClose)
		//MESSAGE_HANDLER(WM_PARENTNOTIFY, OnParentNotify)
		MESSAGE_HANDLER(WM_SIZE, OnSize)		
		MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBackground)
		MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)

		CHAIN_MSG_MAP(baseClass)
		if(m_bReflectNotifications)
		{
			REFLECT_NOTIFICATIONS()
		}
	END_MSG_MAP()

	LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
	{
		bHandled = FALSE;
		return 0;
	}

	LRESULT OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
	{
		bHandled = FALSE;
		return 0;
	}

	LRESULT OnClose(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
	{
		// IMPORTANT!
		// The docking window framework deals with WM_CLOSE differently
		// than you might expect.  To the framework, WM_CLOSE essentially
		// means "Hide".  So if you send WM_CLOSE to this window, don't
		// expect it to destruct.  Instead, you should send WM_CLOSE to the window
		// first, then DestroyWindow if that's what you're wanting to do.
		bHandled = FALSE;

		// What we might do if WM_CLOSE didn't mean "hide"
		/*
		if(m_hWndClient != NULL)
		{
			if(::IsWindow(m_hWndClient))
			{
				LRESULT lResult = ::SendMessage(m_hWndClient, WM_CLOSE, 0, 0L);
				if(lResult)
				{
					// If the client doesn't want to close,
					// don't let DefWindowProc have at WM_CLOSE,
					// and return the response from the client
					bHandled = TRUE;
					return lResult;
				}
				// else, let DefWindowProc happen,
				// and let go of m_hWndClient
				m_hWndClient = NULL;
			}
		}
		*/
		return 0;
	}

	// If we ever need it:
	//LRESULT OnParentNotify(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled)
	//{
	//	bHandled = FALSE;
	//	if(LOWORD(wParam) == WM_DESTROY)
	//	{
	//		m_hWndClient = NULL;
	//	}
	//	return 0;
	//}

	LRESULT OnSize(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled)
	{
		if(wParam != SIZE_MINIMIZED )
		{
			// resize client window
			if(m_hWndClient != NULL)
			{
				RECT rect;
				this->GetClientRect(&rect);

				if(m_bClientFlatOutline)
				{
					::SetWindowPos(m_hWndClient, NULL, rect.left+1, rect.top+1,
						rect.right - rect.left-2, rect.bottom - rect.top-2,
						SWP_NOZORDER | SWP_NOACTIVATE);
				}
				else
				{
					::SetWindowPos(m_hWndClient, NULL, rect.left, rect.top,
						rect.right - rect.left, rect.bottom - rect.top,
						SWP_NOZORDER | SWP_NOACTIVATE);
				}
			}
		}
		bHandled = FALSE;
		return 1;
	}

	LRESULT OnEraseBackground(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled)
	{
		if(m_hWndClient != NULL)
		{
			if(m_bClientFlatOutline)
			{
				// Paint a flat outline
				HDC hdc = (HDC)wParam;
				if(hdc != NULL)
				{
					RECT rcClient={0};
					this->GetClientRect(&rcClient);
					::FrameRect(hdc,&rcClient,::GetSysColorBrush(COLOR_BTNSHADOW));
				}
			}

			// view will paint itself
			return 1;
		}

		// Else no client view is set, so let the default erase happen
		// (which will use the brush of the window class)
		bHandled = FALSE;
		return 0;

		//HDC hdc = (HDC)wParam;
		//if(hdc != NULL)
		//{
		//	RECT rect;
		//	::GetClipBox(hdc, &rect);
		//	::SetBkColor(hdc, ::GetSysColor(COLOR_APPWORKSPACE));
		//	::ExtTextOut(hdc, 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL);
		//}
		//return 1;
	}

	LRESULT OnSetFocus(UINT, WPARAM, LPARAM, BOOL& bHandled)
	{
		if(m_hWndClient != NULL && ::IsWindowVisible(m_hWndClient))
			::SetFocus(m_hWndClient);

		bHandled = FALSE;
		return 1;
	}

// "Overridden" from base class
public:
	void OnDocked(HDOCKBAR hBar,bool bHorizontal)
	{
		DWORD dwStyle = GetWindowLong(GWL_STYLE)&(~WS_SIZEBOX);		
		SetWindowLong( GWL_STYLE, dwStyle);

		baseClass::OnDocked(hBar,bHorizontal);
	}
	void OnUndocked(HDOCKBAR hBar)
	{
		DWORD dwStyle = GetWindowLong(GWL_STYLE) | WS_SIZEBOX;
		SetWindowLong( GWL_STYLE , dwStyle);
		
		baseClass::OnUndocked(hBar);
	}
};

#endif //DF_AUTO_HIDE_FEATURES

#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本色道久久综合亚洲91| 精品视频色一区| 午夜国产精品一区| 国产欧美精品一区| 制服丝袜国产精品| 日本韩国欧美在线| 成人手机在线视频| 蜜臀av性久久久久蜜臀aⅴ| 亚洲欧美激情视频在线观看一区二区三区 | 制服.丝袜.亚洲.中文.综合| 成人免费看视频| 精品一区二区三区视频在线观看| 亚洲美女在线一区| 国产精品三级电影| 久久综合丝袜日本网| 欧美欧美欧美欧美| 欧美中文字幕一区二区三区亚洲| 东方欧美亚洲色图在线| 麻豆成人91精品二区三区| 亚洲电影欧美电影有声小说| 中文字幕一区二区三区精华液| 精品国产一区二区三区久久久蜜月| 欧美性高清videossexo| 99re6这里只有精品视频在线观看| 国产麻豆91精品| 久久成人18免费观看| 日韩和欧美的一区| 午夜在线成人av| 亚洲第一成人在线| 亚洲成人久久影院| 丝袜诱惑亚洲看片| 性欧美疯狂xxxxbbbb| 亚洲一级在线观看| 亚洲观看高清完整版在线观看| 亚洲人一二三区| 亚洲欧美激情插| 亚洲免费在线视频一区 二区| 国产精品女同一区二区三区| 国产亚洲欧洲一区高清在线观看| 久久久久久久网| 国产清纯美女被跳蛋高潮一区二区久久w| 精品日韩在线观看| 精品动漫一区二区三区在线观看| 精品三级av在线| 久久精品一区二区三区不卡牛牛 | 亚洲欧美日韩精品久久久久| 国产精品成人免费在线| 国产精品国产三级国产有无不卡 | 91老司机福利 在线| 欧美日韩大陆在线| 欧美一级久久久久久久大片| 欧美一级一区二区| 精品国产欧美一区二区| 久久久久久久久久久黄色| 国产网站一区二区| 亚洲欧美日韩久久| 日韩国产一区二| 另类综合日韩欧美亚洲| 国产福利精品一区二区| 97久久久精品综合88久久| 色天使久久综合网天天| 欧美久久久久久久久| www久久精品| 亚洲少妇中出一区| 五月激情综合婷婷| 狠狠色狠狠色综合系列| 成人av网站在线观看| 91国内精品野花午夜精品| 56国语精品自产拍在线观看| 精品国产乱码久久久久久久 | 欧美日韩欧美一区二区| 日韩一级高清毛片| 中文在线一区二区| 亚洲自拍另类综合| 九九九久久久精品| 91在线视频免费观看| 3d动漫精品啪啪| 亚洲国产精品二十页| 亚洲国产中文字幕在线视频综合 | 亚洲第一电影网| 国产一区二区三区在线观看精品| av不卡在线观看| 7777精品伊人久久久大香线蕉经典版下载 | 国产一区999| 在线视频中文字幕一区二区| 欧美岛国在线观看| 亚洲欧洲国产专区| 激情五月婷婷综合| 欧美性受极品xxxx喷水| 久久人人爽人人爽| 午夜精彩视频在线观看不卡| 国产成人一级电影| 91精品国产高清一区二区三区蜜臀 | 成人欧美一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| av网站免费线看精品| 在线成人av影院| 综合网在线视频| 精品午夜一区二区三区在线观看 | 久久久久久一级片| 婷婷激情综合网| 91麻豆免费看| 国产午夜三级一区二区三| 日韩精品电影在线| 色综合天天综合狠狠| 久久久久青草大香线综合精品| 亚洲v日本v欧美v久久精品| 97精品国产露脸对白| 精品99一区二区三区| 午夜激情久久久| 欧美性受xxxx黑人xyx| 国产精品美女久久久久高潮| 久久成人免费电影| 5566中文字幕一区二区电影| 亚洲色图视频网站| bt7086福利一区国产| 久久―日本道色综合久久| 久久国产精品72免费观看| 在线不卡中文字幕| 亚洲成a人v欧美综合天堂下载| 色哟哟一区二区三区| 国产亚洲一区字幕| 国产一区二区三区电影在线观看| 91精品国产欧美一区二区18| 亚洲午夜日本在线观看| 欧美中文字幕一区二区三区 | 欧美男女性生活在线直播观看| 一区二区三区鲁丝不卡| av成人免费在线观看| 中文字幕在线观看不卡视频| 国产 日韩 欧美大片| 久久精品亚洲国产奇米99| 久久成人免费电影| 久久一区二区视频| 国产一区二区女| 久久久av毛片精品| 国产精品亚洲专一区二区三区 | 亚洲国产岛国毛片在线| 国产精品1024久久| 国产精品青草久久| 成人福利在线看| 亚洲色图一区二区| 在线免费观看一区| 视频一区二区中文字幕| 91精品免费在线| 国产专区综合网| 国产精品毛片久久久久久久 | 欧美日韩国产高清一区二区三区| 亚洲午夜免费电影| 3d成人h动漫网站入口| 青青草国产精品97视觉盛宴| 欧美大尺度电影在线| 国产在线一区观看| 国产日韩欧美精品综合| 91丝袜美女网| 午夜欧美一区二区三区在线播放| 91精品免费在线观看| 国产一区91精品张津瑜| 中文字幕一区二区日韩精品绯色| 色欧美88888久久久久久影院| 亚洲宅男天堂在线观看无病毒| 91精品福利在线一区二区三区| 九色综合国产一区二区三区| 国产精品美女久久久久久久| 色狠狠一区二区三区香蕉| 日本午夜精品一区二区三区电影| 久久久天堂av| 91成人网在线| 久久99国产精品久久99| 成人免费在线播放视频| 欧美日韩一区二区三区视频| 美国十次了思思久久精品导航| 国产午夜精品一区二区| 在线视频中文字幕一区二区| 韩国精品一区二区| 亚洲免费观看视频| 精品国产一区二区精华| av影院午夜一区| 婷婷成人激情在线网| 久久久国产午夜精品| 欧美视频在线不卡| 国产91丝袜在线观看| 午夜欧美一区二区三区在线播放| 久久影院电视剧免费观看| 色综合久久88色综合天天6| 久久精品国产亚洲高清剧情介绍| 中文字幕一区二区三区不卡| 欧美成人国产一区二区| 在线免费观看一区| 成人涩涩免费视频| 日韩高清在线不卡| 中文字幕在线不卡一区| 日韩免费视频一区二区| 一本大道久久a久久综合| 国产一区二区视频在线| 天天操天天干天天综合网| 国产精品欧美一区喷水| 欧美不卡一区二区三区四区| 欧美午夜一区二区三区免费大片| 国产乱码精品一区二区三区av|