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

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

?? sstate.h

?? 一款最完整的工業組態軟源代碼
?? H
?? 第 1 頁 / 共 2 頁
字號:
					wp.showCmd=SW_SHOWNORMAL;					
                bRes=(::RegSetValueEx(key,ctxtPlacement,NULL,REG_BINARY,
										reinterpret_cast<CONST BYTE *>(&wp),
										sizeof(WINDOWPLACEMENT))==ERROR_SUCCESS);
            }
			return baseClass::Store(pMState,key);
		}
		virtual bool Restore(IMainState* pMState,CRegKey& key)
		{
			assert(IsWindow(m_hWnd));
            WINDOWPLACEMENT wp;
            DWORD dwType;
            DWORD cbData=sizeof(WINDOWPLACEMENT);

            bool bRes=(::RegQueryValueEx(key,ctxtPlacement,NULL,&dwType,
											reinterpret_cast<LPBYTE>(&wp),&cbData)==ERROR_SUCCESS)
											&&(dwType==REG_BINARY);
            if(bRes)
			{
				UINT nCmdShow=wp.showCmd;
//				LockWindowUpdate(m_hWnd);
				if(wp.showCmd==SW_MAXIMIZE)
					::ShowWindow(m_hWnd,nCmdShow);
				wp.showCmd=SW_HIDE;
                ::SetWindowPlacement(m_hWnd,&wp);
				bRes=baseClass::Restore(pMState,key);
				::ShowWindow(m_hWnd,nCmdShow);
//				LockWindowUpdate(NULL);
			}
			else
				bRes=baseClass::RestoreDefault();
			return bRes;
		}
		virtual bool RestoreDefault()
		{
			assert(IsWindow(m_hWnd));
			bool bRes=baseClass::RestoreDefault();
			ShowWindow(m_hWnd,m_nDefCmdShow);
			return bRes;
		}
	protected:
		HWND	m_hWnd;
		int		m_nDefCmdShow;
	};
public:
	CWindowStateMgr(HWND hWnd=NULL,int nDefCmdShow=SW_SHOWNOACTIVATE)
	{
		m_pImpl=new CImpl(hWnd,nDefCmdShow);
	}
	~CWindowStateMgr()
	{
		assert(m_pImpl);
		m_pImpl->Release();
	}
	operator IState* ()
	{
		return m_pImpl;
	}
	ID Add(IState* pState)
	{
		return m_pImpl->Add(pState);
	}
	void Add(ID id,IState* pState)
	{
		m_pImpl->Add(id,pState);
	}
	void Remove(ID id)
	{
		m_pImpl->Remove(id);
	}
    void Initialize(const tstring& strMainKey,HWND hWnd,int nDefCmdShow=SW_SHOWNOACTIVATE)
    {
		m_pImpl->SetWindow(hWnd,nDefCmdShow);
		m_strMainKey=strMainKey;
    }
    void Store()
    {
        CMainState mstate(m_strMainKey);
        if(mstate.Store())
        {
            CRegKey key;
            DWORD dwDisposition;
            if(key.Create(mstate.MainKey(),ctxtMainWindow,REG_NONE,
							REG_OPTION_NON_VOLATILE, KEY_WRITE|KEY_READ,
							NULL,&dwDisposition)==ERROR_SUCCESS)
					m_pImpl->Store(&mstate,key);
        }
    }
    void Restore()
    {
        CMainState mstate(m_strMainKey);
        CRegKey key;
        if(mstate.Restore()&&
            (key.Open(mstate.MainKey(),ctxtMainWindow,KEY_READ)==ERROR_SUCCESS))
                    m_pImpl->Restore(&mstate,key);
        else
			m_pImpl->RestoreDefault();
    }
protected:
    tstring	m_strMainKey;
	CImpl*	m_pImpl;
};

class CWindowStateAdapter
{
protected:
	class CImpl : public CStateBase<IState>
	{
	public:
		CImpl(HWND hWnd,int nDefCmdShow=SW_SHOWNA)
			:m_hWnd(hWnd),m_nDefCmdShow(nDefCmdShow)
		{
			assert(::IsWindow(hWnd));
		}
		virtual bool Store(IMainState* /*pMState*/,CRegKey& key)
		{
            WINDOWPLACEMENT wp;
            wp.length = sizeof(WINDOWPLACEMENT);
            assert(::IsWindow(m_hWnd));
            bool bRes=false;
            if (::GetWindowPlacement(m_hWnd,&wp))
            {
                wp.flags = 0;
                if (::IsZoomed(m_hWnd))
                        wp.flags |= WPF_RESTORETOMAXIMIZED;
                bRes=(::RegSetValueEx(key,ctxtPlacement,NULL,REG_BINARY,
										reinterpret_cast<CONST BYTE *>(&wp),
										sizeof(WINDOWPLACEMENT))==ERROR_SUCCESS);
            }
			return bRes;
		}
		virtual bool Restore(IMainState* /*pMState*/,CRegKey& key)
		{
            assert(::IsWindow(m_hWnd));
            WINDOWPLACEMENT wp;
            DWORD dwType;
            DWORD cbData=sizeof(WINDOWPLACEMENT);
            bool bRes=(::RegQueryValueEx(key,ctxtPlacement,NULL,&dwType,
											reinterpret_cast<LPBYTE>(&wp),&cbData)==ERROR_SUCCESS)
											&&(dwType==REG_BINARY);
            if(bRes)
                    bRes=(::SetWindowPlacement(m_hWnd,&wp)!=FALSE);
            return bRes;
		}
		virtual bool RestoreDefault()
		{
			::ShowWindow(m_hWnd,m_nDefCmdShow);
			return true;
		}
	protected:
		HWND	m_hWnd;
		int		m_nDefCmdShow;
	};
public:
    CWindowStateAdapter(HWND hWnd,int nDefCmdShow=SW_SHOWNOACTIVATE)
    {
		m_pImpl = new CImpl(hWnd,nDefCmdShow);
    }
	~CWindowStateAdapter()
	{
		assert(m_pImpl);
		m_pImpl->Release();
	}
	operator IState* ()
	{
		return m_pImpl;
	}
protected:
	CImpl* m_pImpl;
};

class CToggleWindowAdapter
{
protected:
	class CImpl : public CStateBase<IState>
	{
	public:
		CImpl(HWND hWnd,int nDefCmdShow=SW_SHOWNA)
			:m_hWnd(hWnd),m_nDefCmdShow(nDefCmdShow)
		{
			assert(::IsWindow(hWnd));
		}
		virtual bool Store(IMainState* /*pMState*/,CRegKey& key)
		{
            DWORD visible=::IsWindowVisible(m_hWnd);
			return (::RegSetValueEx(key, ctxtVisible, NULL, REG_DWORD,
								reinterpret_cast<BYTE*>(&visible), sizeof(DWORD))==ERROR_SUCCESS);
//            return (key.SetValue(visible,ctxtVisible)==ERROR_SUCCESS);
		}
		virtual bool Restore(IMainState* /*pMState*/,CRegKey& key)
		{
            DWORD visible;
//          bool bRes=(key.QueryValue(visible,ctxtVisible)==ERROR_SUCCESS);
			DWORD dwCount = sizeof(DWORD);
			bool bRes=(::RegQueryValueEx(key,ctxtVisible,NULL,NULL,
								reinterpret_cast<LPBYTE>(&visible),&dwCount)==ERROR_SUCCESS
									 && (dwCount == sizeof(DWORD)));
            if(bRes)
                    ::ShowWindow(m_hWnd, (visible!=0) ? SW_SHOWNA : SW_HIDE);
            else
                    RestoreDefault();
            return bRes;
		}
		virtual bool RestoreDefault()
		{
            ::ShowWindow(m_hWnd,m_nDefCmdShow);
            return true;
		}
	protected:
		HWND	m_hWnd;
		int		m_nDefCmdShow;
	};
public:
    CToggleWindowAdapter(HWND hWnd,int nDefCmdShow=SW_SHOWNOACTIVATE)
    {
		m_pImpl = new CImpl(hWnd,nDefCmdShow);
    }
	~CToggleWindowAdapter()
	{
		assert(m_pImpl);
		m_pImpl->Release();
	}
	operator IState* ()
	{
		return m_pImpl;
	}
protected:
	CImpl* m_pImpl;
};
class CRebarStateAdapter
{
protected:
	class CImpl : public CStateBase<IState>
	{
	public:
		CImpl(HWND hWnd, int storeVersion)
			:m_rebar(hWnd), m_storageVersion(storeVersion)
		{
			assert(::IsWindow(hWnd));
		}

		virtual bool Store(IMainState* /*pMState*/,CRegKey& key)
		{
			assert(m_rebar.IsWindow());
			::RegSetValueEx(key,ctxtStoreVer, NULL, REG_DWORD, (LPBYTE)&m_storageVersion, sizeof(DWORD));
			
			unsigned int bandCount=m_rebar.GetBandCount();
			for(unsigned int i=0;i<bandCount;i++)
			{
				std::basic_stringstream<TCHAR> sstrKey;
				sstrKey<<ctxtBand<<i;
				REBARBANDINFO rbi;
				ZeroMemory(&rbi,sizeof(REBARBANDINFO));
				rbi.cbSize = sizeof(REBARBANDINFO);
				rbi.fMask = RBBIM_ID | 
							RBBIM_SIZE | RBBIM_STYLE
							// The following causes the app to remember rebar colors,
							// breaking windows theme changes.
							//RBBIM_COLORS |
							// The following causes the rebars to shift left on restore.
							#if (_WIN32_IE >= 0x0400)
								| /*RBBIM_HEADERSIZE |*/ RBBIM_IDEALSIZE
							#endif	
								;
				m_rebar.GetBandInfo(i, &rbi);
				::RegSetValueEx(key,sstrKey.str().c_str(),NULL,REG_BINARY,
								reinterpret_cast<CONST BYTE *>(&rbi),
								rbi.cbSize);
			}
			return true;
		}

		virtual bool Restore(IMainState* /*pMState*/,CRegKey& key)
		{
			DWORD dwType;
			DWORD dwVal;
			DWORD cbData = sizeof(DWORD);

			if( ::RegQueryValueEx(key, ctxtStoreVer, NULL, &dwType,
				(LPBYTE)&dwVal, &cbData) == ERROR_SUCCESS && (dwType == REG_DWORD) )
			{
				// If the versions aren't the same, then we don't bother to
				// restore - we'll probably brake the ReBars by doing so.
				if( dwVal != m_storageVersion )
					return false;
			}
			else
			{
				// If we couldn't query that key, then we never wrote a version
				// number before, so it must be an old version.
				return false;
			}

			unsigned int bandCount=m_rebar.GetBandCount();
			for(unsigned int i=0;i<bandCount;i++)
			{
				std::basic_stringstream<TCHAR> sstrKey;
				sstrKey<<ctxtBand<<i;
				CRegKey keyBand;
				REBARBANDINFO rbi;
				//ZeroMemory(&rbi,sizeof(REBARBANDINFO));
				
				cbData=sizeof(REBARBANDINFO);
	            if((::RegQueryValueEx(key,sstrKey.str().c_str(),NULL,&dwType,
							reinterpret_cast<LPBYTE>(&rbi),&cbData)==ERROR_SUCCESS)
							&&(dwType==REG_BINARY))
				{
					m_rebar.MoveBand(m_rebar.IdToIndex(rbi.wID), i);
					m_rebar.SetBandInfo(i, &rbi);
				}
			}
			return true;

		}
		virtual bool RestoreDefault()
		{
			return true;
		}
	protected:
		CReBarCtrl	m_rebar;
		int			m_storageVersion;
	};
public:
    CRebarStateAdapter(HWND hWnd, int storeVersion = 0)
    {
		m_pImpl = new CImpl(hWnd, storeVersion);
    }
	~CRebarStateAdapter()
	{
		assert(m_pImpl);
		m_pImpl->Release();
	}
	operator IState* ()
	{
		return m_pImpl;
	}
protected:
	CImpl* m_pImpl;
};

}//namespace sstate
#endif // __WTL_DW__SSTATE_H__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区视频| 色综合久久中文综合久久牛| 欧美一级国产精品| 日本美女一区二区| 国产亚洲精品资源在线26u| 成人手机电影网| 国产福利一区二区三区在线视频| 成人app网站| 波多野洁衣一区| 欧美久久一区二区| 欧美丰满少妇xxxxx高潮对白| 中文字幕不卡一区| 国产精品免费免费| 亚洲精品乱码久久久久久日本蜜臀| 国产精品久久久久永久免费观看 | 黄色精品一二区| 久久久久久久久久久黄色| 欧美日韩高清影院| 欧美一区三区四区| 中文成人综合网| 亚洲猫色日本管| 天天av天天翘天天综合网| 久久精品99国产精品日本| 欧美中文字幕一区| 亚洲精品一区二区三区四区高清| 久久丝袜美腿综合| 国产精品夫妻自拍| 国产精品嫩草影院com| 日韩女优毛片在线| 1000精品久久久久久久久| 日韩精品久久理论片| 丁香一区二区三区| 国产91精品久久久久久久网曝门| 久久综合九色综合欧美就去吻| 亚洲欧洲美洲综合色网| 亚洲激情在线播放| 99久久99久久精品免费看蜜桃| 久久久久成人黄色影片| 国产精品日韩成人| 蜜桃一区二区三区在线观看| 97精品国产97久久久久久久久久久久| 麻豆国产精品一区二区三区| 欧美激情一区二区| 成人黄色777网| 成人国产精品免费网站| 337p日本欧洲亚洲大胆色噜噜| 99久久er热在这里只有精品66| 石原莉奈在线亚洲二区| 亚洲人成在线观看一区二区| 7777精品伊人久久久大香线蕉完整版| 成人小视频免费在线观看| 全部av―极品视觉盛宴亚洲| 亚洲精品亚洲人成人网在线播放| 久久午夜免费电影| 日韩一区二区免费在线观看| 色婷婷综合久久久久中文| 成人国产在线观看| 国产精品影视在线观看| 蜜桃久久av一区| 一区二区三区免费观看| 自拍偷自拍亚洲精品播放| 国产欧美一区二区精品婷婷| 日韩一级大片在线观看| 欧美一区二区在线视频| 欧美视频在线一区二区三区| 色综合天天综合给合国产| 粗大黑人巨茎大战欧美成人| 国产乱码精品一区二区三区忘忧草| 日精品一区二区| 亚洲444eee在线观看| 亚洲一区二区三区四区在线| 亚洲免费观看在线观看| 亚洲视频一区二区免费在线观看| 国产精品你懂的在线欣赏| 日本一区二区三区久久久久久久久不| 欧美变态口味重另类| 日韩久久久久久| 精品久久久久久久一区二区蜜臀| 欧美一激情一区二区三区| 91精品欧美综合在线观看最新 | 国产婷婷色一区二区三区四区| 精品三级在线看| 亚洲精品在线免费播放| 久久美女艺术照精彩视频福利播放 | 亚洲一区二区中文在线| 一区二区三区四区在线免费观看| 一区二区三区av电影| 一区二区三区久久| 视频一区二区三区在线| 免费在线观看一区二区三区| 久久er精品视频| 国产麻豆一精品一av一免费| 国产高清成人在线| 一本一道久久a久久精品| 欧美性猛交xxxxxxxx| 欧美变态tickling挠脚心| 久久亚洲一区二区三区四区| 国产精品久久毛片av大全日韩| 亚洲人123区| 首页欧美精品中文字幕| 国产最新精品精品你懂的| 国产成人在线视频网站| 欧美日韩国产系列| 日韩免费观看2025年上映的电影| 欧美激情一区二区三区全黄| 亚洲乱码国产乱码精品精小说| 亚洲国产人成综合网站| 久久国产精品一区二区| av一区二区三区| 欧美日韩高清一区二区三区| 久久先锋资源网| 亚洲另类春色校园小说| 免费成人小视频| 成人av免费观看| 91精品国产综合久久精品app | 日韩高清在线一区| 国产很黄免费观看久久| 在线亚洲免费视频| 久久香蕉国产线看观看99| 一区二区三区四区精品在线视频| 麻豆高清免费国产一区| 91亚洲国产成人精品一区二区三| 欧美精品一二三| 国产精品不卡视频| 精品一区二区三区视频 | 国产乱子轮精品视频| 色哟哟国产精品免费观看| 亚洲精品一区二区三区影院| 亚洲一级二级在线| 成人在线视频一区| 日韩写真欧美这视频| 亚洲综合无码一区二区| 高清不卡一区二区在线| 日韩视频一区在线观看| 亚洲综合成人在线视频| 成年人网站91| 精品久久久久一区二区国产| 亚洲一区中文在线| 不卡欧美aaaaa| 欧美精品一区二区三区久久久| 亚洲国产精品久久人人爱蜜臀| 不卡电影免费在线播放一区| 日韩天堂在线观看| 天天色综合成人网| 在线观看不卡一区| 亚洲男人的天堂网| 北岛玲一区二区三区四区| 久久嫩草精品久久久精品一| 蜜桃av噜噜一区| 欧美精品tushy高清| 亚洲自拍另类综合| 91国模大尺度私拍在线视频| 国产精品三级在线观看| 国产一区二区调教| www国产成人免费观看视频 深夜成人网| 婷婷中文字幕一区三区| 欧美区在线观看| 亚洲国产另类精品专区| 欧美亚洲动漫另类| 一区二区三区在线观看国产| 91麻豆免费看| 亚洲精品免费看| 97超碰欧美中文字幕| 中文字幕欧美一| 99视频一区二区| 成人欧美一区二区三区白人| 成人免费看的视频| 亚洲欧美一区二区视频| 99九九99九九九视频精品| 亚洲黄色尤物视频| 在线一区二区三区| 亚洲自拍偷拍综合| 欧美高清视频不卡网| 三级影片在线观看欧美日韩一区二区| 欧美日韩成人综合天天影院| 天天射综合影视| 欧美电视剧免费全集观看| 紧缚捆绑精品一区二区| 久久精品欧美一区二区三区麻豆| 国产麻豆日韩欧美久久| 国产人成一区二区三区影院| 丰满白嫩尤物一区二区| 亚洲天堂成人在线观看| 欧美性猛交xxxx乱大交退制版| 午夜欧美电影在线观看| 欧美电影免费观看高清完整版在线观看| 免费成人在线观看| 中文字幕av一区 二区| 99久久婷婷国产综合精品电影 | 亚洲精品在线观| 国产v综合v亚洲欧| 一区二区在线观看视频在线观看| 欧美日韩国产精品成人| 国产在线一区二区| 亚洲精品日韩专区silk| 日韩精品一区二区三区视频| 成人av电影免费观看| 亚洲国产成人高清精品| 久久影院视频免费| 日本久久一区二区|