关于VC 对话框{zd0}化和最小化以及结合托盘技术_吾乐于中_百度空间

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);



郑重声明:资讯 【关于VC 对话框{zd0}化和最小化以及结合托盘技术_吾乐于中_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——