Member 14926492 Ответов: 1

Как изменить цвет фона кнопки в win32?


Я хотел бы понять, как установить цвет фона кнопки в win32.
Я создаю свою кнопку с помощью CreateWindow и попробовал использовать API setbkcolor и setdcbrushcolor со всеми необходимыми параметрами но это не работает, тогда я попробовал использовать FillRect но, не найдя ничего минимально прокомментированного, я не могу сделать так, чтобы площадь цветного прямоугольника совпадала с поверхностью моей кнопки, и тогда текст кнопки покрывается из прямоугольника.
Что я могу сделать?
Заранее спасибо за помощь и советы
Ниже приведен базовый код моего окна

Что я уже пробовал:

#include <windowsx.h>
#include <windows.h>

#include "resource.h"
#pragma GCC diagnostic ignored "-Wunused-parameter"
#define IDC_BUTTON_START 0

HINSTANCE ghinstApp;
HWND ghwndApp;
HWND hStart;

BOOL Dlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    HFONT hFont;

    ghwndApp = hwnd;
    SetClassLong(hwnd, GCLP_HICON, (LONG) LoadIcon(ghinstApp, MAKEINTRESOURCE(IDI_ICONA)));
    hFont = CreateFont(40, 0, 0, 0, FW_BOLD, FALSE, FALSE, FALSE, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, "Calibri");
    hStart = CreateWindow("Button", "PLAY", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 0, 0, 150, 114, hwnd, (HMENU)IDC_BUTTON_START, ghinstApp, NULL);
    SendDlgItemMessage(hwnd, IDC_BUTTON_START, WM_SETFONT, (WPARAM)hFont, TRUE);
    return TRUE;
}

void Dlg_OnClose()
{
    EndDialog(ghwndApp, 0);
}

BOOL CALLBACK Dlg_Proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
        HANDLE_MSG(hDlg, WM_INITDIALOG, Dlg_OnInitDialog);
        HANDLE_MSG(hDlg, WM_CLOSE, Dlg_OnClose);
    default:
        break;
    }

    return FALSE;
}

int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE hinstPrev, LPSTR lpszCmdLine, int nCmdShow)
{
    ghinstApp = hinstExe;

    DialogBox(hinstExe, MAKEINTRESOURCE(IDD_DIALOGMAIN), NULL, Dlg_Proc);

    return (0);
}

1 Ответов

Рейтинг:
1

Richard MacCutchan

Это диалог, который по умолчанию не позволяет вам делать свою собственную картину. Однако вы можете отправлять сообщения на кнопку, чтобы управлять некоторыми ее аспектами: Кнопка сообщения - Win32-приложений, Майкрософт документы[^]