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
常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭。
昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。