C ++ Win32无法在按钮上对齐文本

时间:2013-07-15 19:51:10

标签: c++ winapi alignment

这应该是相当简单的,但我不能为我的生活弄清楚为什么它不起作用。我做了很多谷歌搜索和MSDN,找不到更有用的东西。

    SendMessage(GetDlgItem(hwnd, IDC_ANCIENT), BM_SETSTYLE, (WPARAM)(BS_LEFTTEXT), (LPARAM)TRUE);
    Button_SetStyle(GetDlgItem(hwnd, IDC_ANCIENT), BS_LEFTTEXT, TRUE);

这就是我所拥有的。参数是正确的,我测试了样式BS_3STATE,它工作正常。我已经设置重绘了。我在对话框的WM_INITDIALOG消息中有这些行。

对话框及其中的所有内容都包含在我的资源文件中。

有什么想法吗?

感谢。

http://imageshack.us/a/img153/6594/rydv.jpg

2 个答案:

答案 0 :(得分:2)

BS_LEFTTEXT不适用于按钮。来自MSDN(强调补充):

BS_LEFTTEXT 将文本放置在单选按钮的左侧,或者与单选按钮或复选框样式结合使用时复选框。与BS_RIGHTBUTTON样式相同。

对于你想要的你可能需要做一个所有者绘制控件。查看同一链接上的BS_OWNERDRAW样式。

答案 1 :(得分:1)

我下载了资源文件编辑器并找到了解决方案。

           DEFPUSHBUTTON      "Ancient Crystal [Click]",IDC_ANCIENT,15,292,140,12, BS_LEFT 

如果您将BS_LEFT样式放在资源文件中,它将对齐左侧文本。

编辑:最后的注释 我试图在没有对话框的正确句柄的过程中更改字体对齐。我把把手的过程交给了主窗口。