在windows软件中,经常会碰到一个功能:鼠标hover在某个地方时会出现窗口,有时候这个窗口的位置是会动态调整的。

熟悉使用windows API,理解windows中虚拟坐标、工作区坐标、屏幕坐标等含义

多屏显示器模式下,如果获取某个点在其所在屏幕的相对位置?

该问题没有搜索出直接的解决方案,但是有间接的方法。

某个点相对于所在屏幕的位置,可以利用该点的绝对坐标和所在屏幕的绝对坐标得到。所以,如果可以得到所在屏幕在所有屏幕构成的虚拟工作区的坐标也是可以的。以下示例代码即可获取到某个点所在的屏幕的窗口位置:

    CRect rcWorkArea;
//获取到显示器句柄
HMONITOR hMonitor = MonitorFromPoint(
pSomePoint, //某个屏幕绝对坐标值表示的点
MONITOR_DEFAULTTONULL
);
if (hMonitor)
{
MONITORINFO info;
info.cbSize = sizeof(MONITORINFO);
if (GetMonitorInfo(hMonitor, &info))
{
rcWorkArea = info.rcMonitor;
}
}

接下来,通过 pSomePoint 和 rcWorkArea 的坐标进行运算,就可以得到该点相对于该屏幕的坐标。相关知识查看MSDN中相关说明

windows c++如何使窗口动态改变位置的更多相关文章

  1. WPF 学习笔记-设置属性使窗口不可改变大小

    原文:WPF 学习笔记-设置属性使窗口不可改变大小 调整Windows下的ResizeMode属性: ResizeMode = NoResize Resize属性是控制Windows是否可以改变大小, ...

  2. C# datagridview大小跟随窗口动态改变(转)

    在C#中使用winform布局的时候,拖一个datagridview到窗体上面,将datagridview调整为适合窗体的大小. 但是运行之后,点击最大化按钮的时候,发现datagridview的大小 ...

  3. 【转】C# datagridview大小跟随窗口动态改变

    源地址:https://blog.csdn.net/fengxing11/article/details/52527715

  4. WPF中利用后台代码实现窗口分栏动态改变

    在WPF中实现窗口分栏并能够通过鼠标改变大小已经非常容易,例如将一个GRID分成竖排三栏显示,就可以将GRID先分成5列,其中两个固定列放GridSplitter. <Grid Backgrou ...

  5. android 动态改变控件位置和大小 .

    动态改变控件位置的方法: setPadding()的方法更改布局位置. 如我要把Imageview下移200px:             ImageView.setPadding( ImageVie ...

  6. Qt+ECharts开发笔记(二):Qt窗口动态调整大小,使ECharts跟随Qt窗口大小变换而变换大小

    前言   上一篇将ECharts嵌入Qt中,在开始ECharts使用之前,还有一个很重要的功能,就是在窗口变换大小的时候,ECharts的图表尺寸也要跟随Qt窗口变换大小而变换大小.   Demo演示 ...

  7. Windows Phone 动态改变ListBox样式

    使用ListBox时通常会借助ItemTemplate帮助我们实现更复杂多样的样式显示,体现了Xaml的灵活.如何动态改变变ListBox的样式,实现类似电脑资源管理器中列表显示和图标显示形式的替换. ...

  8. 背水一战 Windows 10 (3) - UI: 窗口全屏, 窗口尺寸

    [源码下载] 背水一战 Windows 10 (3) - UI: 窗口全屏, 窗口尺寸 作者:webabcd 介绍背水一战 Windows 10 之 UI 窗口全屏 窗口尺寸 示例1.窗口全屏UI/F ...

  9. Windows SDK 实现不规则窗口介绍

    不规则窗口在程序界面设计中能提供非常好的用户体验,以下是我程序运行时的效果图: 以下是代码,注意需要修改一些简单的位置,如资源ID,项目的头文件等,这些是根据你创建的win32程序的项目名改变的,我的 ...

随机推荐

  1. the django travel(two)分页

    一:django路由系统: 注意:我们在urls.py中 定义url的时候,可以加$和不加$,区别的是:加$正则匹配的时候,比如:'/index/$'只能匹配'/index/'这样的url 不能匹配' ...

  2. 使用JQ实现统计剩余字数

    JQ实现统计文本框剩余字数 效果图: 代码如下,复制即可使用: <html lang="en"> <head> <meta charset=" ...

  3. 求Read Depth

    如何划窗统计测序数据的reads数(depth):https://blog.csdn.net/shenshenwu666/article/details/80936374 方法1,用samtools ...

  4. [转]Docker 生产环境之配置容器 - 限制容器资源

    默认情况下,容器没有资源限制,可以使用主机内核调度程序允许的给定资源.Docker 提供了一些方法来控制容器可以使用多少内存.CPU 或块 IO,并设置 docker run 命令的运行时配置标志.本 ...

  5. WPF 学习笔记-设置属性使窗口不可改变大小

    原文:WPF 学习笔记-设置属性使窗口不可改变大小 调整Windows下的ResizeMode属性: ResizeMode = NoResize Resize属性是控制Windows是否可以改变大小, ...

  6. c++ 文件位置相关操作

    教学内容:  l  文件定位操作 l  fgetpos定位 l  fsetpos设定位置 l  文件结束判断函数feof   一.文件定位操作 在C语言标准库里 获取文件位置的函数有ftell和fge ...

  7. python线程的使用模式

    为了解决阻塞(如I/O)问题,我们需要对程序进行并发设计. 本文将通过将线程和队列 结合在一起,轻松地在 Python 中完成线程编程,创建一些简单但有效的线程使用模式. 一.使用线程 先看一个线程不 ...

  8. [COCI2009]Dvapravca 计算几何

    [COCI2009]Dvapravca LG传送门 先给出考场上的\(O(n^3)\)乱搞方法:枚举一个蓝点和一个红点,找出过着两个点的直线,再枚举蓝点找出这条直线最多能往两边扩展多宽,最后枚举红点计 ...

  9. [算法]用java实现0-1背包和部分背包问题

    问题描述: 0-1背包问题,部分背包问题(课本P229)实验要求: (1)实现0-1背包的动态规划算法求解 (2)实现部分背包的贪心算法求解 0-1背包问题代码: public static void ...

  10. P3354 [IOI2005]Riv 河流

    树形dp,设f[i][j][k]表示第i个点的子树中选择j个点作为伐木场,而且k是建了伐木场的最浅的i的祖先的情况下,最小的收益. 这种题还要练一下,咕咕 然后转移可以n4方做. // luogu-j ...