c++(vc)实现类似qq窗口悬挂功能

vc++实现悬浮窗,迅雷360悬浮球效果 1.SetWindowRgn创建圆角悬浮窗DlgFloat rgn.CreateRoundRectRgn(rect.left, rect.top, rect.Width(), rect.Height(), 13, 13); m_rgnWnd.DeleteObject(); m_rgnWnd.CreateRectRgn(0, 0, 0, 0); m_rgnWnd.CopyRgn(&rgn); 阅读详情

描述:实现类似qq窗口悬挂功能,当窗口靠近屏幕边缘(一般为上,右),窗口自动悬挂隐藏,鼠标再放到边缘,窗口又显示出来


步骤1:开启监控鼠标窗口出来悬挂的线程

pCursorThread = AfxBeginThread(HandleCursorThread, this);

步骤2:线程具体内容

#define HIDEWINDOW_LENTH    5  //   窗口悬挂后的留下的宽度

UINT CMainWnd::HandleCursorThread(LPVOID lParam)  // min
{
ASSERT(lParam);
CMainWnd* pDlg = reinterpret_cast<CMainWnd*>(lParam);


while(1)
{
//static bool bwindowshow = true;
POINT m_pMouse;
CRect rcWindow;
int nSrcWidth = ::GetSystemMetrics(SM_CXSCREEN);
int nSrcHeight = ::GetSystemMetrics(SM_CYSCREEN);
GetCursorPos(&m_pMouse);
pDlg->GetWindowRect(&rcWindow);
bool bCurInWindow;  // 判断鼠标是否在窗口中
if ((m_pMouse.x>=rcWindow.left&&m_pMouse.x<=rcWindow.right)&&(m_pMouse.y>=rcWindow.top&&m_pMouse.y<=rcWindow.bottom))
{
bCurInWindow = true;
}
else
{
bCurInWindow = false;
}


bool bwindowshow;
if (rcWindow.Width()<=HIDEWINDOW_LENTH || rcWindow.Height()<=HIDEWINDOW_LENTH)
{
bwindowshow = false;
}
else
{
bwindowshow = true;
}



if (rcWindow.left<1 && bwindowshow && !bCurInWindow)
{
pDlg->SliderWindow(LEFT, false);    // 向左滑进去
}
else if(rcWindow.left<1 && rcWindow.Width()<=HIDEWINDOW_LENTH 
&& m_pMouse.x<HIDEWINDOW_LENTH && m_pMouse.y>rcWindow.top && m_pMouse.y<rcWindow.bottom
&& !bwindowshow)
{
pDlg->SliderWindow(LEFT, true);    // 从左滑出来
}
else if (rcWindow.top<1 && bwindowshow && !bCurInWindow)
{
pDlg->SliderWindow(TOP, false);    // 向上滑进去
}
else if (rcWindow.top<1 && rcWindow.Height()<=HIDEWINDOW_LENTH
&& m_pMouse.y<HIDEWINDOW_LENTH && m_pMouse.x>rcWindow.left && m_pMouse.x<rcWindow.right
&& !bwindowshow)
{
pDlg->SliderWindow(TOP, true);    // 从上滑出来
}
else if (rcWindow.right>=nSrcWidth && bwindowshow && !bCurInWindow)
{
pDlg->SliderWindow(RIGHT, false);    // 向右滑进去
}
else if (rcWindow.right>=nSrcWidth && rcWindow.Width()<=HIDEWINDOW_LENTH
&& m_pMouse.x>nSrcWidth-HIDEWINDOW_LENTH && m_pMouse.y>rcWindow.top && m_pMouse.y<rcWindow.bottom
&& !bwindowshow)
{
pDlg->SliderWindow(RIGHT, true);    // 从右滑出来
}
//TRACE(_T("x=%d    y=%d    rcWindow.left=%d    rcWindow.right=%d \r\n"),m_pMouse.x, m_pMouse.y,rcWindow.left,rcWindow.right);
Sleep(500);
}
return 0;
}


void CMainWnd::SliderWindow(int nPos, bool bShow)  
{
CRect rc;
GetWindowRect(rc);
int nSrcWidth = ::GetSystemMetrics(SM_CXSCREEN);
int ifreq = 7;  // 隐藏显示速率
static int iWindowWidth = rc.Width();
static int iWindowHeight = rc.Height();
if (!bShow)
{
iWindowWidth = rc.Width();  // 存储窗口(即将隐藏)的宽度
iWindowHeight = rc.Height();  // 存储窗口(即将隐藏)的高度
}
switch(nPos)
{
case LEFT:
if(bShow)
{
for(int i=1; i<=ifreq; i++)
{
SetWindowPos(&CWnd::wndTopMost, 0, rc.top, iWindowWidth*i/ifreq, rc.Height(), SWP_SHOWWINDOW);
Sleep(20);
}
}
else
{
for(int i=1; i<=ifreq; i++)
{
SetWindowPos(&CWnd::wndTopMost, 0, rc.top, (rc.Width()-rc.Width()*i/ifreq)+HIDEWINDOW_LENTH, rc.Height(), SWP_SHOWWINDOW);
Sleep(20);
}
}
break;
case RIGHT:
if(bShow)
{
for(int i=1; i<=ifreq; i++)
{
int iwidth = iWindowWidth*i/ifreq;
int ileft = nSrcWidth - iwidth;
SetWindowPos(&CWnd::wndTopMost, ileft, rc.top, iwidth, rc.Height(), SWP_SHOWWINDOW);
Sleep(20);
}
}
else
{
for(int i=1; i<=ifreq; i++)
{
int iwidth = (rc.Width()-rc.Width()*i/ifreq)+HIDEWINDOW_LENTH;
int ileft = nSrcWidth - iwidth;
SetWindowPos(&CWnd::wndTopMost, ileft, rc.top, iwidth, rc.Height(), SWP_SHOWWINDOW);
Sleep(20);
}
}
break;
case TOP:
if(bShow)
{
for(int i=1; i<=ifreq; i++)
{
SetWindowPos(&CWnd::wndTopMost, rc.left, 0, rc.Width(), iWindowHeight*i/ifreq, SWP_SHOWWINDOW);
Sleep(20);
}
}
else
{
for(int i=1; i<=ifreq; i++)
{
SetWindowPos(&CWnd::wndTopMost, rc.left, 0, rc.Width(), (rc.Height()-rc.Height()*i/ifreq)+HIDEWINDOW_LENTH, SWP_SHOWWINDOW);
Sleep(20);
}
}
break;
case BOTTOM:
break;
default:
break;
}
}


以上代码均为本人调试过ok的

【信息科学与工程学】计算机科学与自动化——第六十六篇 算子篇 第一章 通用算子01 多模态数据(图形/图像/文本/语音)中推断人类内在状态、策略、动机和利益的算法算子知识库 编号领域算法/方法算子名称算子的数学方程式/表达复杂度 (示例)关联知识11量子场论正则量子化产生/湮灭算符对易关系: [â_p, â†_q] = δ⁽³⁾(p​ - q)应用于态空间,计算复杂度取决于截断福克空间,粒子数表象,二次量子化12统计力学蒙特卡洛模拟马尔可夫链转移算子T(s → s‘) :满足细致平衡条件 π(s)T(s→s’)=π(s‘)T(s’→s)收敛到平衡分布需 ~O(τ), τ为相关时间细致平衡,Metropolis-Hastings准则,重要性采样13电磁学边界元法单层势/双层势算子 阅读详情

相关推荐

【信息科学与工程学】【通信工程】第二百四十篇 IPv4/IPv6 功能点、特性和算法及 IPv4→IPv6 迁移特性02

说明:按「纯数学 → 数学物理 → 多物理场 → 界面/表面科学耦合 + 数学化学 + 运动科学(0.01 nm → μm → mm → cm 精度及超长运动)」纵向穿透,每一行给出,最后挂。

weixin_49199313的博客 509

VC++玩转炫酷悬浮窗1---悬浮窗的实现

目标实现像迅雷那样炫酷的悬浮窗。计划&方案首先第一步要实现一个悬浮窗,窗体无边框,能够随意拖动。对于一个窗体来说,只有我们把鼠标放到标题栏中才进入到拖拽模式。由于是无边框的窗体,默认是不能够移动的。我们尝试用两种办法使其跟随鼠标移动。一个是用OnNcHitTest函数,另一个是在OnLButtonDown时发消息。实践一、 OnNcHitTest方案这个CWnd类的一个方法,我们可以捕捉鼠标点

懒人的技术笔记 1万+

C++ 类似QQ贴边掩藏功能的实现(下)

类似QQ贴边掩藏功能的实现

dvlinker的技术专栏 1961

Win32 C++实现服务、桌面图标窗口层、广告弹窗以及无任务栏图标程序

欢迎各位大家关注本人微信公众号:程序员JC,小程序:RobotJC 里面包含很多本人之前做的小案例(包含源码以及资源),也许这里有你想要的东西哦。 这篇文章其实几周前,我就想写了。但是鉴于我个人的一些事情,导致我没有心思和心情去写。但是,之后我想想不应该这样继续下去。所以借这篇文章机会,我衷心希望各位看到这篇文章的朋友,能生活的像题图上写的一样,“纵使生活跌倒一百次,也要一百零一次地站起来”。因为好的心态生活真的很重要。好了,不讲大道理了,哈哈。开始说正事了。 我为什么会写这个程序? 首先,说明一下,我是一

Jack_chen8888的博客 1683

VC++实现隐藏运行与悬浮窗功能

悬浮窗,作为一种用户界面元素,可以浮动于操作系统桌面或其他应用程序之上。它的核心特点是用户可以拖动其位置,调整大小,并通过它执行某些操作,而无需切换到相应的应用程序窗口。悬浮窗广泛应用于各种软件,如聊天程序、系统监控工具、网络调试工具等。通过提供即时反馈和交互,悬浮窗可以极大地提高用户的效率和体验。例如,一个天气应用程序可以使用悬浮窗来显示当前的天气状况和预报,无需用户打开应用程序本身。热键(Hotkey)是一种快捷方式,允许用户通过按键组合来执行特定的操作或命令,而无需通过菜单或工具栏。

weixin_31688273的博客 1233

VC++玩转炫酷悬浮窗2---不规则窗体的实现源码

VC++玩转炫酷悬浮窗2---不规则窗体的实现源码 blog请见: http://blog.youkuaiyun.com/lincyang/article/details/38752319

android桌面悬浮窗实现

首先是一个小的悬浮窗显示的是当前使用了百分之多少的内存,点击一下小悬浮窗,就会弹出一个大的悬浮窗,可以一键加速。好,我们现在就来模拟实现一下类似的效果。1.新建一个项目 , 打开activity_main.xml <RelativeLayoutxmlns:android="http://schemas.android.co...

weixin_30436891的博客 348

实现窗口悬浮效果

Qt悬浮窗口,实现主窗口与子悬浮窗口之间的转换,悬浮窗口显示的桌面最顶端,且可以实现自动隐藏,当鼠标移动到窗口顶部,悬浮窗口又可以显示出来

如何做QQ交互界面

大凡用过电脑,上过网的朋友都用过QQ,对QQ的一些交互界面可能垂慕已久,的确,无论是其生动的企鹅形象,还是“滴滴的”消息声音,以及“刷”的菜单等功能,简单单的消息发送,以及快速的回显和众多卡通的QQ头像等铸就了其在网络的良好地位,本人对其研究虽不够透彻,但也做一些探索性的尝试,并简单的实现了比较突出的功能,在s模拟的过程中,主要实现了以下几部分的功能:   QQ菜单,也称抽屉菜单(也有的叫导航菜

小龙王2010 2212

mfc实现悬浮子窗口(动态实现)

mfc实现悬浮子窗口(动态实现):可以分为2种方法来实现;第一种是通过比较简单而实用的 动态实现api去修改属性;第二种办法是 实现的效果类似vs2008这样的 悬浮框、停靠等,是通过单文档 中 CDockablePane;也可以实现将界面随时变换颜色等风格变换!具体的代码和运行程序 请看下一个“MyVS9Demo”!

一个C++写的桌面悬浮窗软件源码,用于显示当前网速、CPU及内存利用率.zip

这是一个C++写的用于显示当前网速、CPU及内存利用率的桌面悬浮窗软件,并支持任务栏显示,支持更换皮肤。 这是一个C++写的用于显示当前网速、CPU及内存利用率的桌面悬浮窗软件,并支持任务栏显示,支持更换皮肤。 这是一个C++写的用于显示当前网速、CPU及内存利用率的桌面悬浮窗软件,并支持任务栏显示,支持更换皮肤。 这是一个C++写的用于显示当前网速、CPU及内存利用率的桌面悬浮窗软件,并支持任务栏显示,支持更换皮肤。 这是一个C++写的用于显示当前网速、CPU及内存利用率的桌面悬浮窗软件,并支持任务栏显示,支持更换皮肤。 这是一个C++写的用于显示当前网速、CPU及内存利用率的桌面悬浮窗软件,并支持任务栏显示,支持更换皮肤。 这是一个C++写的用于显示当前网速、CPU及内存利用率的桌面悬浮窗软件,并支持任务栏显示,支持更换皮肤。 这是一个C++写的用于显示当前网速、CPU及内存利用率的桌面悬浮窗软件,并支持任务栏显示,支持更换皮肤。 这是一个C++写的用于显示当前网速、CP

QQ界面的模拟实现(上)

QQ界面的模拟实现(上)作者:小帅下载源代码   大凡用过电脑,上过网的朋友都用过QQ,对QQ的一些交互界面可能垂慕已久,的确,无论是其生动的企鹅形象,还是“滴滴的”消息声音,以及“刷”的菜单等功能,简单单的消息发送,以及快速的回显和众多卡通的QQ头像等铸就了其在网络的良好地位,本人对其研究虽不够透彻,但也做一些探索性的尝试,并简单的实现了比较突出的功能,在s模拟的过程中,主要实现了以下几

sanshao27的专栏 1215

基于C++实现的用于显示当前网速、CPU及内存利用率的桌面悬浮窗软件,并支持任务栏显示,支持更换皮肤

基于C++实现的用于Windows平台的网速监控悬浮窗软件,可以显示当前网速、CPU及内存利用率,支持嵌入到任务栏显示,支持更换皮肤、历史流量统计等功能。 主要特性 显示当前实现网络传输速率、CPU和内存占用率 如果电脑有多个网卡,支持自动和手动选择网络连接 查看网络详细信息 支持嵌入到任务栏显示 支持更换皮肤和自定义皮肤 历史流量统计 硬件信息监控 插件系统

计算机操作基础重点知识,计算机键盘操作基础重点学习的知识.doc

Ctrl+S保存Ctrl+W 关闭程序Ctrl+NCtrl+OCtrl+ZCtrl+FCtrl+XCtrl+CCtrl+VCtrl+ACtrl+[Ctrl+]Ctrl+BCtrl+ICtrl+U新建打开撤销查找剪切复制粘贴全选缩小文字放大文字粗体斜体下划线Ctrl+Shift输入法切换Ctrl+ 空格 中英文切换Ctrl+ 回车 QQ号中发送信息Ctrl+Home 光标快速移到文件头Ctrl+En...

weixin_33253741的博客 168

基于Simulink的前馈解耦SVPWM整流器仿真

本文提出了一种基于Simulink的前馈解耦SVPWM整流器仿真方案,针对传统双闭环控制存在的耦合严重、电压利用率低等问题进行优化。通过前馈补偿dq轴耦合项(ωLiq和ωLid)结合SVPWM调制算法,实现了电流跟踪误差<3%、电压利用率达0.99、THD<3%的性能指标。文章详细阐述了系统架构设计,包括前馈解耦原理推导、SVPWM算法实现步骤,并提供了完整的Simulink建模方法。仿真结果表明,该方案在动态响应速度(25ms)和直流电压纹波(1.1%)方面显著优于传统SPWM控制。同时给出了

MHD0815的博客 162

AutoCAD 2024 Mac版安装激活教程:从下载到破解一站式解决方案

本文提供AutoCAD 2024 Mac版的详细安装与优化指南,包括系统要求检查、下载安装流程、常见问题解决方案及性能优化设置。特别介绍了如何应用最新补丁和Update保持软件性能,帮助用户顺利完成从安装到破解的全过程。

weixin_29239661的博客 839

VC++玩转炫酷悬浮窗2---不规则窗体的实现(常规)

目标不规则窗体也称为异型窗体,像迅雷的飞鸟型窗体就是啦。这篇文章就是要实现这样的窗体。计划&方案根据上一篇文章继续扩展。我们有几种方案实现不规则窗体。迅雷就是用一张图片作为窗体的形状,那么图片的类型我们也要考虑进来。现在是png图片的天下,自带背景透明;对于bmp图片,需要程序处理一下。对于常规图形如圆形,只需要SetWindowRgn就可以搞定。对于复杂图形,需要用一点技巧来做。下面用例子来

懒人的技术笔记 5916

遥感数据处理必看:哨兵1 SLC与GRD预处理差异全解析

本文详细解析了哨兵1号卫星SLC与GRD数据的预处理差异,从数据基础认知到实战应用全流程对比。重点介绍了SLC数据的轨道校正、辐射校正等关键步骤,以及GRD数据的简化处理流程,帮助用户根据应用场景选择合适数据类型。通过SNAP等工具的实际操作示例,提升遥感数据处理效率。

weixin_29035405的博客 339

VC++玩转炫酷悬浮窗3---GDI+完美实现不规则窗体

目标上一篇不规则窗体虽然实现了,但是图形有锯齿,给人以上世纪的老古董感觉,跟酷炫不搭边。今天就要用高级一些的技术做出完美的光滑的无锯齿的不规则窗体。计划&方案PNG图片本身就是带透明效果的,把此图片作为窗体,用GDI+将其实现。那么什么是GDI+呢?先要说一说GDI, Graphics Devices Interface,图形设备接口,负责系统与绘图程序之间的信息交换,处理所有Windows图

懒人的技术笔记 1万+

Win11系统重装全记录:从备份Office激活到搞定RAID阵列,我的微星笔记本复活记

本文详细记录了Win11系统重装的完整过程,从数据备份到RAID阵列配置,特别针对微星笔记本的特殊硬件驱动问题提供了解决方案。文章涵盖了Office激活状态备份、BIOS设置、驱动安装顺序等关键步骤,帮助用户顺利完成系统重装并优化性能。

weixin_31421613的博客 309

别再只调包了!深入理解机器学习虚拟筛选中的分子指纹(ECFP/Morgan)

本文深入探讨了ECFP/Morgan分子指纹在机器学习虚拟筛选中的应用与优化策略。通过解析半径参数与比特长度的化学意义,揭示了如何通过参数调优提升模型性能20%以上,特别适用于药物发现领域的高通量筛选。文章还提供了工程实践中的参数优化策略和多指纹融合技术,为开发者提供从理论到实践的全面指导。

weixin_33704234的博客 829

Visual C++设计超强仿QQ自动伸缩窗口

模仿前最重要的一步就是观察,经过半天对QQ的摆弄和摸索,总结出了以下一些特点:   1、窗口开始粘附时,检测的是鼠标坐标与桌面边界的距离,特别地,粘附在下面的时候,检测的是与任务栏的距离;   2、在向上移动窗口时,窗口边界永远不会超出桌面上面边界;   3、窗口是个 TopMost 风格;   4、当窗口粘附在上面、左边或右边并显示时,你把鼠标移动到最顶端,光标变成改变窗口大小的图标,而

xad25b9ec0c的专栏 957

基于verilog的16QAM调制

思路1:正交调幅法——实现16QAM调制,可以理解为时相位相差90度的两个正弦波的4PAM叠加。 4比特输入经过2->4进制转化得到两路2比特输入,然后分别经过4PAM后叠加所得输出即为16QAM调制结果。 具体程序稍后编写。 思路2:复合相移法——可以借助前面编写的QPSK,相当于两路幅度不同的QPSK的叠加,比如幅度分别取1和3 。 思路1正交调幅法的设计方案: 两正弦波相位差...

weixin_30725467的博客 2929
上一篇: VC实现类似qq聊天粘贴发送文件
下一篇: 任务栏信息栏中图标闪动
mincheat
博客等级 码龄17年 46粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值