1.{zd0}化最小化
ControlMax
ControlNormal
使用一次
在OnSize里面可以得到所有的情况
包括到Desktop的情况下。
使用一个变量,判断是否当前是{zd0}化,如果是{zd0}化,就不再{zd0}化,否则就会乱了位置。
在ini初始化中增加GetControlRect()
主要是2个函数,来得到主要窗体的大小位置
GetClientRect()
ScreenToClient()
然后使用MoveWindow定位置
初始化里面
this->GetControlRect();
ShowWindow(SW_SHOWMAXIMIZED/*SW_MAXIMIZE*/);//=====================Debug Test
在OnSize里面
<b>if (nType==0)
{
//AfxMessageBox(_T("Normal"));
bCurrentFormStatusIsMax=FALSE;
this->ControlMoveNormal();
}
//Min
if (nType==1)
{
}
//Max
if (nType==2)
{
//AfxMessageBox(_T("Max"));
if (bCurrentFormStatusIsMax==FALSE)
{
this->ControlMoveMax();
bCurrentFormStatusIsMax=TRUE;
}
}</b>
托盘程序
void CXXXXX::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
{
// AfxMessageBox(_T("Notype"));
try
{
// 响应在托盘图标上的单击主窗口
if ((wParam == IDR_MAINFRAME)&&(lParam == WM_LBUTTONDOWN))
{
window_status = this->GetWindowPlacement(&wpm);
int status_Form=wpm.showCmd;
switch (status_Form)
{
case SW_SHOWMINIMIZED:
{
ShowWindow(SW_SHOW);
break;
}
case SW_SHOWNORMAL:
{
ShowWindow(SW_NORMAL);
break;
}
case SW_SHOWMAXIMIZED:
{
ShowWindow(SW_SHOWMAXIMIZED);
break;
}
}
}
}
catch(CException ex)
{
ex.Delete();
}
}
托盘使用到的函数
//AfxMessageBox(_T("OnSysCommand"));
if (nID == SC_MAXIMIZE)
{
CWnd::OnSysCommand(nID, lParam);
return ;
}
if (nID == SC_MINIMIZE)
{
ShowWindow(SW_HIDE);
}
else
{
CWnd::OnSysCommand(nID, lParam);
}
//设置KeyName的框架位置gb_KeyName
iTop = CMaxNormal::gb_KeyName_pos.top;
iLeft = CMaxNormal::gb_KeyName_pos.left;
iWidth = CMaxNormal::GetIntegerValue(CMaxNormal::gb_KeyName_pos.Width(),iPerXNormalToMax);
iHeight = CMaxNormal::GetIntegerValue(CMaxNormal::gb_KeyName_pos.Height(),iPerYNormalToMax);
iHeightAdd = CMaxNormal::iScreenY - iTop - iHeight - iHeightAddVar;
iHeight = iHeight + iHeightAdd;
gb_KeyName.MoveWindow(iLeft,iTop,iWidth,iHeight,TRUE);
if (CMaxNormal::gb_Edit_pos.Width()<=0)
{
return;
}
this->gb_Edit.MoveWindow(CMaxNormal::gb_Edit_pos);
this->lbxxxx.MoveWindow(CMaxNormal::lbSourceRow_pos);