问题标签 [createwindowex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1236 浏览

c++ - C++ 在其他 cpp 文件中创建窗口(不在 WinMain 中)

我有一个函数位于与 WinMain 不同的 cpp 文件中,调用时将创建一个窗口。但是,该新窗口的 windows 类已在 WinMain 中声明和注册。现在,当我在单独的函数中创建窗口时,我不得不重新声明 CreateWindowEx 函数的第二个和第三个变量:

因为实际执行创建的函数的位置无权访问在 WinMain 中创建的那些变量。现在......我的疑问是,我的程序实际上是否使用了我在 WinMain 中注册的窗口类?据我所知,重新声明这些变量并创建远离 WinMain 函数的函数可能会导致编译器采用其他一些标准窗口类。那么,我的程序实际上是在使用我在 WinMain 中注册的窗口类吗?

编辑:提供更多代码

//+++++++++++++++++++++++++++++++++++++++cpp文件与win main:

//+++++++++++++++++++++++++++++++++++++++其他cpp文件:

这最后一个函数是否使用在 WinMain 中注册的窗口类,即使它不在 WinMain 中并且在函数中重新声明了一些变量?

0 投票
2 回答
1024 浏览

c++ - CreateWindowEx 显示中文乱码而不是原始文本

我有个问题。我想记录我的工具开发,所以不是在屏幕截图上 mspaint-ing 日期,而是想让窗口名称带有日期和时间数据。但我只有中文字符,而不是字符串。

胡言乱语

这是我想将字符串分配给 CreateWindowEx() 的代码:

编辑:伙计们,我很欣赏你的回答,但他们都给了我这个

唯一有用的东西是一个尚未删除的答案,但它给了我这个:

在此处输入图像描述

他使用了这段代码:

0 投票
2 回答
4194 浏览

c++ - 为子窗口指定窗口过程

我想知道是否可以为创建的子窗口指定 WndProc CreateWindowEx

我已经创建了一个窗口类、主窗口、窗口过程和一个消息循环。该代码有效,为了清楚我的问题,我决定将其保留。

到目前为止,这是我的 Window Proc:

我希望在我创建的子编辑字段上按下按键以抛出 WM_KEYDOWN 消息,但他们没有!键只是添加到我窗口中的编辑字段中,但不会导致 WM_KEYDOWN 消息。

似乎创建的编辑窗口不使用我的 WndProc。我该如何改变呢?

0 投票
1 回答
426 浏览

c++ - 为什么我在使用 WS_EX_CONTEXTHELP 时看不到问号?

我正在学习 WinAPI。MSDN

WS_EX_CONTEXTHELP

窗口的标题栏包括一个问号。当用户点击问号时,光标变为带有指针的问号。如果用户随后单击子窗口,则子窗口会收到 WM_HELP 消息。子窗口应将消息传递给父窗口过程,该过程应使用 HELP_WM_HELP 命令调用 WinHelp 函数。帮助应用程序显示一个弹出窗口,该窗口通常包含子窗口的帮助。

WS_EX_CONTEXTHELP 不能与 WS_MAXIMIZEBOX 或 WS_MINIMIZEBOX 样式一起使用。

当我尝试WS_EX_CONTEXTHELP在我的代码中使用时,我没有看到问号。我没有在我的代码中指出WS_MAXIMIZEBOXor值:WS_MINIMIZEBOX

在此处输入图像描述

在此处输入图像描述

为什么会这样?我的“Hello World”代码:

0 投票
1 回答
741 浏览

c++ - CreateWindowEx 失败。如何让我的窗口(带有按钮)实际弹出一次?

我只能假设其中大部分都有效,因为我无法通过 CreateWindowEx 检查。如果有人会仔细检查我所有有趣的按钮代码,那也很棒。

这是我需要帮助的地方

不幸的是,我收到错误消息,是的,我的窗口创建失败。

0 投票
1 回答
677 浏览

winapi - WinAPI CreateWindow WS_POPUP 调整大小闪烁

我正在创建一个没有边框的窗口(CreateWindow 中的 WS_POPUP),并且需要在鼠标悬停时调整它的大小,并在鼠标离开应用程序时更改回来。它工作正常,但是当我使用 SetWindowPos 更改位置时它会闪烁。我需要将 y 减少 30 像素并增加高度,所以窗口的底部保持在相同的位置。

下面是代码:

我尝试了 SetWindowPos、MoveWindow 等的所有组合,但是当鼠标悬停在窗口上时,似乎窗口首先设置了 Y 位置,然后它在几毫秒后增加了高度,这是可见的。

有谁知道这个的解决方案?

0 投票
1 回答
243 浏览

delphi - 如何创建类似于 Windows UAC 的屏幕锁?

我正在尝试创建一个类似于 Windows UAC 的屏幕储物柜,如本教程中所示。我很难创建背景最大化的窗口,减少光线和桌面的屏幕截图。

这是我到目前为止尝试过的所有代码:

0 投票
0 回答
804 浏览

windows - 在 WinAPI 中,如何使用正确的鼠标制作可拉伸的 OpenGL 窗口,并为游戏正确捕获?

多年来,当我在努力理解 Microsoft Windows 的奇怪世界时,我已经阅读了很多 Stack OverflowCreateWindowEx()等等。这个问题最初被问到“在 WinAPI 中创建可流畅调整大小的 OpenGL 窗口的最佳方法是什么? "

我一直在努力让 WinAPI 制作一个窗口:

  • 具有 OpenGL 上下文
  • 在“窗口”模式或“全屏”模式下,在多显示器和单显示器显示中正确居中于主显示器(或由命令行信号确定的任何显示器)
  • 具有固定的内部客户端屏幕尺寸(视口 2d)
  • 不允许您单击外部导致它在错误的时间或在多显示器的特殊情况下失去焦点
  • 可以流畅地调整大小,但不会改变内部“客户端大小”(意味着它将固定大小的 OpenGL 内容拉伸到新的屏幕大小)......这里的想法是添加一层虚拟化,以便所有像素都在相同的 1920x1080 (1080p) 坐标系中表示。这部分对我来说没有问题。
  • 通过 screen->client ratio 正确处理从 screen_size -> client_size 等效的鼠标事件转换

在我自己开发的 App 框架中,我必须设置显示大小,即使这样,Windows 也没有给我正确大小的窗口。(例如,有时会减去标题栏,有时会减去滚动条,但上下文会绘制在标题栏下方。)

此外,最近从 2010 EE (Win32 / Windows 7) 迁移到 2015 (win32 / Windows 10) 时,我不得不更改参数以使视图居中,因为它在主显示屏上偏离中心。现在,只有有时这些值是正确的或不正确的。例如,如果我去“全屏”,相同的值将绘制在屏幕顶部上方,以便屏幕底部有一个区域显示“gl clear color”(在我的情况下,橙色)

我可以通过提供以下命令行参数来玩这些东西:

  • -bordered(默认,实际上没有效果,是带有标题栏等的默认窗口模式)
  • -borderless(似乎进入全屏模式,应用偏离中心,win 0,0 实际上位于屏幕中心)
  • -windowed(或-window)

如果我不提供 -window,它默认为“全屏”分辨率调整(但前提是我假设支持,否则可能会引发错误)。

无论如何,所有这一切都非常糟糕,因为a)我必须为我正在使用的每个分辨率编写一个 bajillion 案例,而不是为 1080p 编写所有内容并让它调整到显示大小,这是我想要的,因为它可以处理大多数笔记本电脑和台式机上的新显示器(记住这是 Windows)(并且在那些角落情况下只会稍微挤压东西) b)我无法流畅地调整窗口大小,而且我必须将鼠标困在中心并重新计算鼠标位置,所以我记录只有增量 - 这是为了避免鼠标离开窗口并单击桌面,或者从显示器上浮动到其他显示器,即使它被隐藏。我还必须使鼠标光标不可见,以便用户看不到这一点,然后显示模拟鼠标光标。c) 不专门支持 1920x1080 的用户将不会

有人在另一个问题中指出了这篇文章(Win32 中的窗口边框宽度和高度 - 我如何得到它?): https ://web.archive.org/web/20120716062211/http://suite101.com/article/client -area-size-with-movewindow-a17846

我已经通读了这个,了解到 AdjustWindowRectEx() 有一些问题: AdjustWindowRectEx() 和 GetWindowRect() 给 WS_OVERLAPPED 错误的大小

我不使用 WS_OVERLAPPED,所以这只是适度的帮助: AdjustWindowRectEx() 和 GetWindowRect() 使用 WS_OVERLAPPED 给出错误的大小

这是我现在的做法:

在上面的代码中,我得到的是一个没有resize功能的窗口,隐藏了OS鼠标光标,只能用ALT-TAB(或ALT-F4)退出,退出时出现在后面窗口 Z 顺序。我总是使用将 display.w 设置为 1920 并将 display.h 设置为 1080 的参数打开我的窗口,无论是全屏还是窗口模式。然后调用 WM_SIZE 将其调整到客户区。

请注意,在我设置 display.Resized(w,h) 的初始时间之后,在 WinProc 期间调用了以下 WM_SIZE:

这在应用程序加载期间只执行一次,在第一种情况下,它的值看起来像:1918,1078


更新:如果我在这里使用 GetWindowRect() 或 GetClientRect() 的结果,如下所示,窗口会神秘地移动到屏幕的 Center-X,Center-Y!是什么赋予了??


我需要采取哪些步骤来使窗口可拉伸,以便将上下文大小调整为视图,并根据屏幕比例正确调整鼠标?

基本上,有太多的边缘案例无法理解所有这些。自两年前我问这个问题以来,随着时间的推移,我在全屏和窗口出现之间出现了其他不一致。

据我了解,基本上有 3 种类型的窗口:

  • 用于窗口 GUI 的正常屏幕上可移动/可调整大小的窗口,例如此浏览器窗口(如果您不在移动设备上)
  • 一个与显示器的分辨率支持相匹配(包括小于其本机的分辨率)——我们称之为“全屏”(或全屏,甚至不是一个词)
  • 一个普通的屏幕窗口,但缺少标题栏、边框和滚动条,并且显示与屏幕一样大。被称为“街上”的“无边界之窗”

我想掌握所有这些,但以一种使它们都可以访问并且不需要特殊情况的方式。我基本上已经放弃了使用 WinAPI 这样做,但显然有多家公司这样做。遵循 Microsoft 的文档并不是很有帮助,而且我已经尝试了很多不同的 CreateWindow CreateWindowEx——顺便说一句,这些功能中的许多功能已被弃用,或者根本不起作用。

(也许最好的问题是,微软什么时候会清理这个垃圾?但我想我们都知道答案。).. 任何帮助让它工作将不胜感激。

我现在工作的领域:C++、Windows API、OpenGL 3.x / 4.x、Windows 10。

0 投票
1 回答
446 浏览

winapi - 使用 WS_EX_TOOLWINDOW 时显示任务栏按钮

使用 WS_EX_TOOLWINDOW 标志时是否可以显示任务栏按钮CreateWindowEx

0 投票
0 回答
90 浏览

vb.net - 在 CreateWindowEX 创建的窗口上使用 SlimDX 绘图

我想做的事:

  • 使用 CreateWindowEx 创建一个新的透明全屏窗口。
  • 将句柄传递给 SlimDx
  • 使用 SlimDX 在该窗口上绘图

我当前的代码:这是我的 CreateWindowEx 函数:

这是我的 CreateWindowEX:

正在创建窗口,我可以使用 GetWindowRect 检查它的大小,但是我的屏幕只是变白并且 SlimDX 没有在上面绘制。

我的绘图代码: