从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按钮删除边框的主要内容,如果未能解决你的问题,请参考以下文章