码迷,mamicode.com
首页 > 编程语言 > 详细

MFC记忆窗口位置

时间:2020-01-09 01:14:11      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:init   col   orm   std   span   write   pre   normal   set   

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记忆窗口位置

标签:init   col   orm   std   span   write   pre   normal   set   

原文地址:https://www.cnblogs.com/htj10/p/12169081.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!