从win32按钮删除边框

Posted

技术标签:

【中文标题】从win32按钮删除边框【英文标题】:Remove border from win32 button 【发布时间】:2013-12-07 16:21:44 【问题描述】:

我有一个在 Win32 应用程序的 WM_CREATE 函数中创建的按钮,代码如下:

hChangeWorldButton = CreateWindowEx(NULL,
    "BUTTON",
    "OK",
    WS_CHILD | WS_VISIBLE | BS_FLAT | BS_BITMAP,
    2,
    2,
    25,
    25,
    hWnd,
    (HMENU)CHANGEWORLD_BUTTON,
    GetModuleHandle(NULL),
    NULL);
SendMessage(hChangeWorldButton, BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)worldBmp);

我希望按钮只显示图像。不是背景和边框。

我该怎么做?我从MSDN 尝试了许多不同的按钮样式,但似乎没有什么能满足我的需求。我正在考虑使用 BS_OWNERDRAW ,但这似乎有点矫枉过正。或者它是唯一的解决方案?

最后,当光标悬停在按钮上时,如何将光标更改为手?

【问题讨论】:

【参考方案1】:

没有可用的按钮样式可以产生您所追求的视觉表示。您必须在这里使用BS_OWNERDRAW

作为替代方案,您可以使用带有SS_NOTIFY 样式的Static Control。静态控件允许您获得所需的视觉表示,SS_NOTIFY 样式允许您响应鼠标输入。但是,您将无法实现键盘接口。

虽然我自己没有尝试过,但也可以通过使用Command Link (BS_COMMANDLINK) 并将标题设置为空字符串来获得所需的效果。

【讨论】:

【参考方案2】:

要消除按钮的背景和边框,只需使按钮小于位图即可。

【讨论】:

以上是关于从win32按钮删除边框的主要内容,如果未能解决你的问题,请参考以下文章

从 Chrome 中的 css 自定义样式按钮中删除蓝色边框

如何从弹出的谷歌地图信息窗口中删除关闭按钮(x)边框?

从按钮中删除边框

如何从输入按钮中删除轮廓边框

从图像上的 alt 标记文本中删除边框

Xcode 8 - 删除了一些按钮边框