更改 CSpinButtonCtrl 的样式

Posted

技术标签:

【中文标题】更改 CSpinButtonCtrl 的样式【英文标题】:Change style of CSpinButtonCtrl 【发布时间】:2018-03-20 12:46:51 【问题描述】:

我尝试在 C++ MFC 中更改 CSpinButtonCtrl 的方向属性。

默认情况下我将方向属性指定为垂直,但是当我在执行期间尝试将属性样式更改为水平(UDS_HORZ)时,它不起作用...

示例代码

CRect rect;
CWnd *pWnd;

pWnd = GetDlgItem(IDC_SPIN_GRAD_CONTRAST);
pWnd->GetWindowRect(&rect);
((CSpinButtonCtrl*)pWnd)->Create(WS_VISIBLE | UDS_HORZ, rect, pWnd->GetParent(), IDC_SPIN_GRAD_CONTRAST);

它创建一个水平旋转按钮控件。

我假装做的是找到任何方法来改变样式而不改变先前创建的控件的位置和行为

我将不胜感激。

【问题讨论】:

请编辑您的问题并发布相关代码。 【参考方案1】:

某些样式的控件只能在创建控件时使用。

AFAIK 你必须重新创建控件。

另一方面,我查看了CMFCSpinButtonCtrl 的源代码。使用它允许动态改变方向。确保强制重绘控件。

PS:在运行时更改这个接缝对我来说是一个奇怪的场景。

【讨论】:

如何声明 CMFCSpinButtonCtrl 类型的对象? 声明一个类的实例并将你的上下控制子类化。 我认为这是一个复杂的解决方案,有没有最简单的方法可以让框架只更改UDS_HORZ CSpinButtonControl 的样式并强制重绘/刷新?我尝试使用SetWindowLong(...), Invalidate(), RedrawWindow(),但它并没有做任何我的意思....提前谢谢。 没有。似乎只有在创建控件时才能更改此控件。所以如果你想改变它,你必须重新创建控件。您必须决定子类化是否更简单。我不知道你的代码库,但在我的程序中,将控件子类化会更简单。

以上是关于更改 CSpinButtonCtrl 的样式的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CSpinButtonCtrl 类在 MFC 中动态创建微调按钮控件?

猎豹MFC--数值调节按钮CSpinButtonCtrl

Bootstrap data-spy="affix" 不适用于 Angular 视图更改

旋转按钮进度条滑块控件的使用

spi参数设置的依据

使用 Python 更改桌面背景