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

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

?? dockingwindow.h

?? 一款最完整的工業組態軟源代碼
?? H
?? 第 1 頁 / 共 3 頁
字號:
			{
				T* pThis=static_cast<T*>(this);
				bRes=pThis->PinUp(CDockingSide(dockHdr.dwDockSide),dockHdr.nWidth,bVisualize);
			}
		}
		return bRes;
	}
#endif
protected:
	BEGIN_MSG_MAP(thisClass)
		if(IsDocking())
		{
			MESSAGE_HANDLER(WM_WINDOWPOSCHANGING,OnWindowPosChanging)
			MESSAGE_HANDLER(WM_NCCALCSIZE, OnNcCalcSize)
			MESSAGE_HANDLER(WM_NCACTIVATE, OnNcActivate)
			MESSAGE_HANDLER(WM_NCHITTEST,OnNcHitTest)
			MESSAGE_HANDLER(WM_NCPAINT,OnNcPaint)
			MESSAGE_HANDLER(WM_SETTEXT,OnCaptionChange)
			MESSAGE_HANDLER(WM_SETICON,OnCaptionChange)
			MESSAGE_HANDLER(WM_NCLBUTTONDOWN, OnNcLButtonDown)
			MESSAGE_HANDLER(WM_NCLBUTTONUP,OnNcLButtonUp)
			MESSAGE_HANDLER(WM_NCLBUTTONDBLCLK,OnNcLButtonDblClk)
#ifdef DF_FOCUS_FEATURES
			ATLASSERT(CDockingFocusHandler::This());
			CHAIN_MSG_MAP_ALT_MEMBER((*CDockingFocusHandler::This()),0)
#endif
		}
		MESSAGE_HANDLER(WM_GETMINMAXINFO,OnGetMinMaxInfo)
		MESSAGE_HANDLER(WM_SETTINGCHANGE,OnSettingChange)
		MESSAGE_HANDLER(WM_SYSCOLORCHANGE,OnSysColorChange)
		CHAIN_MSG_MAP(baseClass)
	END_MSG_MAP()

	LRESULT OnGetMinMaxInfo(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
	{
		T* pThis=static_cast<T*>(this);
		LRESULT lRes=pThis->DefWindowProc(uMsg,wParam,lParam);
		pThis->GetMinMaxInfo(reinterpret_cast<LPMINMAXINFO>(lParam));
		return lRes;
	}

	LRESULT OnSettingChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
	{
		if(!IsDocking())
		{
			// If we're floating, we're a top level window.
			// We might be getting this message before the main frame
			// (which is also a top-level window).
			// The main frame handles this message, and refreshes
			// system settings cached in CDWSettings.  In case we
			// are getting this message before the main frame,
			// update these cached settings (so that when we update
			// our caption's settings that depend on them,
			// its using the latest).
			CDWSettings settings;
			settings.Update();

			// In addition, because we are a top-level window,
			// we should be sure to send this message to all our descendants
			// in case there are common controls and other windows that
			// depend on cached system metrics.
			this->SendMessageToDescendants(uMsg, wParam, lParam, TRUE);
		}

		m_caption.UpdateMetrics();

		T* pThis=static_cast<T*>(this);
		pThis->SetWindowPos(NULL,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);

		bHandled = FALSE;
		return 1;
	}

	LRESULT OnSysColorChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
	{
		if(!IsDocking())
		{
			// If we're floating, we're a top level window.
			// We might be getting this message before the main frame
			// (which is also a top-level window).
			// The main frame handles this message, and refreshes
			// system settings cached in CDWSettings.  In case we
			// are getting this message before the main frame,
			// update these cached settings (so that when we update
			// our caption's settings that depend on them,
			// its using the latest).
			CDWSettings settings;
			settings.Update();

			// In addition, because we are a top-level window,
			// we should be sure to send this message to all our descendants
			// in case there are common controls and other windows that
			// depend on cached system metrics.
			this->SendMessageToDescendants(uMsg, wParam, lParam, TRUE);
		}

		m_caption.UpdateMetrics();

		T* pThis=static_cast<T*>(this);
		pThis->SetWindowPos(NULL,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);

		bHandled = FALSE;
		return 1;
	}

	LRESULT OnWindowPosChanging(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
	{
		return NULL;
	}

	LRESULT OnNcActivate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
	{
		bHandled=IsWindowEnabled();
		return TRUE;
	}

	LRESULT OnNcCalcSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
	{
        T* pThis=static_cast<T*>(this);
		CRect* pRc=reinterpret_cast<CRect*>(lParam);
		CPoint ptTop(pRc->TopLeft());
		(*pRc)-=ptTop;
		pThis->NcCalcSize(pRc);
		(*pRc)+=ptTop;
		return NULL;
	}

	LRESULT OnNcHitTest(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
	{
		CPoint pt(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
        T* pThis=static_cast<T*>(this);
		CRect rcWnd;
		GetWindowRect(&rcWnd);
		pt.x-=rcWnd.TopLeft().x;
		pt.y-=rcWnd.TopLeft().y;
		return pThis->NcHitTest(pt);
	}
//OnSetIcon
//OnSetText
	LRESULT OnCaptionChange(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
	{
//		LockWindowUpdate();
		DWORD style = ::GetWindowLong(m_hWnd,GWL_STYLE);
		::SetWindowLong(m_hWnd, GWL_STYLE, style&(~WS_CAPTION));
		LRESULT lRes=DefWindowProc(uMsg,wParam,lParam);
		::SetWindowLong(m_hWnd, GWL_STYLE, style);
		T* pThis=static_cast<T*>(this);
		pThis->SetWindowPos(NULL,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
//		CWindowDC dc(m_hWnd);
//		pThis->NcDraw(dc);
//		LockWindowUpdate(FALSE);
		return lRes;
	}
	LRESULT OnNcPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
	{
		CWindowDC dc(m_hWnd);
		T* pThis=static_cast<T*>(this);
		pThis->NcDraw(dc);
		return NULL;
	}

	LRESULT OnNcLButtonDown(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled)
	{
		bHandled=m_caption.OnAction(m_hWnd, (unsigned int)wParam);
		if(!bHandled && wParam == HTCAPTION)
			this->SetFocus();

		return !bHandled;
	}

	LRESULT OnNcLButtonUp(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled)
	{
		T* pThis=static_cast<T*>(this);
		HWND hWndFocus = ::GetFocus();
		switch(wParam)
		{
			case HTCLOSE:
				bHandled=pThis->CloseBtnPress();
				break;
#ifdef DF_AUTO_HIDE_FEATURES
			case HTPIN:
				bHandled=pThis->PinBtnPress();
				break;
#endif
			default:
				bHandled=FALSE;
		}

		if(hWndFocus != ::GetFocus())
		{
			if(::IsWindow(hWndFocus) && ::IsWindowVisible(hWndFocus))
			{
				::SetFocus(hWndFocus);
			}
			else
			{
				::SetFocus(this->GetTopLevelParent());
			}
		}
        return 0;
	}
	LRESULT OnNcLButtonDblClk(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
	{
		return 0;
	}
protected:
	CCaption	m_caption;
};

template <class T,
          class TBase = CWindow,
          class TDockingWinTraits = CEmptyTitleDockingWindowTraits>
class ATL_NO_VTABLE CTitleDockingWindowImpl
			: public CTitleDockingWindowBaseImpl< T, TBase, TDockingWinTraits >
{
    typedef CTitleDockingWindowBaseImpl< T, TBase, TDockingWinTraits >	baseClass;
    typedef CTitleDockingWindowImpl< T, TBase, TDockingWinTraits >		thisClass;
public:
	CTitleDockingWindowImpl()
	{
		::ZeroMemory(&m_pos, sizeof(DFDOCKPOS));
		m_pos.hdr.hBar=HNONDOCKBAR;
	}
	virtual bool Undock()
	{
		assert(IsDocking());
		GetDockingPosition(&m_pos);
		return baseClass::Undock();
	}
	virtual bool Hide()
	{
		bool bRes=true;
		if(IsDocking())
		{
			bRes=GetDockingPosition(&m_pos);
			assert(bRes);
			if(bRes)
			//	bRes=Undock();
				bRes=Float(&m_rcUndock,SWP_HIDEWINDOW);
			assert(bRes);
		}
		else
			m_pos.hdr.hBar=HNONDOCKBAR;
		return (bRes && ShowWindow(SW_HIDE));
	}
	virtual bool Show()
	{
		bool bRes=true;
		if(m_pos.hdr.hBar!=HNONDOCKBAR)
			bRes=SetDockingPosition(&m_pos);
		else
			ShowWindow(SW_SHOW);
		assert(bRes);
		return bRes;
	}

	bool Toggle()
	{
		bool bRes=(static_cast<T*>(this)->IsWindowVisible()!=FALSE);
		if(bRes)
			Hide();
		else
			Show();
		return bRes;
	}
	bool GetDockingWindowPlacement(DFDOCKPOSEX* pHdr) const
	{
		bool bRes=baseClass::GetDockingWindowPlacement(pHdr);
		pHdr->bVisible=static_cast<const T*>(this)->IsWindowVisible();
		if((!pHdr->bDocking)
			&& (!pHdr->bVisible)
				&& (m_pos.hdr.hBar!=HNONDOCKBAR))
			::CopyMemory(&pHdr->dockPos,&m_pos,sizeof(DFDOCKPOS));
		return bRes;
	}
	bool SetDockingWindowPlacement(DFDOCKPOSEX* pHdr)
	{
		bool bRes=true;
		pHdr->dockPos.hdr.hWnd=m_hWnd;
		::CopyMemory(&m_pos,&(pHdr->dockPos),sizeof(DFDOCKPOS));
		if(pHdr->bVisible)
			bRes=baseClass::SetDockingWindowPlacement(pHdr);
		else
		{
			if(IsDocking())
				Undock();
			::CopyRect(&m_rcUndock,&pHdr->rect);
			bRes=(SetWindowPos(NULL,&m_rcUndock,
					SWP_NOZORDER | SWP_HIDEWINDOW |	SWP_NOACTIVATE )!=FALSE);
		}

#ifdef DF_AUTO_HIDE_FEATURES
		// Update from Peter Carlson.
		//  A fix for the pin restore problem.
		CDockingSide side(pHdr->dockPos.dwDockSide);
		if (side.IsPinned())
			PinUp(side, (side.IsHorizontal() ? pHdr->dockPos.nHeight : pHdr->dockPos.nWidth));
		//
#endif

		return bRes;
	}

	bool CanBeClosed(unsigned long /*param*/)
	{
		HWND hWndFocus = ::GetFocus();

		this->Hide();

		if(hWndFocus != ::GetFocus())
		{
			if(::IsWindow(hWndFocus) && ::IsWindowVisible(hWndFocus))
			{
				::SetFocus(hWndFocus);
			}
			else
			{
				::SetFocus(this->GetTopLevelParent());
			}
		}
		return false;
	}

	BEGIN_MSG_MAP(thisClass)
		MESSAGE_HANDLER(WM_CLOSE, OnClose)
		MESSAGE_HANDLER(WM_NCLBUTTONDBLCLK, OnNcLButtonDblClk)
		CHAIN_MSG_MAP(baseClass)
	END_MSG_MAP()

	LRESULT OnClose(UINT /*uMsg*/, WPARAM wParam, LPARAM/* lParam*/, BOOL& bHandled)
	{
		bHandled=!(static_cast<T*>(this)->CanBeClosed((unsigned long)wParam));
		return 0;
	}
	LRESULT OnNcLButtonDblClk(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled)
	{
		if(IsIconic() || IsZoomed())
		{
			// Docking a minimised window is a bad idea!
			// Let Windows restore.
			bHandled = FALSE;
			return 0;
		}

		if(wParam==HTCAPTION)
		{
			if(IsDocking())
				Float();
			else
			{
				if(m_pos.hdr.hBar!=HNONDOCKBAR)
					SetDockingPosition(&m_pos);
			}
		}
		return 0;
	}
protected:
	DFDOCKPOS m_pos;
};

#define COMMAND_TOGGLE_MEMBER_HANDLER(id, member) \
	if(uMsg == WM_COMMAND && id == LOWORD(wParam)) \
	{ \
		member.Toggle(); \
	}

//please don't use CStateKeeper class anymore!
//this class is obsolete and provided only for compatibility with previous versions.
//the CTitleDockingWindowImpl class provide all functionality of CStateKeeper
template<class T>
struct CStateKeeper : public T
{
};

//please don't use CTitleExDockingWindowImpl class anymore!
//this class is obsolete and provided only for compatibility with previous versions.
//the CTitleDockingWindowImpl class provide all functionality of CTitleExDockingWindowImpl
template <class T,
          class TBase = CWindow,
          class TDockingWinTraits = CEmptyTitleDockingWindowTraits>
struct ATL_NO_VTABLE CTitleExDockingWindowImpl : CTitleDockingWindowImpl< T, TBase, TDockingWinTraits >
{
};

}//namespace dockwins
#endif // __WTL_DW__DOCKINGWINDOW_H__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区 在线观看视频| 亚洲女性喷水在线观看一区| 欧美国产日本韩| 人禽交欧美网站| 日韩欧美在线1卡| 国产专区欧美精品| 国产农村妇女毛片精品久久麻豆| 亚洲成在人线在线播放| 成人一级黄色片| 久久嫩草精品久久久精品| 亚洲五码中文字幕| 色88888久久久久久影院按摩| 久久综合色综合88| www.欧美色图| 亚洲另类在线制服丝袜| 91福利社在线观看| 免费观看在线综合| 91麻豆精品国产91久久久资源速度| aaa欧美日韩| 综合色中文字幕| 日韩三级视频中文字幕| 日韩精品一区二区三区视频播放 | 欧美乱熟臀69xxxxxx| 亚洲精品伦理在线| 久久久久久9999| 成人黄色一级视频| 午夜天堂影视香蕉久久| 在线91免费看| av一二三不卡影片| 久久成人久久爱| 亚洲天堂精品在线观看| 欧美日韩国产不卡| 国产麻豆午夜三级精品| 亚洲成人午夜电影| 亚洲天堂av一区| 欧美做爰猛烈大尺度电影无法无天| 另类成人小视频在线| 亚洲欧美一区二区三区久本道91| 欧美日韩五月天| 99这里都是精品| 色欧美日韩亚洲| 国产乱一区二区| 99在线精品视频| 国产精品麻豆欧美日韩ww| 日韩精品一区二区三区蜜臀| 色噜噜久久综合| 成人免费视频网站在线观看| 国产精品综合视频| 另类综合日韩欧美亚洲| 九色综合国产一区二区三区| 国产精品久久一卡二卡| 久久一区二区三区国产精品| 国产欧美在线观看一区| 国产精品久久久久久久裸模 | 日本一不卡视频| 三级久久三级久久久| 日韩一区二区三区视频| 久久精品视频一区二区三区| 欧美成人精品1314www| 欧美大片在线观看| 欧美不卡激情三级在线观看| 欧美韩日一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋| 99热99精品| 久久蜜桃av一区精品变态类天堂| 久久亚洲精华国产精华液| 久久精品一区蜜桃臀影院| 中文字幕日本不卡| 性久久久久久久久久久久| 黄一区二区三区| 国产精品18久久久久| 色综合久久久久| 中文乱码免费一区二区| 日韩av电影免费观看高清完整版在线观看| 捆绑变态av一区二区三区| 成人av在线电影| 国产视频一区二区在线| 亚洲成a人片综合在线| 日本福利一区二区| 久久老女人爱爱| 日韩黄色小视频| 性久久久久久久| 国产成人亚洲综合a∨婷婷图片 | 中文字幕一区二区三区不卡在线| 丝瓜av网站精品一区二区 | 日韩欧美中文字幕一区| 久久久噜噜噜久噜久久综合| 日韩高清不卡在线| 亚洲精品在线免费观看视频| www.色精品| 国产精品天天看| 国产精品综合一区二区| 91精品国产综合久久蜜臀 | 亚洲激情一二三区| 国产宾馆实践打屁股91| 国产日韩欧美a| jlzzjlzz亚洲女人18| 欧美韩国日本不卡| 欧美最猛黑人xxxxx猛交| 久久爱www久久做| 久久久美女艺术照精彩视频福利播放| 一级特黄大欧美久久久| 午夜精品久久久久久久久久 | 91在线国产观看| 国产日韩一级二级三级| 在线观看亚洲一区| 日本一区二区综合亚洲| 91精品福利视频| 亚洲精品美国一| 国产一区二区导航在线播放| 精品国产一区二区三区忘忧草 | 午夜精品久久久久| 不卡一区二区中文字幕| 蜜臀av性久久久久蜜臀aⅴ四虎| 精品久久久久久久久久久久久久久久久 | 在线中文字幕不卡| 中文字幕一区av| 精品国产乱码久久久久久蜜臀| 欧美一区二区免费| 91福利精品第一导航| 亚洲综合色网站| 久久免费精品国产久精品久久久久| 成人午夜大片免费观看| 亚洲va欧美va国产va天堂影院| 91啪九色porn原创视频在线观看| 久久精品二区亚洲w码| 一区二区三区美女视频| 亚洲成在线观看| 中文字幕一区二区三区不卡| 26uuu国产电影一区二区| 在线亚洲免费视频| aaa国产一区| 激情偷乱视频一区二区三区| 奇米777欧美一区二区| 亚洲午夜一区二区| 国产精品国产三级国产三级人妇| 国产三级精品视频| 一区在线播放视频| 一级日本不卡的影视| 亚洲精品大片www| 亚洲精品精品亚洲| 亚洲码国产岛国毛片在线| 国产精品无码永久免费888| 国产精品欧美久久久久无广告| 亚洲欧洲三级电影| 日日夜夜精品视频天天综合网| 麻豆极品一区二区三区| 91在线云播放| 狠狠色狠狠色综合日日91app| 久久精品999| 国产精品中文有码| aa级大片欧美| 国产成人在线色| 欧美群妇大交群的观看方式 | 亚洲一区影音先锋| 午夜久久久久久久久久一区二区| 美女www一区二区| 精品亚洲欧美一区| 欧美精品在线一区二区三区| aaa欧美大片| 日本一区二区免费在线| 久久嫩草精品久久久精品一| 一区二区欧美精品| 极品美女销魂一区二区三区| 欧美欧美午夜aⅴ在线观看| 欧美一卡二卡三卡四卡| 亚洲欧美一区二区视频| 五月婷婷激情综合| 欧美三级中文字幕在线观看| 欧美一级二级三级乱码| 亚洲美女淫视频| 国产一区二区三区精品视频| 精品少妇一区二区| 亚洲成人av中文| 极品少妇xxxx偷拍精品少妇| 欧美一区二区三区四区在线观看| 久久久www成人免费毛片麻豆| 一区二区三区四区精品在线视频| 激情综合网天天干| 成人avav影音| 国产精品青草久久| 国产精品自产自拍| 日韩精品一区二区三区视频播放| 日韩成人伦理电影在线观看| 91在线免费视频观看| 亚洲欧美另类小说| 91看片淫黄大片一级在线观看| 久久男人中文字幕资源站| 国产69精品一区二区亚洲孕妇| 国产日韩精品一区二区浪潮av | 久久久久成人黄色影片| 美国三级日本三级久久99| 欧美色图在线观看| 一区二区三区高清不卡| 91老司机福利 在线| 中文字幕五月欧美| 国产精品主播直播| 亚洲不卡av一区二区三区| 在线综合+亚洲+欧美中文字幕| 亚洲与欧洲av电影|