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

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

?? tabdockingbox.h

?? 一款最完整的工業組態軟源代碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
		if(m_wnd.m_hWnd!=0)
		{
			assert(m_wnd.GetParent()==m_hWnd);
			int len= m_wnd.GetWindowTextLength()+1;
			TCHAR* ptxt = new TCHAR[len];
			m_wnd.GetWindowText(ptxt,len);
			SetWindowText(ptxt);
			HICON hIcon=m_wnd.GetIcon(FALSE);
			SetIcon(hIcon , FALSE);
			delete [] ptxt;
		}
	}

	void IsStillAlive()
	{
		int n=m_tabs.GetItemCount();
		if(n<=1)
		{
			PostMessage(WM_CLOSE,TRUE);
			if(n==0)
				Hide();
		}
	}
	bool CanBeClosed(unsigned long param)
	{
		int count=m_tabs.GetItemCount();
		bool bRes=(param==0);
		if(!bRes)
		{
			bRes=count<2;
			if(bRes && (count!=0))
			{
				HWND hWnd=GetItemHWND(0);
				assert(hWnd);
				if(hWnd)
				{
					::ShowWindow(hWnd,SW_HIDE);
					RemoveWindow(hWnd);
					if(IsDocking())
					{
						DFDOCKREPLACE dockHdr;
						dockHdr.hdr.hBar=GetOwnerDockingBar();
						dockHdr.hdr.hWnd=m_hWnd;
						dockHdr.hWnd=hWnd;
						m_docker.Replace(&dockHdr);
					}
					else
					{
						RECT rc;
						BOOL bRes=GetWindowRect(&rc);
						if(bRes)
							bRes=::SetWindowPos(hWnd,HWND_TOP,rc.left, rc.top,
													rc.right - rc.left, rc.bottom - rc.top,SWP_SHOWWINDOW);
					}
					assert(!IsDocking());
				}
			}
		}
		else
		{
			bRes=count<2;
			if(!bRes)
			{
				int curSel=m_tabs.GetCurSel();
				assert(curSel!=-1);
				HWND hWnd=GetItemHWND(curSel);      
				assert(hWnd);
				if(hWnd)
				{
					::PostMessage(hWnd, WM_CLOSE, 0, 0);
					if(curSel < (count-1))
					{
						m_tabs.SetCurSel(curSel+1);
					}
					else if(curSel > 0 && count > 1)
					{
						m_tabs.SetCurSel(curSel-1);
					}
					bRes = false;
				}
				else
				{
					bRes=baseClass::CanBeClosed(param);
				}
			}
		}
		return bRes;
	}
public:
	bool OnGetDockingPosition(DFDOCKPOS* pHdr) const
	{
		pHdr->hdr.hBar=GetOwnerDockingBar();
		bool bRes=baseClass::OnGetDockingPosition(pHdr);
		pHdr->nIndex=FindItem(pHdr->hdr.hWnd);
		assert(pHdr->nIndex!=-1);
		if(m_tabs.GetItemCount()==2)
			pHdr->hdr.hBar=GetItemHWND((pHdr->nIndex==0)?1:0);
		else
			pHdr->hdr.hBar=m_hWnd;
		if(m_wnd.m_hWnd==pHdr->hdr.hWnd)
			pHdr->dwDockSide|=CDockingSide::sActive;
		return bRes;
	}

	bool OnSetDockingPosition(DFDOCKPOS* pHdr)
	{
		assert(pHdr->hdr.hWnd);
		int index=pHdr->nIndex;
		int n=m_tabs.GetItemCount();
		if( (index<0) || (index>n) )
								index=n;
		return (InsertWndTab(index,pHdr->hdr.hWnd)!=-1);
	}
#ifdef DF_AUTO_HIDE_FEATURES
	bool PinUp(const CDockingSide& side,unsigned long width,bool bVisualize=false)
	{
		if(IsDocking())
					Undock();
		DFPINUP pinHdr;
		pinHdr.hdr.hWnd=m_wnd;
		pinHdr.hdr.hBar=GetOwnerDockingBar();
//		pinHdr.hdr.code=DC_PINUP;
		pinHdr.dwDockSide=side;
		pinHdr.nWidth=width;
		pinHdr.dwFlags=(bVisualize) ? DFPU_VISUALIZE : 0 ;
		pinHdr.n=m_tabs.GetItemCount();
		bool bRes=false;
		try{
			pinHdr.phWnds=new HWND[pinHdr.n];
			int n=pinHdr.n;
			while(--n>=0)
			{
				pinHdr.phWnds[n]=GetItemHWND(n);
				assert(::IsWindow(pinHdr.phWnds[n]));
				RemoveWindow(pinHdr.phWnds[n]);
			}

			bRes=m_docker.PinUp(&pinHdr);
			delete [] pinHdr.phWnds;
			PostMessage(WM_CLOSE);
		}
		catch(std::bad_alloc& /*e*/)
		{
		}
		return bRes;
	}
#endif

    DECLARE_WND_CLASS(_T("CTabDockingBox"))
    BEGIN_MSG_MAP(thisClass)
		MESSAGE_HANDLER(WM_CREATE, OnCreate)
		MESSAGE_HANDLER(WM_SIZE, OnSize)
		MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
		MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
		MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)

///11	NOTIFY_CODE_HANDLER(TCN_SELCHANGE, OnTabSelChange)
///11	NOTIFY_CODE_HANDLER(TCN_TABLEAVCTRL, OnTabLeavCtrl)
		NOTIFY_CODE_HANDLER(CTCN_SELCHANGE, OnTabSelChange)
		NOTIFY_CODE_HANDLER(CTCN_TABLEAVCTRL, OnTabLeavCtrl)

		NOTIFY_CODE_HANDLER(NM_DBLCLK, OnTabDblClk)
		REFLECT_NOTIFICATIONS()
        CHAIN_MSG_MAP(baseClass)
    END_MSG_MAP()

	LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
	{
///11	m_tabs.Create(m_hWnd, rcDefault, NULL,WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | TCS_TOOLTIPS | TCS_BOTTOM);
		m_tabs.Create(m_hWnd, rcDefault, NULL,WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CTCS_TOOLTIPS | CTCS_BOTTOM);
		BOOL bRes=m_images.Create(16, 16, ILC_COLOR32 | ILC_MASK , 0, 5);
		assert(bRes);
		if(bRes)
			m_tabs.SetImageList(m_images);
		return 0;
	}

    LRESULT OnSize(UINT /*uMsg*/, WPARAM wParam, LPARAM /*lParam*/, BOOL& bHandled)
    {
        if(wParam != SIZE_MINIMIZED )
        {
			RECT rc;
			GetClientRect(&rc);
			m_tabs.SetWindowPos(NULL, &rc ,SWP_NOZORDER | SWP_NOACTIVATE);
			AdjustCurentItem();
        }
        bHandled = FALSE;
        return 1;
    }

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

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

	LRESULT OnSetFocus(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
	{
		int index=m_tabs.GetCurSel();
		if(index!=-1)
		{
			HWND hWnd=GetItemHWND(index);
			if(hWnd != NULL && ::IsWindowVisible(hWnd))
				::SetFocus(hWnd);
		}

		bHandled = FALSE;
		return 1;
	}

	LRESULT OnTabSelChange(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/)
	{
		if(pnmh->hwndFrom==m_tabs)
		{
			int index=m_tabs.GetCurSel();
			if(index!=-1)
			{
				HWND hWnd=GetItemHWND(index);
				if(hWnd!=NULL && (hWnd!=m_wnd) )
				{
					if(m_wnd.m_hWnd!=NULL)
					{
						assert(::GetParent(m_wnd.m_hWnd)==m_hWnd);
						m_wnd.ShowWindow(SW_HIDE);
					}
					m_wnd=hWnd;
					UpdateWindowCaption();
					AdjustCurentItem();
					if(hWnd != NULL && ::IsWindowVisible(hWnd))
						::SetFocus(hWnd);
				}
			}
		}
		return 0;
	}

	LRESULT OnTabLeavCtrl(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/)
	{
		BOOL bRes=TRUE;
		if(pnmh->hwndFrom==m_tabs)
		{
			int index=m_tabs.GetCurSel();
			assert(index!=-1);
			if(index!=-1)
			{
				HWND hWnd=GetItemHWND(index);
				assert(::IsWindow(hWnd));
				CRect rc;
				::GetWindowRect(hWnd,&rc);
				::PostMessage(hWnd,WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(rc.right,rc.bottom));
				/*
				DWORD dwPos = ::GetMessagePos();
				CPoint pt(GET_X_LPARAM(dwPos), GET_Y_LPARAM(dwPos));
				DWORD style=m_tabs.GetWindowLong(GWL_STYLE);
///11			if(style&TCS_VERTICAL)
				if(style&CTCS_VERTICAL)
				{
///11				if(style&TCS_BOTTOM)
					if(style&CTCS_BOTTOM)
						pt.x=2*rc.right-pt.x;
					else
						pt.x=2*rc.left-pt.x;
				}
				else
				{
///11				if(style&TCS_BOTTOM)
					if(style&CTCS_BOTTOM)
						pt.y=2*rc.bottom-pt.y;
					else
						pt.y=2*rc.top-pt.y;

				}
				::PostMessage(hWnd,WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(pt.x,pt.y));
				*/
				bRes=FALSE;
			}
		}
		return bRes;
	}
	LRESULT OnTabDblClk(int /*idCtrl*/, LPNMHDR pnmh, BOOL& /*bHandled*/)
	{
		if(pnmh->hwndFrom==m_tabs)
		{
			int index=m_tabs.GetCurSel();
			assert(index!=-1);
			if(index!=-1)
			{
				HWND hWnd=GetItemHWND(index);
				assert(::IsWindow(hWnd));
				::PostMessage(hWnd,WM_NCLBUTTONDBLCLK,HTCAPTION,0);
			}
		}
		return 0;
	}
protected:
	CImageList	m_images;
	CTabCtrl	m_tabs;
	CWindow		m_wnd;
////
	int			m_prevSelItem;
	int			m_prevItem;
	int			m_prevPos;
};

template <class TCaption,class TBox,DWORD t_dwStyle = 0, DWORD t_dwExStyle = 0>
struct CBoxedDockingWindowTraits
		: CDockingBoxTraits<TCaption,t_dwStyle,t_dwExStyle>
{
	typedef TBox	CBox;
};

typedef CBoxedDockingWindowTraits<COutlookLikeCaption, CTabDockingBox<COutlookLikeDockingBoxTraits>,
									WS_OVERLAPPEDWINDOW | WS_POPUP | WS_VISIBLE |
									WS_CLIPCHILDREN | WS_CLIPSIBLINGS,WS_EX_TOOLWINDOW>
								COutlookLikeBoxedDockingWindowTraits;

typedef CBoxedDockingWindowTraits<COutlookLikeExCaption, CTabDockingBox<COutlookLikeExDockingBoxTraits>,
									WS_OVERLAPPEDWINDOW | WS_POPUP | WS_VISIBLE |
									WS_CLIPCHILDREN | WS_CLIPSIBLINGS,WS_EX_TOOLWINDOW>
								COutlookLikeExBoxedDockingWindowTraits;

typedef CBoxedDockingWindowTraits<CVC6LikeCaption, CTabDockingBox<CVC6LikeDockingBoxTraits>,
									WS_OVERLAPPEDWINDOW | WS_POPUP | WS_VISIBLE |
									WS_CLIPCHILDREN | WS_CLIPSIBLINGS,WS_EX_TOOLWINDOW>
								CVC6LikeBoxedDockingWindowTraits;


}//namespace dockwins

#endif // __WTL_DW__TABDOCKINGBOX_H__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91蜜桃免费观看视频| 午夜精品久久久久久久99樱桃| 日韩av一区二区三区四区| 91亚洲精品一区二区乱码| 中文字幕精品一区二区精品绿巨人 | 亚洲综合自拍偷拍| 91片黄在线观看| 中文字幕一区二区三| 成+人+亚洲+综合天堂| 国产精品欧美综合在线| 成人18视频日本| 国产精品久久99| 色呦呦国产精品| 亚洲电影第三页| 欧美大片一区二区| 国产福利一区在线| 亚洲三级在线看| 91国内精品野花午夜精品| 丝袜美腿亚洲色图| 精品久久久影院| 99视频一区二区三区| 亚洲国产精品影院| 欧美一级专区免费大片| 国产精品一品视频| 国产精品对白交换视频| 欧美精品在线视频| 成人精品在线视频观看| 亚洲成人777| 国产亚洲精品福利| 在线观看一区日韩| 国产成人自拍网| 中文字幕在线观看不卡视频| 欧美日本一道本在线视频| 丁香婷婷综合激情五月色| 亚洲男同性恋视频| 中文字幕一区二区三区四区不卡| 久久久777精品电影网影网| 久久久亚洲高清| 中文字幕乱码日本亚洲一区二区 | 亚洲摸摸操操av| 亚洲精品你懂的| 日韩国产高清在线| 国产精品中文字幕一区二区三区| 国产91丝袜在线播放0| 色呦呦一区二区三区| 在线91免费看| 色999日韩国产欧美一区二区| 亚洲第一在线综合网站| 亚洲精品视频在线看| 亚洲欧美日韩电影| 日韩毛片高清在线播放| 国产精品二区一区二区aⅴ污介绍| 久久综合一区二区| 国产欧美日韩在线看| 久久精品水蜜桃av综合天堂| 久久久久久久综合日本| 欧美激情一区二区三区全黄| 亚洲欧美一区二区在线观看| 亚洲欧美另类久久久精品2019| 亚洲综合免费观看高清在线观看| 亚洲国产一区二区三区青草影视| 青青草精品视频| 国产精品一二一区| 一本大道综合伊人精品热热 | 国产一区二区h| 成人综合在线视频| 亚洲在线视频免费观看| 在线观看亚洲一区| 国模无码大尺度一区二区三区 | 国产精品女上位| 精品国产伦一区二区三区观看方式 | 亚洲日本在线观看| 亚洲成人动漫在线观看| 激情深爱一区二区| www.日韩精品| 欧美一级淫片007| 国产精品乱码久久久久久| 亚洲精品自拍动漫在线| 精品一区二区三区在线播放视频 | 国产一区二区三区在线看麻豆| av在线不卡观看免费观看| 日韩精品一区二区三区四区 | 国产午夜精品久久久久久免费视 | 综合精品久久久| 另类的小说在线视频另类成人小视频在线| 激情综合网天天干| 欧美理论电影在线| 国产精品人成在线观看免费 | 色哟哟精品一区| 国产精品免费av| 国产精品乡下勾搭老头1| 欧美一区二区在线视频| 亚洲成人一区在线| 91国偷自产一区二区三区成为亚洲经典| 欧美一区二区三区日韩| 中文字幕国产精品一区二区| 国产一区二区三区在线观看精品 | 自拍偷自拍亚洲精品播放| 久久99精品国产麻豆婷婷 | 亚洲成a人片在线不卡一二三区| 老汉av免费一区二区三区| 3d成人h动漫网站入口| 天堂影院一区二区| 宅男噜噜噜66一区二区66| 免费一级片91| 日韩一级片在线观看| 六月丁香综合在线视频| 亚洲精品一区二区三区精华液 | 国产精品精品国产色婷婷| 成人黄色一级视频| 亚洲男人天堂av| 欧美午夜影院一区| 男人的j进女人的j一区| 精品理论电影在线| 成人动漫av在线| 偷拍一区二区三区| 欧美一级欧美一级在线播放| 国产精品综合视频| 亚洲激情在线播放| 精品剧情在线观看| 成人国产亚洲欧美成人综合网| 中文字幕在线不卡| 欧美日韩国产成人在线免费| 国内精品国产成人| 夜夜精品视频一区二区 | 白白色 亚洲乱淫| 亚洲国产成人av网| 国产精品乱子久久久久| 91.com视频| 色婷婷激情一区二区三区| 免费观看在线色综合| 国产精品国产三级国产普通话三级 | 成人精品免费网站| 免费看日韩a级影片| 一区二区不卡在线播放| 日本一区二区电影| 欧美精品一区二| 91精品在线麻豆| 欧美日精品一区视频| 99久久国产综合精品色伊| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲色图都市小说| 欧美国产精品专区| 久久久99精品久久| 欧美成人福利视频| 欧美一二三区在线观看| 在线不卡的av| 日韩限制级电影在线观看| 欧美一级一区二区| 欧美夫妻性生活| 欧美一区二区三级| 日韩精品一区二| 精品少妇一区二区三区免费观看 | 日韩一级免费一区| 欧美精选一区二区| 欧美成人国产一区二区| 久久久亚洲高清| 国产精品人人做人人爽人人添| 精品日本一线二线三线不卡| 欧美视频一区二区在线观看| 日韩三级免费观看| 亚洲6080在线| 色偷偷88欧美精品久久久| 亚洲综合无码一区二区| 国产精品一区二区久激情瑜伽 | 国产精品一区二区在线看| 色婷婷激情久久| 中文字幕一区av| 国产高清亚洲一区| 日韩免费观看2025年上映的电影| 亚洲一区二区av电影| 波多野结衣一区二区三区| 日韩精品一区在线| 国产一区二区三区精品视频| 欧美天天综合网| 亚洲成人av电影在线| 欧美中文字幕亚洲一区二区va在线| 国产丝袜欧美中文另类| 高清久久久久久| 中文字幕 久热精品 视频在线| 波波电影院一区二区三区| 国产精品久久久久影院老司| jizz一区二区| 亚洲成人免费观看| 欧美日韩国产小视频在线观看| 午夜伦理一区二区| 26uuu久久综合| 成人99免费视频| 亚洲国产一区二区三区青草影视| 欧美日韩中文精品| 激情综合五月婷婷| 亚洲乱码日产精品bd | 欧美综合在线视频| 毛片基地黄久久久久久天堂| 久久精品人人做| 欧美综合一区二区三区| 精品一区二区免费看| 国产精品情趣视频| 在线不卡中文字幕播放| 国产福利精品一区|