Member 14472552 Ответов: 5

Как я сохраняю состояние окна в файле и восстанавливаю его из этого файла сохранения


я хочу сохранить состояние окна в файле, таком как VMware, и возобновить окно

Что я уже пробовал:

я пытаюсь в c++, но я только сделал, чтобы получить список процессов .

5 Ответов

Рейтинг:
2

KarstenK

Вы должны сохранить необходимые значения в файле или реестре и восстановить его при запуске. Это, во-первых, размер и положение окна, и я предполагаю, что его данные, которые отображаются.

Может быть, моя статья о Изменение положения окон показывает вам некоторые идеи.


Рейтинг:
1

Richard MacCutchan

Взгляните на это Сохраните и восстановите размер и местоположение вашей формы[^] великим @OriginalGriff. Он предназначен для .NET, но должен дать вам разумное представление о процессе, которому вы должны следовать.


Рейтинг:
0

Michael Haephrati

Я написал: эта статья[^] об этом.
В принципе, вы периодически храните в файле .config или в реестре любую такую информацию (например, состояние окна). Затем, когда ваше приложение запускается, вы читаете эту информацию.


Рейтинг:
0

CPallini

Цитата:
я хочу сохранить состояние окна в файле, таком как VMware, и возобновить окно
Если вы имели в виду " я хочу сохранить состояние Windows (операционной системы)", то я боюсь, что это будет очень (очень) трудная задача. Вероятно, вам лучше найти инструмент для этой цели.


Рейтинг:
0

steveb

Если у вас есть приложение MFC этот фрагмент сохраняет положение окна:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CMDIFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
    //.....
        LoadPlacement();
	return 0;
}

void CMainFrame::OnClose() 
{
	SavePlacement();	
	CMDIFrameWnd::OnClose();
}

void CMainFrame::LoadPlacement()
{
	LPBYTE pbtData = 0;
	UINT nSize = 0;
	WINDOWPLACEMENT wp;
	if(!AfxGetApp()->GetProfileBinary(_T("MainWindow"), _T("Position"), &pbtData, &nSize))
		return;
	
	memcpy(&wp, pbtData, sizeof(WINDOWPLACEMENT));
	
	if(wp.flags & WPF_RESTORETOMAXIMIZED)
		wp.showCmd = SW_SHOWMAXIMIZED;
	else
		wp.showCmd = AfxGetApp ()->m_nCmdShow;
	
	SetWindowPlacement(&wp);
	
    delete [] pbtData;
}

void CMainFrame::SavePlacement()
{
	WINDOWPLACEMENT wp;
	if(!GetWindowPlacement(&wp))
		return;
	
	AfxGetApp()->WriteProfileBinary(_T("MainWindow"), _T("Position"), 
		reinterpret_cast<LPBYTE>((LPWINDOWPLACEMENT)&wp), 
         sizeof(WINDOWPLACEMENT));
}