问题标签 [common-controls]

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 回答
386 浏览

windows - 如何获取使用 BTNS_AUTOSIZE 样式创建的工具栏按钮的实际大小?

我创建了一个具有以下样式的工具栏:

然后我用纯文本按钮填充工具栏:

工具栏填满后,我想获取其按钮的实际大小。但是 GetButtonInfo 返回零大小。

我做错了什么,我怎么知道按钮的实际大小?

0 投票
0 回答
120 浏览

winapi - 使用 Common Controls 6.0 时无法更改编辑文本背景

我正在开发一个 Win32 C++ GUI 桌面应用程序。

所有编辑文本都是在资源文件中静态创建的,并且它们的背景在 DialogBox 例程中使用WM_CTLCOLOREDITWM_CTLCOLORSTATIC消息进行更改。

当窗口加载时,我可以看到所有编辑都具有正确的背景颜色。

当我使用 Common Controls 6.0(我需要它来加载 BMP 作为列表视图背景)时,问题就出现了。

为了启用 Common Controls 6.0,我这样做:

如果我在启用公共控件的情况下运行程序,所有编辑文本都以白色背景显示。但我可以用鼠标光标选择它来更改编辑颜色。

在网站上搜索我发现了这个问题

它确认了我遇到的行为,但没有提供在没有焦点时更改编辑背景颜色的解决方案。

任何帮助表示赞赏。

编辑: 感谢 RbMm 的回答,我将代码更改为

redBrush像这样声明和创建的地方

编辑背景颜色在开始时被正确地涂成红色,但是当编辑获得焦点时它再次变为白色(失去焦点时它变回红色)。

编辑 2: 感谢 zett42,现在它可以工作了!

0 投票
1 回答
120 浏览

windows - 如何将条带附加到 CReBar 控件的右侧

在我的框架窗口上,我有一个 CReBar 控件,在几行上带有不可移动的条带。在最后一行有两条带,它们当前向左对齐,第二条紧跟在第一条之后。

但我的产品管理人员希望我将第二条带子连接到线的右侧,中间留有空白区域。

我在任何地方都找不到如何做到这一点。如果有任何帮助,我将不胜感激。

编辑:实际代码使用 Xtreme GUI 库,但其结构非常标准:

m_wndReBar是一个 CReBar 派生类,工具栏是通用 Toolbar 控件的 Xtreme 包装器。他们使用常规的 MFC 标志,我没有找到将工具栏向右对齐的选项。

0 投票
1 回答
252 浏览

c++ - 具有 SysMonthCal32 类的窗口不响应 WM_SETFONT

我不确定我做错了什么。我的基于 CDialog 的 MFC 应用程序中有一个功能可以增加一些常用控件中的字体。这是通过向他们发送带有较大字体的WM_SETFONT消息来完成的:

这适用于大多数控件,除了 DateTime 选择器(或者更准确地说,它的月历SysMonthCal32窗口类。)

这是 Windows XP 上的屏幕截图,它可以按预期工作:

正常放大倍率:

在此处输入图像描述

放大:

在此处输入图像描述

但这是我在 Windows 10 上得到的正常放大倍数:

在此处输入图像描述

并且(应该是)放大,但不是:

在此处输入图像描述

那么为什么它在 XP 上工作并停止,从 Vista 开始呢?

0 投票
1 回答
211 浏览

c++ - 为什么 SC_HSCROLL 和 SC_VSCROLL 似乎在 WM_SYSCOMMAND 中切换?

我知道这是一个非常古老的东西,但我正在为此绞尽脑汁。有谁知道为什么会这样?

比如说,当滚动条鼠标点击通知通过WM_NCHITTEST-> WM_NCLBUTTONDOWN-> WM_SYSCOMMAND-> WM_HSCROLLor传播时WM_VSCROLL,这个链中的所有参数似乎都遵循文档,除了SC_HSCROLLSC_VSCROLLfor WM_SYSCOMMAND。所以如果我这样做:

我似乎收到水平的垂直通知,反之亦然。

这是来自 Spy++ 的证明。如果我单击此向下箭头:

在此处输入图像描述

这些是窗口收到的通知:

在此处输入图像描述

全部正确,除了SC_HSCROLL. 怎么回事?

0 投票
1 回答
313 浏览

unicode - 具有样式 LVCFMT_FIXED_WIDTH 的 CListCtrl 不适用于默认 Windows.Common-Controls

我使用 LVCFMT_FIXED_WIDTH 样式来防止用户列大小。

我只通过 hasard 发现,这适用于 Unicode,但不适用于非 Unicode 应用程序。用户仍然可以调整列的大小。

我认为这与 stdafx.h 中的默认 Windows.Common-Controls 清单框架有关

不幸的是,非 Unicode 应用程序没有默认设置。

如果我也对非 Unicode 应用程序使用相同的清单,它会再次起作用。

但我很确定,如果这是正确的解决方案?我们可以为 Unicode 和 NON Unicode 应用程序使用相同的 Windows.Common-Controls 主程序吗?

0 投票
1 回答
233 浏览

winapi - 透明窗口上的常用控件?

虽然这个问题有很多变体,但对于想要在使用 Win32 的透明窗口上使用内置通用控件的简单案例似乎没有具体的答案。我不希望控件是透明的,我只希望它周围的边框是透明的。我不敢相信 MS 在添加时没有更新 .dll 来处理透明度,但我猜他们忘记了?有没有具体的方法有效。一个按钮可以通过 WS_EX_TRANSPARENT 接近,但在大多数情况下它工作的地方很不稳定,但有时会出现部分边框。编辑控件,根据何时获得焦点进行更改。

所以问题很简单:

有没有办法在透明窗口上制作通用控件,因此它们周围没有白色边框?

如果没有,是否有一个很好的替代库可以通过所有者绘制来完成?

如果有的话,有哪些,方法是什么?

仅仅因为控件周围的区域而重新发明轮子似乎很愚蠢。

蒂亚!!

0 投票
1 回答
307 浏览

winapi - 自定义轨迹栏刻度

我正在使用库存的Trackbar控件。我想自定义绘制刻度。

这里我做了一个实验,只是想在合适的地方画图:

在我的CDDS_ITEMPREPAINT, ifdwItemSpec == TBCD_TICS中,更新矩形 ( NMCUSTOMDRAW->rc) 始终是一个空矩形。我检查了,对于其他项目(TBCD_CHANNELTBCD_THUMB),我得到了一个有效的矩形,并且可以代替通道和拇指进行绘制。

好的:那么,TBCD_TICS如果它没有给我一个可以绘制的矩形,那有什么意义呢?

所以也许我可以通过另一种方式获得刻度位置。好吧,有TBM_GETTICPOS,这似乎可行。除了文档提到这一点:

第一个和最后一个刻度线的位置不能通过此消息直接获得。

So how can I get the first and last tick positions? They do not correspond with the start and end of the channel, the ticks are inset slightly. Perhaps we can calculate the insert from the sides of the channel, but that seems fragile (especially on differently scaled displays).

0 投票
2 回答
594 浏览

windows - 如何在 EditBox 中切换自动换行

如何在多行编辑框中切换自动换行?

我可以使用或不使用它来创建它,但我不知道应该使用哪个消息来切换包装模式。

0 投票
1 回答
212 浏览

c - 选项卡 WinAPI 中的元素

如何在我的选项卡中添加一些元素(窗口)?

使用这些:

WM_CREATE:

在 BTN_ADD 中,我创建了两个选项卡。

但是这个按钮是在 hwnd(main) 中添加的,当我打开其他选项卡时,我继续看到这个按钮。我需要在某个选项卡中添加内容。

第一个标签

图片

第二个选项卡

图片