16,471
社区成员
发帖
与我相关
我的任务
分享
// wndDlg.h
bool m_bSpecialMaximizeState;
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
void SetSpecialMaximize(bool bMaximize);
// wndDlg.cpp
#define ZOOMED_X 512
#define ZOOMED_Y 383
#define RESTORED_X 400
#define RESTORED_Y 285
CwndDlg::CwndDlg(...)
: CDialog(...)
, m_bSpecialMaximizeState(true)
{
...
}
BOOL CwndDlg::OnInitDialog()
{
CDialog::OnInitDialog();
...
SetSpecialMaximize(true);
return TRUE;
}
...
void CwndDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if (nID == SC_MAXIMIZE)
{
m_bSpecialMaximizeState = !m_bSpecialMaximizeState;
SetSpecialMaximize(m_bSpecialMaximizeState);
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
void CwndDlg::SetSpecialMaximize(bool bMaximize)
{
CRect rcWnd(0,0,0,0);
GetWindowRect(&rcWnd);
CPoint ptCenter = rcWnd.CenterPoint();
long cx = bMaximize ? ZOOMED_X : RESTORED_X;
long cy = bMaximize ? ZOOMED_Y : RESTORED_Y;
SetWindowPos(NULL, ptCenter.x-cx/2, ptCenter.y-cy/2, cx, cy, SWP_NOZORDER);
}