首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何让CreateWindowEx()在特定的监视器上创建窗口?

要在特定的监视器上创建窗口,可以使用Windows API中的CreateWindowEx()函数。以下是一个简单的示例,说明如何在特定的监视器上创建窗口:

  1. 首先,需要获取监视器的句柄。可以使用EnumDisplayMonitors()函数来枚举所有的监视器,并获取其句柄。
代码语言:cpp
复制
#include<windows.h>
#include<iostream>

BOOL CALLBACK EnumMonitorCallback(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData)
{
    std::cout << "Monitor handle: " << hMonitor<< std::endl;
    return TRUE;
}

int main()
{
    EnumDisplayMonitors(NULL, NULL, EnumMonitorCallback, 0);
    return 0;
}
  1. 然后,在CreateWindowEx()函数中,使用MONITORINFO结构体来获取监视器的位置和大小信息。
代码语言:cpp
复制
MONITORINFO monitorInfo;
monitorInfo.cbSize = sizeof(MONITORINFO);
GetMonitorInfo(hMonitor, &monitorInfo);
  1. 接下来,在CreateWindowEx()函数中,设置窗口的位置和大小,以确保它在特定的监视器上创建。
代码语言:cpp
复制
HWND hwnd = CreateWindowEx(
    WS_EX_OVERLAPPEDWINDOW,
    "MyWindowClass",
    "My Window Title",
    WS_OVERLAPPEDWINDOW,
    monitorInfo.rcMonitor.left,
    monitorInfo.rcMonitor.top,
    monitorInfo.rcMonitor.right - monitorInfo.rcMonitor.left,
    monitorInfo.rcMonitor.bottom - monitorInfo.rcMonitor.top,
    NULL,
    NULL,
    hInstance,
    NULL);

这样,就可以在特定的监视器上创建窗口了。

需要注意的是,这只是一个简单的示例,实际应用中可能需要更复杂的逻辑来确定窗口的位置和大小。此外,还需要考虑多监视器的情况,以及窗口的最小化和最大化等问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Android初级】如何让APP无法在指定的系统版本上运行

随着市面上越来越多三方APP的出现,某些手机厂商也开始对这些APP进行了安装限制或者运行限制,或者三方APP自身的版本过低,无法被特定的系统版本所支持。...今天我将要模拟实现一个“由于APP自身版本过低、导致无法在当前的系统版本上运行”的功能效果。...实现思路如下: 要获得APP的目标运行版本,也要知道系统的编译版本 通过版本比较,在进入该APP时,给用户做出“不支持运行”的提示 用户确认提示后,直接退出该APP 关键点是 targetSdkVersion...} }) .create() .show(); } } 2、在AndroidManifest.xml...我们注意到程序中使用的是 getApplicationInfo().targetSdkVersion,说明这个变量是 ApplicationInfo.java 的成员变量,这个值是在安装APK的过程中、

2.8K20

【Windows编程】创建基本控件

前一篇文章我们一起学习了Windows编程基本框架,几乎所有的Windows编程都是以这个模式开始,剩下的就是如何怎么框架的基础上如何添加枝叶实现不同的功能了。...在Win32 SDK环境下,怎么来创建常用的那些基本控件呢?...我们知道如果用MFC,简单的拖放即可完成大多数控件的创建,但是我们既然是用Windows SDK API编程,当然是从根上解决这个问题,实际上MFC的下层也是通过这些API完成的。...实际上控件也是窗口,只不过是被微软预先创建好的一种窗口类,比如button就是一个类名为“BUTTON”的类。...既然控件实际上是窗口,当然也是用CreateWindow或者CreateWindowEx这个函数来完成的,第二个函数除了多一个扩展风格之外,其他完全一样,下面以主要以CreateWindow为例说明,该函数原型如下

2.2K70
  • 【Windows编程】系列第六篇:创建Toolbar与Statusbar

    上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏,工具栏主要用于一些快捷功能按钮。...首先,前面我们在讲解Windows常用控件的创建时就知道,所有带窗口的控件创建实际上都是调用Windows提供的CreateWindow或者CreateWindowEx(以下以CreateWindowEx...使用实例 下面我们通过一个基本的实例程序说明如何采用纯Windows API创建、使用工具栏和状态栏。...程序中创建的Toolbar有三个图标,当程序正常显示,鼠标在某个工具栏按钮上移动,或者处于Disable状态是,会有不同的图片显示,读者可以自己更换其他自己喜欢的图标。...状态栏一共有三个面板,后面两个在创建时静态赋字符串,第一个则实时捕获鼠标在客户区中的坐标位置并显示出来。

    2.2K41

    Win32 最简单的窗口模板和常用的5个消息参数使用示例

    窗口创建的过程: 1、根据窗口名称,到每一个窗口类中找到相应的窗口。...stdio.h> HANDLE g_hOutput = 0; // 接受标准输出句柄 void OnCreate(HWND hWnd, LPARAM lParam){ /* 下面三行代码,把开发者在创建窗口之前弹出那个自定义的字符串...是加强版函数 多了一个dwExStyle: 窗口的扩展风格 窗口创建的过程: 1、根据窗口名称,到每一个窗口类中找到相应的窗口。...WM_USER+1001 //自己定制消息,WM_USER = 0x400 void OnCreate(HWND hWnd, LPARAM lParam){ /* 下面三行代码,把开发者在创建窗口之前弹出那个自定义的字符串...是加强版函数 多了一个dwExStyle: 窗口的扩展风格 窗口创建的过程: 1、根据窗口名称,到每一个窗口类中找到相应的窗口。

    1K20

    初识win32

    注册窗口类 RegisterClassEx 2、创建窗口 CreateWindowEx 3、在桌面显示窗口 ShowWindow 4、更新文本框 UpdateWindow 5、...进入消息循环 获取消息 GetMessage 将消息发送到定义的MainWndProc函数处理 DispatchMessage 进入下一个循环 01 创建win32程序 VS2015下创建...// 创建主窗口 HWND hwnd = CreateWindowEx( 0, // dwExStyle,扩展样式 szClassName...例如:(VS下选中变量右键转到定义) typedef unsigned int UINT; 在上面代码中需要注意的是注册的窗口类名必须和创建的窗口类名一致,否则创建窗口失败 ?...然后就是那些函数的参数介绍了,在这里我就不介绍了,因为太多了,我告诉大家一个方法 在VS中,选中要查询的函数或者宏,按F1键,函数介绍和宏的相关信息就会出来了,特别全 例如我选中CS_HREDRAW,按下

    1.1K30

    【Windows编程】创建多文档界面

    多文档界面框架创建过程需要以下几步: 主框架窗口创建 主框架窗的创建跟普通的窗口没有什么区别,就是自己注册一个类并用该类创建一个重叠窗口,这个可以用CreateWindow/CreateWindowEx...客户区窗口创建 客户区创建的创建同样用你CreateWindow,但需要指定类为“MDICLIENT”,用这个类会创建多文档的客户区窗口;或者采用CreateWindowEx函数,指定扩展风格为WS_EX_MDICHILD...视图窗口创建 创建工作或者视图窗口作为实际文档窗口,这个也是需要自己注册类并创建自己需要的视图窗口。视图窗口可以有自己的菜单,一般不需要状态栏。...虽然本程序只实现了一个视图的实例,但是再增加一个是很容易的,只要想办法在菜单中调用CreateDocView函数,并且正确处理对象指针即可。...本实例实现了一个基本的多文档窗口框架,读者朋友可以在此基础上加上工具栏、状态栏、视图窗口创建对类的处理,多实例以及具体的需求,完成实用化的多文档界面。

    1.3K50

    【专业技术】Win32创建异形窗口

    大家都见过在windows下各种气泡窗口、输入法窗口已经其他一些窗口,这些窗口看起来不像传统的windows窗那样,上面是标题栏,下面是窗口的客户区。...其实在windows下实现特殊的窗口并不困难,有两种办法可以实现: 通过创建路径和区域、合并区域的办法。...实现方式就是将窗口属性设置分层,然后使用SetLayeredWindowAttributes这个API函数将特定颜色设置为透明色,该函数不仅可以设置为透明色,还可以设置整体窗口的透明度,将上一篇文章中设置半透明窗口效果...首先我们要准备一张用于特殊窗口样子的位图,我们选择的图片如下: 为了实现这个位图的窗口形状,我们先对这个位图进行处理,将窗口以为的部分用一种特殊的颜色来填充,这个颜色需要与窗口保留部分不一样,因为只要是这种特定的颜色就会变成非窗口的部分...赶快在你的电脑上试一下吧,你还可以换成你自己的图片,只要设置争取的透明色即可。

    3.4K110

    Windows 窗口样式 什么是 WS_EX_NOREDIRECTIONBITMAP 样式

    普通的应用是给每个窗口的客户区创建一个重定向表面,这个应用的窗口的所有绘制内容都绘制到这个表面。...而通过 DirectComposition 可以让应用自己管理和创建这个重定向表面,而让桌面管理器从应用自己创建的表面进行获取 Bitmap 和其他表面进行混合 这个方式有什么作用?...用到这个功能最多的是 UWP 应用,但是经过考古在 Win8 的全屏应用也用到这个技术,在 win32 函数里面的 CreateWindowEx 方法创建窗口的时候,可以通过传入 WS_EX_NOREDIRECTIONBITMAP...详细文档请看 Extended Window Styles (Winuser.h) - Win32 apps 如何才能说德熙不是在骗你?创建一个 UWP 应用,然后运行这个应用。...关于应用截图请看 win10 uwp 录制任意应用屏幕 本文只是和小伙伴吹这个技术,不会告诉大家实际上应该如何做。

    1.9K20

    VC++6.0入门——第三讲 认识MFC框架

    这个程序和我们在第1章中所创建的程序类似,但比后者多了菜单栏、工具栏以及状态栏。这一切都是通过MFC AppWizard生成的。...);::UpdateWindow(hwnd);...}如何加按钮编译并运行Tst程序,但发现按钮并没有显示出来。...前面已经讲过,如果一个窗口与一个C++窗口类对象相关联,当这个C++对象生命周期结束时,该对象在析构时通常会把与之相关联的窗口资源进行回收。...这就是说,当执行到例3-22所示的OnCreate函数的右大括号时,刚刚创建的btn窗口就被与之相关的C++对象销毁了。因此,不能将这个按钮对象定义为一个局部对象。...我们程序中的按钮是在主框架窗口的客户区出现的,并且其位置由CRect(0,0,100,100)参数指定,说明其左上角就是其父窗口客户区的(0,0)点,因此,该按钮就在程序的菜单下、工具栏上显示出来了。

    32010

    【实测】用土话让你明白如何做测试平台的持续部署和集成 - 4【gitlab-runner在gitlab上要如何配置】

    答:按常理说,应该是有个类似文件的东西,让我们把要执行的命令写在上面,然后gitlab-runner认识这个文件(应该需要特定文件名)。才会达到自动执行的目的。...(我的项目叫for_test,点开头的文件证明是隐藏文件) 在哪修改:既然在项目根目录,那我们可以本地修改然后git push上传,也可以在gitlab网页上在线创建和修改。...tags:sss 就是让我提前设置在服务器上注册时候的那个管家,我图里叫sss,前面教程叫wqrf1 大家注意。...所以我们在gitlab网页上,在线修改.gitlab-ci.yml 然后保存,也一样可以触发才对,这样我们调试就方便了~ 注意,当你用公司的产品时,尽量单弄个分支代码来不断调试这个gitlab-runner...,千万不要在主干分支:master或main 上,不然不断的重新部署,会让公司的同事没法用主干环境正常工作了,这很重要,因为你一开始可能要调试很多次,一定会挨揍的,亲测。

    74720

    Rectangle Pro for Mac(窗口布局增强工具)

    Rectangle Pro 可以让用户通过自定义快捷键来将应用程序窗口移动到屏幕上的不同位置,使得多任务操作更加高效。...支持多个监视器:Rectangle Pro 可以在多个监视器之间移动应用程序窗口,并且可以在两个不同的屏幕之间调整窗口大小。...智能窗口位置:当用户创建新窗口或打开新应用程序时,Rectangle Pro 可以根据用户的习惯自动放置其位置,并且还可以记住上次该应用程序所在的位置。...触发器:用户可以设置触发器,使得某些应用程序或窗口在特定情况下自动调整大小或位置。操作历史:Rectangle Pro 可以记录所有窗口操作历史,方便用户随时查看和恢复已经执行过的操作。...窗口缩放:用户可以通过快捷键缩放窗口大小,方便用户在不同的窗口大小之间切换。外观主题:用户可以选择不同的外观主题,包括浅色、深色、灰色等,让用户自定义其界面风格。

    83210

    【专业技术】如何愉快的在Windows下开发控件

    在Win32环境下,怎么来创建常用的那些基本控件呢?...通过MSDN可以知道,不管是创建窗口还是控件,都是通过CreateWindow或者CreateWindowEx这个函数来完成的,这两个函数除了多一个扩展风格之外,其他完全一样,下面以CreateWindow...lpWindowName:窗口或控件的名字或者文本 dwStyle:窗口或控件风格 x,y,nWidth,nHeight:窗口或控件的坐标和宽高 hWndParent:窗口或控件的父窗口 hMenu:...窗口菜单或者控件的ID hInstance:窗口实例,控件一般为空 lpParam:窗口或控件参数,会被传递到创建消息中去 那么具体怎么实现各个基本的控件呢?...这些控件可是不用MFC中的方式创建,纯手工打造,怎么样?是不是很简单,赶快去试试吧。 事实上,windows的所有控件都是用这个函数创建的,只是不同的控件的类不一样,更多的控件可以查MSDN。

    784100

    【网络编程】异步选择模型

    异步选择模型 逻辑 核心:消息队列,操作系统为每个窗口创建一个消息队列,并且维护,我们想要使用消息队列,那就要创建一个窗口。 第一步:将我们的socket,绑定在一个消息上,并且投递给操作系统。...窗口 第一步:创建窗口结构体——WNDCLASSEX 第二步:注册窗口结构体——RegisterClassEx 第三步:创建窗口——CreateWindowEx 第四步:显示窗口——ShowWindow...RegisterClassEx(&wc);//窗口类变量地址 //创建窗口 //窗口句柄 HWND hwnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,...//只要窗口在,就得不停的在窗口上取消息 //消息结构体——装消息 MSG msg; while (GetMessage(&msg, NULL, 0, 0))//点击关闭窗口,GetMessage...RegisterClassEx(&wc);//窗口类变量地址 //创建窗口 //窗口句柄 HWND hwnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,

    36510

    OD常用断点 ^_^ 很全很全

    常用断点(1) 拦截窗口: bp CreateWindow 创建窗口 bp CreateWindowEx(A) 创建窗口 bp ShowWindow 显示窗口 bp UpdateWindow 更新窗口...不知道在win2k上,以上常用中断函数是什么了? 也就是问密码、时间、窗口、ini、key、注册表、加密狗、光盘、软盘、限制等! 了解常用的中断,对破解分析可以做到事半功倍! 请大家说一下!...它只是显示在另一个制作文件上,可是*.htm *.exe等) C.才是最难搞,也是很多人想知道的!包括我在内。不知道高手们有何提示了?...8-) API不太知道,也许可以通过BIOS在98平台上读写扇区,不过在2000/NT下可以通过内黑ATAPI,HAL写扇区 machoman[CCG] bpx WRITE_PORT_BUFFER_USHORT...bmsg handle wm_command ;拦截OK按钮(handle为对应窗口的句柄) 拦截窗口: bpx CreateWindow ;创建窗口 bpx CreateWindowEx(A/W)

    1.2K30

    【专业技术】搜狗歌词窗口如何来实现

    要实现这种效果,有一点一般是需要的,就是窗口透明的效果,所以关键之一就是如何实现windows窗口的透明。...我们要实现像Sogou歌词窗口那样,显然是没有标题栏和边框,并且是最顶层窗口,所以我们创建窗口时要指定相应的属性。...本方法实现的类似Sogou歌词显示窗口的关键有两处: 一是需要实现透明窗口效果,用WS_EX_LAYERED属性和SetLayeredWindowAttributes函数实现,这样就只有窗口上的字出现。...二是将窗口设为zorder的顶层,才会在桌面不被其他窗口盖住,因此本窗口的父窗口是HWND_DESKTOP,也可以通过GetDesktopWindow()函数来获取。...三是创建窗口时要去掉标题栏和边框,这个通过采用WS_POPUP属性和WS_EX_TOOLWINDOW扩展属性来实现。

    868100

    VBA使用API_03:创建窗体

    使用Excel VBA要创建窗体非常的简单,直接插入一个用户窗体就可以了,VBA已经封装好了窗体,而且具有很多功能以及控件。...这些在底层都是要调用API,只是我们看不到而已,让我们使用API来创建一个窗体试试,分三步: 注册窗体类 创建窗体 显示窗体、循环接收消息并处理 注册窗体需要用到RegisterClass,必须先要注册一个窗体类...,才能在第二步创建窗体CreateWindowEx进行创建,创建好后必须使用ShowWindow才能显示出来,窗体显示出来之后,如果没有其他要执行的程序,马上就会消失,因为程序运行完成了,所有资源被自动回收了...所以必须要循环接收消息以保证不退出程序,具体要处理的消息Windows已经做好了默认的DefWindowProc回调函数来处理,在RegisterClass的时候可以进行指定回调函数,我们可以在回调函数里去捕获消息进行处理...SW_SHOWNORMAL = 1 Public Const WM_DESTROY = &H2 Public Const WM_LBUTTONDOWN = &H201 Sub VBAMain() '初始化注册窗口类所需要的数据

    1.9K20

    电脑技巧:微软官方推出的几款实用工具,值得推荐

    PowerToys的作用非常实用。例如,你可以用FancyZones,来让软件按照特定设置来排列窗口哦,这要比Windows自带的并排两个或者四个窗口强大得多。...Process Explorer 在调成双窗口模式下,还可以看看某个软件到底在搞什么小动作,如,选中了“Chrome.exe”进程后,这个进程读取了什么文件、访问了注册表哪个键值、使用了什么端口、引发了什么事件...流氓软件对系统做的事情,在进程监视器之中,无所遁形。...Process Monitor 还支持监视某个特定进程,例如想要监视 QQ(只是举例,不是说QQ是流氓软件),那么只需要对着“QQ.exe”单击右键,然后选择“Include’QQ.EXE’”,那么进程监视器就会只监视...开启了自动滚动后,QQ 的进程在此时此刻有什么操作,一目了然。可以说,如果你想要了解某个软件在系统中的所作所为,Process Monitor 绝对可以让你一目了然!

    1.3K31

    Windows创建窗口详解+代码---十天教会你俄罗斯方块

    代码地址:https://blog.csdn.net/qq_41603898/article/details/80968266 以VS为例解析: 先创建项目,主函数,再写窗口结构体 //一.创建窗口结构体...();//注册失败的错误代码 return 0;//注册失败 } 三.创建窗口 窗口句柄=HWND CreateWindowEx( DWORD dwExStyle,//额外风格,比如WS_EX_WINDOWEDGE...包含多个风格 int X,//距离屏幕左边的距离 int Y,//距离屏幕上边的距离 int nWidth,//窗口宽度 int nHeight,//窗口的高度 HWND hWndParent,//父窗口句柄...(窗口句柄(上面第三块函数的返回值), 显示窗口的状态); 五.消息处理 读取消息 BOOL GetMessage( LPMSG lpMsg,//读取的消息放到结构体里 HWND hWND,//NULL...LPARAM lParam)//两个消息参数 LRESULT CALLBACK WndProc(HWND hwnd,UINTmessage,WPARAM wParam,LPARAM lParam) {//让系统自动处理默认消息

    39910
    领券