2013-12-07 3 views
2

У меня есть кнопка, которая создается в функции WM_CREATE в виде Win32-приложения с помощью следующего кода:Удалить границу с кнопкой win32

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, но, похоже, это немного переборщило. Или это единственное решение?

Наконец, как я могу поменять курсор на ручку, когда он нависает над кнопкой?

ответ

3

Отсутствует стиль кнопки, в результате которого вы получаете визуальное представление. Вы должны были бы пойти с BS_OWNERDRAW здесь.

В качестве альтернативы вы можете использовать Static Control с использованием стиля SS_NOTIFY. Статический контроль позволяет получить желаемое визуальное представление, а стили SS_NOTIFY позволяют реагировать на ввод мыши. Однако вы не сможете реализовать интерфейс клавиатуры.

Хотя я и не пробовал это самостоятельно, также возможно получить желаемый эффект, используя Command Link (BS_COMMANDLINK) и установив заголовок в пустую строку.

-1

Для устранения фона и границы кнопки просто нажмите кнопку меньше, чем растровое изображение.

+0

Это не работает: растровые весы с кнопкой. – RaptorDotCpp

Смежные вопросы