从win32按钮删除边框

时间:2013-12-07 16:21:44

标签: winapi button

我有一个在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,但似乎有点矫枉过正。或者它是唯一的解决方案?

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

2 个答案:

答案 0 :(得分:3)

没有可用的按钮样式,导致您追求的视觉表现形式。你必须在这里使用BS_OWNERDRAW

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

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

答案 1 :(得分:-1)

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