【问题标题】:C++ Win32 Having Trouble Aligning Text on a PushbuttonC++ Win32 在按钮上对齐文本时遇到问题
【发布时间】:2013-07-17 08:36:30
【问题描述】:

这应该相当简单,但我终其一生都无法弄清楚它为什么不起作用。我做了很多谷歌搜索和 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

【问题讨论】:

  • 按钮定义为复选框还是单选按钮? BS_LEFTTEXT 仅适用于这些按钮类型。此外,您所看到的屏幕截图可能会有所帮助。
  • 嗯,有没有样式可以让文本左对齐?我上传了资源文件和相应按钮的截图。谢谢。

标签: c++ winapi alignment


【解决方案1】:

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

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

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

【讨论】:

  • 是的,这就是我必须做的。对于偶然发现此页面的任何其他人,这里是自定义控件教程的链接:catch22.net/tuts/custom-controls。谢谢。
【解决方案2】:

我下载了一个资源文件编辑器,找到了解决办法。

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

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

编辑:最后注 我试图在没有正确处理对话框的过程中更改字体对齐方式。我正在将程序的句柄交给主窗口。

【讨论】:

    猜你喜欢
    • 2017-02-14
    • 2016-11-25
    • 2013-02-26
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    相关资源
    最近更新 更多