窗口状态写入注册表

3 篇文章 0 订阅
2 篇文章 0 订阅
1   //在应用程序app类中,写入以下代码

BOOL CMyMDIApp::InitInstance(){

//...............




	// 主窗口已初始化,因此显示它并对其进行更新

	HKEY key;
	DWORD keyType=REG_BINARY;
	DWORD keySize=sizeof(WINDOWPLACEMENT);
	WINDOWPLACEMENT wininfo;
	long regInfo;
	CString appKey=_T("software\\wolfeLee\\saveWinState\\settings");
	CString keyName=_T("WinState");

	if( RegOpenKeyEx( HKEY_CURRENT_USER, appKey,0, KEY_READ, &key) 
		== ERROR_SUCCESS){
			regInfo=RegQueryValueEx(key,keyName,0, &keyType,(LPBYTE)&wininfo, &keySize);
			RegCloseKey(key);
	}
	if(regInfo==ERROR_SUCCESS){
		m_pMainWnd->SetWindowPlacement(&wininfo);
	}else{

		//按原来默认方式显示
		pMainFrame->ShowWindow(m_nCmdShow);
		//pMainFrame->ShowWindow(SW_SHOWMAXIMIZED);
	}

	pMainFrame->UpdateWindow();

	return TRUE;
}


2   //在窗口框加 WM_Close 消息中,加入处理函数


void CMainFrame::OnClose()
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值

	HKEY  key;
	CString appKey=_T("software\\wolfeLee\\saveWinState\\settings");
	CString keyName=_T("WinState");

	if( RegOpenKeyEx( HKEY_CURRENT_USER, appKey,0, KEY_WRITE, &key) 
		!= ERROR_SUCCESS){
			DWORD dispotion;
			RegCreateKeyEx(HKEY_CURRENT_USER, appKey,0,_T(""),
				REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&key,&dispotion);
	}
	WINDOWPLACEMENT wininfo;
	GetWindowPlacement( &wininfo);

	RegSetValueEx(key, keyName,0, REG_BINARY,(LPBYTE)&wininfo, sizeof(WINDOWPLACEMENT));
	RegCloseKey(key);

	CMDIFrameWnd::OnClose();
}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值