在Win32中动态更改按钮样式

时间:2012-02-23 06:20:22

标签: c++ winapi

以下是从头开始创建的正常运行的win32应用程序的一部分,而不是基于对话框。它会在buttom上显示文字,而不是顶部:

hButtonApply = CreateWindow(
    "BUTTON",
    "Reset",
    WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON | BS_BOTTOM,
    95, 130, 120, 40, 
    hWnd, (HMENU)IDC_BUTTON_RESET, hInstance, NULL);
SendMessage(hButtonApply, BM_SETSTYLE, BS_TOP, TRUE);
然而,这使它成为一个单选按钮:

SendMessage(hButtonApply, BM_SETSTYLE, BS_RADIOBUTTON, TRUE);

与资源定义的对话框按钮控件相同。

子类化是可以接受的。所有者绘制的按钮是不可接受的。谢谢,杨昊天

1 个答案:

答案 0 :(得分:0)

某些窗口样式只能在CreateWindow期间设置,我想这可能是其中之一。

您尝试过SetWindowLong吗?

修改

这似乎有效:

LONG style = GetWindowLong(hBtn,GWL_STYLE);
style = (style & ~BS_BOTTOM) | BS_TOP;
SetWindowLong(hBtn,GWL_STYLE,style);