问题标签 [winapi]

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 投票
4 回答
5636 浏览

c++ - 以编程方式更改组合框

我需要combobox使用新值更新 a ,以便更改其中的反射文本。最干净的方法是在combobox初始化并带有消息之后。

所以我正在尝试为postmessage包含combobox.

所以如果我想向它发送一条消息,将当前选中的项目更改为第 n 个项目,postmessage会是什么样子?

我猜它会涉及ON_CBN_SELCHANGE,但我无法让它正常工作。

0 投票
6 回答
1680 浏览

c++ - 如何用我自己的实现替换MS VC++项目中的WinAPI函数调用(名称和参数设置相同)?

我需要替换所有 WinAPI 调用

  • 创建文件,
  • 读取文件,
  • 设置文件指针,
  • 关闭手柄

使用我自己的实现(通过蓝牙使用低级文件读取)。将替换功能的代码是视频文件播放器,它已经适用于常规硬盘文件。如果 VideoPlayer 输入中的文件是常规硬盘文件,还需要 Video Player 仍然可以播放 HDD 中的文件。

这种任务的最佳实践是什么?

0 投票
3 回答
10705 浏览

winapi - 匿名管道上的重叠 I/O

是否可以将重叠 I/O 与匿名管道一起使用?CreatePipe() 没有任何指定 FILE_FLAG_OVERLAPPED 的方法,所以我假设 ReadFile() 会阻塞,即使我提供了一个 OVERLAPPED 结构。

0 投票
5 回答
21370 浏览

c++ - 不使用资源文件的 Windows API 对话框

我正在尝试使用 C++ 和 windows API 创建一个对话框,但我不希望在资源文件中定义该对话框。我在网上找不到任何好的东西,而且我读过的例子似乎都没有以编程方式定义对话框。

我怎样才能做到这一点?

一个简单的例子就可以了。我还没有做任何复杂的事情。

0 投票
2 回答
1276 浏览

windows - 如何确定 Windows 单选按钮的按钮部分的大小

我正在使用 DrawFrameControl 自己绘制旧学校(非主题 - 主题收音机是另一个问题)单选按钮:

我从来没有想出一个可靠的方法来弄清楚 RECT 应该传递什么。我一直在使用 12x12 矩形,但我希望 Windows 告诉我单选按钮的大小。

DrawFrameControl 似乎缩放单选按钮以适合我通过的矩形,因此我必须接近收音机的“正确”尺寸,使其与屏幕上的其他(非所有者绘制的)收音机相隔。

有人知道怎么做吗?

0 投票
7 回答
2977 浏览

c++ - Win32 的用户界面控件

我看到很多 .NET 的用户界面控件库,但是我在哪里可以使用简单的 C/C++ 获得类似的东西?

诸如更漂亮的按钮、刻度盘、列表视图、图表等。

似乎每个 Win32 程序员的通行权都是最终编写自己的集合。:/


请不要使用 MFC 控件。我只做纯C/C++。话虽如此,我也不想为我的应用程序添加一个数兆字节的框架,以便我可以拥有一个更漂亮的按钮。


我很抱歉遗漏了一个小细节,那就是我的开发是针对 Windows Mobile 的。

所以清单文件已经出来了。

我只是注意到有多少开发公司已经为制作漂亮的 .NET 组件而疯狂,并且想知道等效的 C/C++ Win32 组件去了哪里?

我读到有多少人最终编写了自己的渐变按钮类等。所以你会认为这些东西会有一些商业类。这很奇怪。

我将仔细研究 QT 并研究它对此类事物的 GUI 支持。当您是自己的 uISV 中的一个人时,这就是挑战。没有其他开发人员可以帮助您“完成工作”。

0 投票
3 回答
3590 浏览

c++ - 如何在 Win32 应用程序中通过 C++/MFC 在鼠标光标处显示动态文本

我希望能够在 win32 应用程序中的鼠标光标位置显示一些动态文本,例如给出一个 X,Y 坐标,该坐标将随着光标移动,就好像附加了一样。我可以在 mousemove 事件期间使用鼠标坐标处的窗口的 TextOut() 调用来执行此操作,并使存储的最后一个光标位置周围的矩形无效以清除先前的输出。然而,这可能会受到闪烁的影响,并导致在窗口中绘制其他内容(例如跟踪框)时出现问题。有没有更好的方法来做到这一点,也许使用现有的光标绘制/无效机制?

0 投票
3 回答
1737 浏览

windows - 使用 Windows 媒体格式 (WMF) 捕获桌面

我正在使用Windows Media Format SDK实时捕获桌面并将其保存在 WMV 文件中(实际上这是对我的项目的过度简化,但这是相关部分)。对于编码,我使用的是Windows Media Video 9 Screen编解码器,因为它对于屏幕捕获非常有效,而且几乎所有人都可以使用它而无需安装任何东西,因为编解码器包含在 Windows Media Player 9 运行时(包含在Windows XP SP1)。

我正在使用 GDI 功能制作 BITMAP 屏幕截图,并将这些 BITMAP 提供给编码器。您可以猜到,使用 GDI 进行屏幕截图很慢,而且我没有得到屏幕光标,我必须手动将其添加到 BITMAP。我最初得到的 BITMAP 是 DDB,我需要将它们转换为 DIB 以便编码器理解(RGB 输入),这需要更多时间。

启动分析器显示大约 50% 的时间花在编码器 WMVCORE.DLL 中。这是意料之中的,当然,因为编码是 CPU 密集型的。

问题是,有一个叫做Windows Media Encoder的东西,它带有一个 SDK,可以使用所需的编解码器以更简单、更 CPU 友好的方式进行屏幕捕获。

WME 基于 WMF。它是一个更高级别的库,并且还具有 .NET 绑定。我不能在我的项目中使用它,因为这会带来我必须避免的不需要的依赖项。

我在询问 WME 用于将样本数据提供给 WMV 编码器的方法。编码发生在 WME 中,就像它发生在我使用 WMF 的应用程序中一样。WME 比我的应用程序更高效,因为它有一种更有效的方式将视频数据提供给编码器。它不依赖缓慢的 GDI 函数和 DDB->DIB 转换。

它是如何完成的?

0 投票
7 回答
28154 浏览

c - 如何获取与打开 HANDLE 关联的名称

在 Win32 中获取与打开的 HANDLE 关联的文件名的最简单方法是什么?

0 投票
1 回答
1674 浏览

c - 如何在 Win32 C 中将 GMT 转换为 LocalTime?

我想将历史上的各种位置/日期/时间从 GMT 转换为当地时间。似乎SystemTimeToTzSpecificLocalTimeFileTimeToLocalFileTime. 当日期/时间对还包括不同的位置时,转换会变得很棘手。我在ftp://ftp.iana.org/tz/releases找到了一个数据集— 是ftp://elsie.nci.nih.gov/pub/ — 从历史和空间来看,这似乎很完整,但是它似乎被设计为针对一个时区而不是所有时区进行编译。

GetDynamicTimeZoneInformationGetTimeZoneInformationForYear功能仅在 Vista / Server 2008 开始可用,我的机器回到 NT 4.0。我可能会尝试有条件地在较新的系统上使用它们。

是否有一个不错的 C 包可以为我解决 Windows XP 和 NT 4.0 的问题?