问题标签 [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 回答
73 浏览

c++ - Windows 脚本宿主在关闭创建的窗口时终止

CreateWindowEx我为API 函数创建了一个包装函数,并从 VBScript 中使用它。这是 VBScript:

窗口按预期创建并显示正常。但我想知道为什么当我单击创建的窗口的关闭按钮时 Windows 脚本主机会终止。

CreateWindowEx使用 AutoIt 进行了测试,当我关闭创建的窗口时,AutoIt3.exe 没有终止,它继续运行脚本,这与 Windows Script Host 不同。

即使关闭创建的窗口,我也喜欢保持 Windows 脚本主机运行。

无论如何都不能实现我想要的,我想知道 Windows Script Host 发生这种情况的原因是什么。

0 投票
0 回答
52 浏览

c++ - 使 Direct2dFactory 指针无效的按钮创建 Windows C++

我正在 MS Visual Studio 2017 中编写一个 Windows 应用程序,但在使用 Direct 2D Factory 对象和按钮时遇到了一点麻烦。看来,如果我首先创建直接 2D Factory 对象,也就是运行:

工厂对象是使用存储在“m_pDirect2dFactory”中的指针正确创建的。该对象指针在主窗口的创建过程中持续存在:

并通过创建子窗口:

但是,当代码创建按钮时:

指针“m_pDirect2dFactory”的值更改为明显无效的值,这会在调用 m_pDirect2dFactory->Release() 时导致错误。或者,换句话说,按钮的创建篡改了由 D2D1CreateFactory 创建的工厂对象。

这是一个已知问题吗?

0 投票
1 回答
290 浏览

c++ - CreateWindowEx 在 Windows 10 上创建旧 (Windows 7) 样式边框

每当我使用CreateWindowEx(...)(可以在下面的代码中找到确切的参数)创建一个窗口时,它就会像旧式窗口一样显示:

旧式窗户

只有当我在远程桌面上启动它,关闭连接并重新连接时,它才会更改为所需的 Windows 10 样式:

新风格窗口

它与WM_SETTINGCHANGE应用程序在执行此操作时收到的几条消息有关吗?

显然,我希望窗口在创建时具有现代风格,而不是在处理一些消息之后。

我尝试了WS_...风格参数的不同组合。奇怪的是,该应用程序只可靠地显示为WS_OVERLAPPEDWINDOW | WS_VISIBLE.

我已经尝试过ShowWindow(有各种论点)并且UpdateWindow在两个命令中。

我也尝试过弄乱目标平台和工具集,但无济于事(使用 VS2015、v140)。

代码片段:

0 投票
0 回答
108 浏览

winapi - 在 WM_CREATE 上设置窗口数据的优点

根据微软的文档,设置自定义窗口数据的方法是通过lpParam参数传递它CreateWindowEx,在窗口过程中检索它WM_CREATE,然后使用SetWindowLongPtr. CreateWindowEx我想知道当你已经有了窗口句柄时,你为什么要这样做,而不是在调用之后设置它。感谢您的任何指导,如果这是一个基本问题,我们很抱歉。

0 投票
1 回答
910 浏览

c++ - Win32 API - HWND“{unused = ???} 无法读取内存”错误

我的项目是 C++ Windows 桌面向导 AKA Win32 API 项目。

在函数 WinMain(...) 我正在创建我的窗口:

之后由于某种原因,我的窗口状态为“无法读取内存”(因此我无法创建没有此问题的 GUI)。我什至检查了谷歌的第二页以找到解决此问题的方法。微软的文档没有帮助:我检查了实现,它与我的相符。尽管我之前创建了 2 个工作项目(比较没有给出任何结果),但我很长一段时间都无法修复它,我是盲人,我之前写错了。

整个代码如下:

>它在调试器中的外观<

提前感谢您的帮助。

0 投票
1 回答
178 浏览

c - 使用 WS_EX_COMPOSITED 创建静态控件失败

我正在用 C 编写一个 Windows 程序,我有一个静态控件,其中包含一个图形,您可以单击并拖动鼠标来选择一个范围。但是,当您四处拖动鼠标时,选择范围会闪烁。我从谷歌上了解到这是一个常见问题,解决方案是使用 WS_EX_COMPOSITED 样式(还建议覆盖 WM_ERASEBKGND,但在我的情况下并不能解决)。问题是当我激活这种样式时,它会导致 CreateWindowEx 失败。这是行:

CreateWindowEx(WS_EX_COMPOSITED, WC_STATIC, NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, graphXPos, graphYPos, GRAPH_WIDTH, GRAPH_HEIGHT, mainWindowHandle, NULL, NULL, NULL);

当像这样创建窗口时,这工作正常:

CreateWindow(WC_STATIC, NULL, WS_CHILD | WS_VISIBLE | WS_BORDER, graphXPos, graphYPos, GRAPH_WIDTH, GRAPH_HEIGHT, mainWindowHandle, NULL, NULL, NULL);

CreateWindowEx 失败的错误代码是 0x57,这意味着“此参数不正确”。文档说 WS_EX_COMPOSITED 不适用于使用样式 CS_OWNDC 或 CS_CLASSDC 的窗口类,所以我使用 GetClassInfo 来检查静态控件是否使用这些样式,但它们没有(它们只使用 CS_DBLCLKS 和 CS_PARENTDC)。

我不知道这是否重要,但这个静态控件的子窗口具有以下样式:WS_OVERLAPPED、WS_MINIMIZEBOX、WS_SYSMENU、WS_VISIBLE、WS_CLIPSIBLINGS。它所属的窗口类只有 CS_DBLCLKS 样式。

0 投票
1 回答
76 浏览

c++ - 'BeginDraw' 与 D2D1 结合使用会导致错误

我正在尝试CreateWindowEx使用 D2D1 清除使用分隔为单独类的代码创建的窗口的背景。这是代码。

^ 窗口.cpp

^ 图形.cpp

^ 图形.h

我的错误在窗口打开后立即发生,就在它崩溃之前。对此BeginDraw()负责,因为将其删除可以WM_PAINT解决问题,但这不是一个可行的选择。

错误:

抛出异常:读取访问冲突。 是空指针。

它被指定在 中的行void BeginDraw() { ... }Graphics.h

值得注意的事情(不重要):

在过去的几天里,我一直在努力寻找解决方案,但我不知道我阅读的大部分代码是什么意思,所以我为我缺乏知识而道歉。

我认为这个问题是BeginDraw()在图形初始化之前被调用的,但我不知道如何防止这种情况。

谢谢你的任何建议。

0 投票
1 回答
106 浏览

c++ - 挣扎于CreatWindow函数

我是初学者,我正在尝试编写我的第一个游戏。我正在关注前段时间制作的教程。这是我的代码:

当我尝试编译代码时,它给了我这两个错误:

我究竟做错了什么?

0 投票
1 回答
71 浏览

c++ - 如何创建一个行为类似于任务栏的窗口?

我想问一下如何创建一个行为类似于任务栏(shell_traywnd)的窗口?在一个名为 Enable Viacam(残疾人相机鼠标)的 Windows 应用程序中,我看到该应用程序在屏幕顶部创建了一个类似任务栏的窗口(见下图),它将所有其他窗口拉到它下面。 Enable_Viacam 的窗口(屏幕顶部)

我使用 Winspector 软件检查此 Enable Viacam 的窗口以查看其 WS_ /WS_EX_属性,以便我尝试模拟它,但使用这些属性调用 CreateWindowEx 并没有给我想要的结果。

这是我的尝试(此处未显示消息循环和窗口过程)

任何想法都非常感谢,谢谢!

0 投票
1 回答
127 浏览

delphi - Project Project1.exe 引发异常类 ERangeError,并带有消息“范围检查错误”

我正在阅读一本关于 Windows API 的旧 Delphi 书籍。这是其中的一个例子。

用户界面非常简单。我只需拖动一个按钮并将其放在表单上。但是,当我运行程序Embarcadero® Delphi 11.0 Version 28.0.42600.6491并单击表单上的按钮时,我得到Project Project1.exe 引发的异常类 ERangeError 并显示消息“范围检查错误”。. 之后,我得到了这个错误。

在此处输入图像描述

谁能帮忙看看问题出在哪里?

顺便说一句,我刚刚尝试了 Delphi 7 并且该程序有效。当我单击按钮时,会弹出一个空窗口。 在此处输入图像描述