QQ登录

只需一步,快速开始

上位机MFC如何在桌面上停靠对话框

[ 复制链接 ]
将程序界面停靠在桌面边上,这功能在早期的软件非常常见。
如何实现呢?
当前我们就以实现停靠在桌面左边和右边功能,来看看如何实现
方法很简单,主要是在窗口位置更改的通知函数内判断窗口的位置与设置窗口的位置来实现的。
首先定义两个变量来保存窗口的尺寸
        int m_nWidth;
        int m_nHeigh;

再初始化变量与窗口位置等
                //对话框的宽和高
        m_nWidth = 220;
        m_nHeigh = 550;

        //获得桌面工作区大小
        CRect rect;
        SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);

        //对话框的初始位置
        int x = rect.left + rect.Width() / 2 - m_nWidth / 2;
        int y = rect.top + rect.Height() / 2 - m_nHeigh / 2;
        MoveWindow(x, y, m_nWidth, m_nHeigh);

最后 是添加窗口的消息WM_WINDOWPOSCHANGING处理函数
在函数内实现窗口的停靠

void CDemoDlg::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
        CDialog::OnWindowPosChanging(lpwndpos);
       
        //获得桌面工作区大小
        CRect rect;
        SystemParametersInfo(SPI_GETWORKAREA, 0, &rect, 0);

        //左停靠
        if (abs(lpwndpos->x - rect.left) <= 50)
        {
                lpwndpos->x = rect.left;
                lpwndpos->y = rect.top;
                lpwndpos->cy = rect.Height();
        }
        //右停靠
        else if (abs(lpwndpos->x + lpwndpos->cx-rect.right) <= 50)
        {
                lpwndpos->x = rect.right - lpwndpos->cx;
                lpwndpos->y = rect.top;
                lpwndpos->cy = rect.Height();
        }
        else
        {
                lpwndpos->cy = m_nHeigh;
        }

        if (lpwndpos->y < rect.top)
        {
                lpwndpos->y = rect.top;
        }
}

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:上位机MFC如何在桌面上停靠对话框.rar 
文件大小:148.92 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


  

上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例

  

经历1年的编程与录制点击进入查看


  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索