MFC 沿边缘隐藏窗体

原创 2015年07月09日 20:30:58

效果是像QQ一样,贴在屏幕边缘时,窗口自动隐藏。

创建以歌基于对话框的工程,名字为QQHide,

在主窗口的消息映射部分添加ON_WM_TIMER映射宏,代码如下

ON_WM_TIMER() 

这里写图片描述

接着在主窗口的头文件中添加对OnTimer函数的声明

afx_msg void OnTimer(UINT nIDEvent);

如图
这里写图片描述

在OnTimer方法中实现鼠标在窗体位置上的实时检测

void CQQHideDlg::OnTimer(UINT nIDEvent)
{
    CRect rc;
    CRect rect;
    GetWindowRect(&rect);      //该函数返回指定窗口的边框矩形的尺寸
    rc.CopyRect(&rect);
    CPoint pOint;
    GetCursorPos(&pOint);      //该函数检取光标的位置,以屏幕坐标表示
    if (rect.top<0&&PtInRect(rect,pOint))       //PtInRect判断一个点是否在CRect中
    {
        rect.top = 0;
        MoveWindow(rect.left, rect.top, rc.Width(), rc.Height());
    }
    else if (rect.top>-3&&rect.top<3&&!PtInRect(rect,pOint))
    {
        rect.top = 3 - rect.Height();
        MoveWindow(rect.left, rect.top, rc.Width(), rc.Height());
    }
    CDialog::OnTimer(nIDEvent);
}

在程序消息处理中,即在函数OnIniDialog函数中

SetTimer(1, 100, NULL);

隐藏前
这里写图片描述

隐藏后
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

C# 实现类似QQ的窗体在桌面边缘停靠和隐藏

设计思路: 1.使用定时器(Timer)来监控鼠标位置和窗体位置,并实现窗体的停靠和隐藏 2.当鼠标拖动窗体时,窗体才有可能根据自身位置决定是否停靠 3.如果窗体四周没有接触到屏幕边缘则不会停靠 4....
  • dufangfeilong
  • dufangfeilong
  • 2014年12月05日 17:23
  • 1655

qt实现的窗口吸附屏幕边缘,动画隐藏显示的效果,类似于qq主窗口 吸附 隐藏的效果

对于这个效果的实现,其实方法
  • chaney_f
  • chaney_f
  • 2014年09月22日 16:04
  • 2714

Qt实现窗体在显示屏旁边自动隐藏(类似QQ)

Qt实现窗体在显示屏旁边自动隐藏(类似QQ)看群里有人问这个东西,本人先来无事编以自己的想法实现了下: 其实实现的点子很简单:void AutoHideWidget::leaveEvent(QEve...
  • q862343646
  • q862343646
  • 2016年12月09日 10:45
  • 1316

Swing中窗体移到屏幕边缘自动隐藏

实现类似qq的屏幕边缘隐藏效果。 使用方法:new WindowAutoHide(window);  //window为java.awt.Window或其子类 根据实际需要,有以下参数可调: i...
  • ycb1689
  • ycb1689
  • 2014年01月03日 09:37
  • 1372

Swing中窗体移到屏幕边缘自动隐藏

开源中国看到的,跟大家分享一下,可以实现qq那样的屏幕边缘隐藏效果。 使用方法:new WindowAutoHide(window);  //window为java.awt.Window或其子类 ...
  • u011697031
  • u011697031
  • 2014年01月02日 20:18
  • 435

MFC无边框的窗体实现用鼠标拖动窗体边缘实现窗体大小变化

参考文章:http://blog.csdn.net/zjtchow/article/details/6122320 无边框窗体如何实现用鼠标拖动窗体边缘实现窗体大小变动呢?下面介绍一种方法,通过...
  • daiafei
  • daiafei
  • 2015年10月30日 16:30
  • 1079

MFC无边框的窗体实现用鼠标拖动窗体边缘实现窗体大小变化

无边框窗体如何实现用鼠标拖动窗体边缘实现窗体大小变动呢?下面介绍一种方法,通过以下几个步骤即可实现: 1.实现WM_NCHITTEST消息,实现四条边框的模拟 2.实现WM_NCLBUTT...
  • liuhongxiangm
  • liuhongxiangm
  • 2013年01月16日 11:02
  • 766

MFC无边框的窗体实现用鼠标拖动窗体边缘实现窗体大小变化

MFC无边框的窗体实现用鼠标拖动窗体边缘实现窗体大小变化
  • zjtchow
  • zjtchow
  • 2011年01月07日 12:54
  • 5591

mfc 一开始隐藏窗体的方法以及原理解析

我研究过,原因及隐藏方法 . MFC对话框应用程序启动时在OnInitDialog()之后会显示对话框的原因如下 MLF_SHOWONIDLE标志 int CDialog::DoModal() ...
  • tangyanzhi1111
  • tangyanzhi1111
  • 2014年03月21日 10:00
  • 1090

QT 自定义无边框窗体,支持边缘拖拽缩放

  • 2016年04月20日 16:55
  • 1017KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MFC 沿边缘隐藏窗体
举报原因:
原因补充:

(最多只允许输入30个字)