Серый фон панели инструментов C ++ - PullRequest
2 голосов
/ 07 октября 2011

Я пытаюсь создать панель инструментов в C ++, используя Win32 API (без MFC или VC ++). Я могу создать панель инструментов, которая выглядит следующим образом и не имеет фона, только основной цвет окна.

enter image description here

Я бы хотел, чтобы это выглядело как на картинке ниже с глянцевой полосой и серым градиентом

enter image description here

Я пытался использовать TBSTYLE_FLAT, когда я получил неопределенную ошибку, я объявил ее равной 0x0800, которая все равно не имела никакого значения. Мне нужно добавить больше свойств? Я вставлю свой код ниже.

HWND hTbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hwnd, (HMENU)12, GetModuleHandle(NULL), NULL);
        SendMessage(hTbar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);

        TBBUTTON tb[5];
        TBADDBITMAP tBmp;

        tBmp.hInst =  HINST_COMMCTRL;
        tBmp.nID = IDB_STD_SMALL_COLOR;
        SendMessage(hTbar, TB_ADDBITMAP, 0, (LPARAM)&tBmp);
        ZeroMemory(tb, sizeof(tb));

        tb[0].iBitmap = STD_FILEOPEN;
        tb[0].fsState = TBSTATE_ENABLED;
        tb[0].fsStyle = TBSTYLE_BUTTON;

        SendMessage(hTbar, TB_ADDBUTTONS, sizeof(tb)/sizeof(TBBUTTON), (LPARAM)&tb);

Я использую Windows 7 и Win32 C ++ API. Спасибо.

1 Ответ

0 голосов
/ 07 октября 2011

Фон, вероятно, исходит из родительского окна.Чтобы бесплатно получить эффект градиента фона в визуальном стиле, поместите панель инструментов внутри арматуры и используйте стили панели инструментов TBSTYLE_FLAT и TBSTYLE_TRANSPARENT.

...