MFC记忆窗口位置
Posted htj10
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC记忆窗口位置相关的知识,希望对你有一定的参考价值。
1. 用 WINDOWPLACEMENT(可以记录最大化、最小化、正常窗口位置)
BOOL CtestDialogDlg::ReadWndPosition() { WINDOWPLACEMENT wp; CFile file; if (!file.Open(_T("testDialog.position"), CFile::modeRead)) return FALSE; UINT nByteRead = file.Read(&wp, sizeof(wp)); if (sizeof(wp) != nByteRead) return FALSE; if(!::SetWindowPlacement(this->GetSafeHwnd(), &wp)) return FALSE; file.Close(); return TRUE; } BOOL CtestDialogDlg::WriteWndPosition() { WINDOWPLACEMENT wp = { sizeof(wp) }; ::GetWindowPlacement(this->GetSafeHwnd(), &wp); CFile file; if (!file.Open(_T("testDialog.position"), CFile::modeCreate | CFile::modeWrite)) return FALSE; file.Write(&wp, sizeof(wp)); file.Close(); return TRUE; } //然后在OnInitDialog()中调用 ReadWndPosition() //在OnDestroy()中调用 WriteWndPosition()
typedef struct tagWINDOWPLACEMENT { UINT length; UINT flags; UINT showCmd; POINT ptMinPosition; POINT ptMaxPosition; RECT rcNormalPosition; } WINDOWPLACEMENT; // 使用时,一般先把 length=sizeof(WINDOWPLACEMENT) 正常窗口关闭时,length=44,flags=0,showCmd=1,ptMinPosition=ptMaxPosition={-1,-1},rcNormalPosition=关闭时的窗口位置大小。 最小化关闭时,length=44,flags=0,showCmd=2,ptMinPosition={-3200,-3200},ptMaxPosition={-1,-1},rcNormalPosition=最小化前窗口的位置大小。 最大化关闭时,length=44,flags=2,showCmd=3,ptMinPosition=ptMaxPosition={-1,-1},rcNormalPosition=最大化前窗口的位置大小。 showCmd 的取值 SW_SHOWNORMAL=1 SW_HIDE=0 SW_SHOWMAXIMIZED=3 SW_SHOWMINIZED=2
以上是关于MFC记忆窗口位置的主要内容,如果未能解决你的问题,请参考以下文章