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

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

?? dbstate.h

?? 一款最完整的工業組態軟源代碼
?? H
字號:
// Copyright (c) 2002
// Sergey Klimov (kidd@ukr.net)
// WTL Docking windows
//
// This code is provided "as is", with absolutely no warranty expressed
// or implied. Any use is at your own risk.
//
// This code may be used in compiled form in any way you desire. This
// file may be redistributed unmodified by any means PROVIDING it is
// not sold for profit without the authors written consent, and
// providing that this notice and the authors name is included. If
// the source code in  this file is used in any commercial application
// then a simple email woulod be nice.

#ifndef __WTL_DW__DBSTATE_H__
#define __WTL_DW__DBSTATE_H__

#pragma once

#include <list>
#include "dwstate.h"
#include "TabDockingBox.h"

namespace sstate{

class CDockWndMgrEx: public CDockWndMgr
{
protected:
	class CImpl : public CDockWndMgr::CImpl
	{
	public:
		class CQLoader
		{
		protected:
			typedef CDockWndMgr::CImpl::CRestPos CRestPos;
		public:
			CQLoader(CRestQueue& q,IMainState* pMState,CRegKey& keyTop)
					:m_queue(q),m_pMState(pMState),m_keyTop(keyTop)
			{
			}
			void operator() (std::pair<const ID,CItem>& x) const
			{
				CRestPos dpos;
				std::basic_stringstream<TCHAR> sstrKey;
				sstrKey.flags(std::ios::hex | std::ios::showbase );
				sstrKey<<x.first;
				DWORD dwType;
				DWORD cbData=sizeof(dockwins::DFDOCKPOSEX);
				dockwins::DFDOCKPOSEX* ptr=static_cast<dockwins::DFDOCKPOSEX*>(&dpos);
				if((::RegQueryValueEx(m_keyTop,sstrKey.str().c_str(),NULL,&dwType,
									 reinterpret_cast<LPBYTE>(ptr),&cbData)==ERROR_SUCCESS)
									 &&(dwType==REG_BINARY))
				{
					if(dpos.bDocking)
					{
						dpos.id=x.first;
						dockwins::CDockingSide dside(dpos.dockPos.dwDockSide);
						if(dside.IsValid())
						{
/////////////////////////////3<<30+0x3f8<<20+0x3fff<<9+0x1ff
							assert(dpos.bDocking);
//							dpos.weight=0;
							dpos.weight=dpos.dockPos.nIndex&0x1ff;
							dpos.weight|=(DWORD(dpos.dockPos.fPctPos*0x3fff)&0x3fff)<<9;
							dpos.weight|=(dpos.dockPos.nBar&0x7f)<<20;
							dpos.weight|=((~dpos.dockPos.dwDockSide)&3)<<30;
///////////////////////////////////////////////////
						}
						else
							dpos.weight=reinterpret_cast<DWORD>(dpos.dockPos.hdr.hBar) | 0xe0000000;
						m_queue.push(dpos);
					}
					else
						x.second->Restore(m_pMState,&dpos);
				}
				else
					x.second->RestoreDefault();

			}
		protected:
			CRestQueue& m_queue;
			IMainState*	m_pMState;
			CRegKey&	m_keyTop;
		};

		class CPinner
		{
		protected:
			void PinUp()
			{
				m_pinHdr.n=m_wnds.size();
				if(m_pinHdr.n>0)
				{
					try
					{
						if(m_pinHdr.n>1)
						{
							m_pinHdr.phWnds = new HWND [m_pinHdr.n];
							std::copy(m_wnds.begin(),m_wnds.end(),m_pinHdr.phWnds);
						}
						if(m_pinHdr.hdr.hWnd==NULL)
						{
							m_pinHdr.hdr.hWnd=*(m_wnds.begin());
							m_pinHdr.nWidth=m_width;
						}
						m_docker.PinUp(&m_pinHdr);
						delete [] m_pinHdr.phWnds;
						m_pinHdr.phWnds = 0;
					} catch(std::bad_alloc& /*E*/)
					{
					}
					m_pinHdr.hdr.hWnd=NULL;
					m_wnds.clear();
				}
			}
		public:
			CPinner(const dockwins::CDocker& docker)
				:m_docker(docker)
			{
				//m_pinHdr.hdr=HNONDOCKBAR;
				//m_pinHdr.hdr.code=DC_PINUP;
				ZeroMemory(&m_pinHdr,sizeof(dockwins::DFPINUP));
			}
			~CPinner()
			{
//				PinUp();
				if(!m_wnds.empty())
					PinUp();
			}
			void PinUp(const CRestPos& dpos)
			{
				dockwins::CDockingSide side (dpos.dockPos.dwDockSide);
				assert(side.IsPinned());
				dockwins::CDockingSide curSide (m_pinHdr.dwDockSide);
				if(curSide.Side()!=side.Side()
					|| (dpos.dockPos.nBar!=m_nBar) )
										PinUp();
				m_wnds.push_back(dpos.dockPos.hdr.hWnd);
				m_pinHdr.dwDockSide=side;
				m_nBar=dpos.dockPos.nBar;
				m_width=dpos.dockPos.nWidth;
				if(side.IsActive())
				{
					m_pinHdr.hdr.hWnd=dpos.dockPos.hdr.hWnd;
					m_pinHdr.nWidth=dpos.dockPos.nWidth;
				}
			}
			static void PrepareForRestoring(CRestPos& dpos)
			{
				::SetRectEmpty(&dpos.rect);
				dpos.bDocking=FALSE;
				dpos.bVisible=FALSE;
			}
		protected:
			std::list<HWND>				m_wnds;
			dockwins::DFPINUP			m_pinHdr;
			const dockwins::CDocker&	m_docker;
			unsigned long				m_nBar;
			int							m_width;
		};

		CImpl(HWND hDockingFrameWnd)
			:m_docker(hDockingFrameWnd)
		{
		}
		virtual bool Restore(IMainState* pMState,CRegKey& key)
		{
//bad style, probably I'll fix it later
			std::for_each(m_bunch.begin(),m_bunch.end(),CResetter());
			std::for_each(m_bunch.begin(),m_bunch.end(),CQLoader(m_queue,pMState,key));
			DWORD weight=0;
			HDOCKBAR hBar=HNONDOCKBAR;
			BOOL bVisible=TRUE;
			HWND hActiveWnd=NULL;
			CPinner pinner (m_docker);
			while(!m_queue.empty())
			{
//				CRestPos& dpos=const_cast<CRestPos&>(m_queue.top());
				CRestPos dpos=m_queue.top();
				assert(m_bunch.find(dpos.id)!=m_bunch.end());
				dockwins::CDockingSide side(dpos.dockPos.dwDockSide);
				if(side.IsValid() && side.IsPinned())
				{
					CPinner::PrepareForRestoring(dpos);
					m_bunch[dpos.id]->Restore(pMState,&dpos);
					pinner.PinUp(dpos);
				}
				else
				{
//					dpos.dockPos.hdr.hBar=((dpos.weight&0xfffffe00)==weight) ? hBar : HNONDOCKBAR;
////////////////////////
//very ugly :(
					if((dpos.weight&0xfffffe00)!=weight)
					{
						if(hBar!=HNONDOCKBAR)
						{
							if(dockwins::CDockingBox::IsWindowBox(hBar) && (hActiveWnd!=NULL))
							{
								dockwins::CDockingBox box(hBar);
								box.Activate(hActiveWnd);
							}
							if(!bVisible )
								::SendMessage(::GetParent(hBar),WM_CLOSE,0,0);
						}
						hActiveWnd=NULL;
						hBar=HNONDOCKBAR;
					}
					bVisible=dpos.bVisible;
					dpos.bVisible=TRUE;
					dpos.dockPos.hdr.hBar=hBar;
					m_bunch[dpos.id]->Restore(pMState,&dpos);

					if(side.IsActive())
						hActiveWnd=dpos.dockPos.hdr.hWnd;
					hBar=dpos.dockPos.hdr.hWnd;
					weight=dpos.weight&0xfffffe00;
				}
				m_queue.pop();
			}
			if(hBar!=HNONDOCKBAR)
			{
				if(dockwins::CDockingBox::IsWindowBox(hBar) && (hActiveWnd!=NULL))
				{
					dockwins::CDockingBox box(hBar);
					box.Activate(hActiveWnd);
				}
				if(!bVisible )
					::SendMessage(::GetParent(hBar),WM_CLOSE,0,0);
			}
			return true;
		}
	protected:
		dockwins::CDocker m_docker;
	};
public:
	CDockWndMgrEx(HWND hDockingFrameWnd)
		:CDockWndMgr(new CImpl(hDockingFrameWnd))
	{
	}
};

template<class T>
struct CDockingWindowStateAdapterEx : CDockingWindowStateAdapter<T>
{
	CDockingWindowStateAdapterEx(T& x,int nDefCmdShow=SW_SHOWNOACTIVATE)
		: CDockingWindowStateAdapter<T>(new CImpl(x,nDefCmdShow))
	{
	}
};
}//namespace sstate
#endif // __WTL_DW__DBSTATE_H__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲二区视频在线| 7777精品伊人久久久大香线蕉经典版下载 | 国产激情精品久久久第一区二区| 欧美电影免费观看高清完整版在 | 欧美草草影院在线视频| 午夜精彩视频在线观看不卡| 欧美日韩国产美| 久久99蜜桃精品| 欧美精品一区二区三区蜜桃视频| 久久er精品视频| 欧美高清在线精品一区| 99久久国产综合精品色伊 | 欧美aaaaaa午夜精品| 国产欧美精品国产国产专区| 成人午夜短视频| 中文字幕一区二区三区精华液| 色综合视频在线观看| 香蕉久久一区二区不卡无毒影院| 6080亚洲精品一区二区| 国产乱子轮精品视频| 亚洲欧美综合在线精品| 欧美亚洲图片小说| 欧美a一区二区| 国产精品美女久久福利网站| 欧美日韩中文一区| 国产乱码精品一区二区三| 怡红院av一区二区三区| 日韩欧美一区二区不卡| 不卡的电视剧免费网站有什么| 亚洲黄色性网站| 26uuu久久综合| 欧美在线短视频| 国产福利精品一区二区| 亚洲五月六月丁香激情| 久久品道一品道久久精品| 欧美午夜理伦三级在线观看| 国产精品99久久久久久宅男| 亚洲成人免费视频| 国产视频一区不卡| 777a∨成人精品桃花网| av在线不卡免费看| 黑人巨大精品欧美黑白配亚洲| 悠悠色在线精品| 欧美激情综合五月色丁香小说| 欧美精品日韩精品| 99麻豆久久久国产精品免费| 裸体健美xxxx欧美裸体表演| 亚洲精品国产品国语在线app| 精品国产乱码久久久久久图片 | 欧美在线一区二区| 国产一级精品在线| 青青草97国产精品免费观看无弹窗版 | 成人丝袜18视频在线观看| 日本三级亚洲精品| 一区二区三区蜜桃网| 欧美激情中文字幕一区二区| 91精品国产高清一区二区三区蜜臀 | 欧美精品aⅴ在线视频| 99久久99久久精品免费观看| 国产乱人伦偷精品视频免下载 | 国产在线日韩欧美| 午夜久久电影网| 亚洲黄色小视频| 亚洲欧洲精品一区二区三区不卡| 精品美女一区二区| 日韩亚洲欧美在线| 欧美一区二区三区在线观看视频| 欧美性猛交xxxx黑人交| 日本韩国欧美在线| 99精品一区二区三区| 成人午夜伦理影院| 国产成人免费在线视频| 国产毛片精品国产一区二区三区| 久久精品国产一区二区三区免费看| 污片在线观看一区二区| 天天操天天综合网| 日本不卡视频一二三区| 日本视频免费一区| 色综合久久88色综合天天6| 丁香五精品蜜臀久久久久99网站| 国产精品乡下勾搭老头1| 国产一区二区久久| 国产成人高清视频| 波多野结衣视频一区| 成人手机在线视频| av一区二区三区在线| jiyouzz国产精品久久| 99re在线视频这里只有精品| jlzzjlzz亚洲女人18| 日本高清免费不卡视频| 精品视频资源站| 日韩写真欧美这视频| 精品久久人人做人人爽| 国产清纯白嫩初高生在线观看91| 欧美国产在线观看| 亚洲精品日产精品乱码不卡| 亚洲成av人**亚洲成av**| 婷婷中文字幕一区三区| 精品亚洲成a人在线观看| 国产成人av一区二区三区在线 | 国产午夜一区二区三区| 自拍偷拍国产亚洲| 午夜精品爽啪视频| 精品夜夜嗨av一区二区三区| www.亚洲激情.com| 欧美三级日韩在线| 26uuu亚洲综合色欧美| 国产精品人人做人人爽人人添| 国产精品不卡在线| 日韩精品每日更新| 国产乱淫av一区二区三区| 91免费视频网址| 日韩一区二区三区免费看 | 丁香亚洲综合激情啪啪综合| 在线看不卡av| 精品国产一区二区亚洲人成毛片 | 亚洲国产精品黑人久久久| 亚洲乱码日产精品bd | 国产另类ts人妖一区二区| 91香蕉视频污| 日韩免费高清av| 1024成人网| 精品亚洲成av人在线观看| 色88888久久久久久影院野外 | 国产欧美一区二区精品性| 亚洲免费成人av| 蜜桃av一区二区在线观看| 97久久超碰国产精品电影| 精品日本一线二线三线不卡| 亚洲蜜臀av乱码久久精品蜜桃| 六月婷婷色综合| 在线免费观看一区| 中文字幕欧美区| 男女激情视频一区| 在线一区二区三区四区| 亚洲综合一区二区精品导航| 国产一区二区在线看| 欧美精品一卡二卡| 综合在线观看色| 国产一区二区在线免费观看| 欧美精品久久久久久久多人混战| 国产视频在线观看一区二区三区| 日韩高清一级片| 日本精品一级二级| 国产精品色噜噜| 国产一区欧美日韩| 欧美一区二区三区视频免费播放| 亚洲另类春色校园小说| 丰满岳乱妇一区二区三区| 日韩视频在线永久播放| 一区二区欧美精品| www.综合网.com| 久久视频一区二区| 久久精品国产久精国产| 欧美亚洲国产一区二区三区va| 亚洲国产成人私人影院tom| 国内精品久久久久影院薰衣草| 91麻豆精品国产91久久久资源速度| 18欧美亚洲精品| 91麻豆.com| 国产精品国产三级国产有无不卡| 国产另类ts人妖一区二区| 久久色在线观看| 精品亚洲国产成人av制服丝袜| 欧美一级精品在线| 免费视频一区二区| 91超碰这里只有精品国产| 午夜一区二区三区在线观看| 欧美在线你懂得| 亚洲无线码一区二区三区| 欧美日韩一级大片网址| 五月婷婷综合激情| 日韩一区二区三区三四区视频在线观看 | 91蜜桃网址入口| 亚洲欧美日韩综合aⅴ视频| 91老师国产黑色丝袜在线| 亚洲欧美一区二区三区极速播放| aaa欧美色吧激情视频| 亚洲乱码一区二区三区在线观看| 一本一道波多野结衣一区二区| 亚洲欧美色一区| 欧美日韩视频一区二区| 美女精品自拍一二三四| 精品国产免费一区二区三区四区| 狠狠色综合日日| 中文字幕第一页久久| 91麻豆免费观看| 天天操天天综合网| 久久女同精品一区二区| www.性欧美| 午夜精品影院在线观看| 日韩精品一区二区在线| 从欧美一区二区三区| 亚洲男人的天堂在线观看| 欧美日韩1区2区| 国产精品系列在线观看| 亚洲精品你懂的| 日韩视频在线观看一区二区| 成人精品一区二区三区四区| 一区二区三区国产精品|