Как включить современный внешний вид панели инструментов для приложения Win32?

Недавно я начал изучать программирование GUI на основе Win32 API. Когда я добавляю панель инструментов управления (изcomctl32.lib) в моем простом приложении я нахожу, что оно выглядит плоским, в то время как строка меню имеет более «дружественный к Windows 7» 3D вид (белое свечение сверху и вертикальный серый градиент сверху вниз). Разница делает это выглядит проводным.

Тем не менее, я считаю, что многие другие приложения имеют одинаковый внешний вид и для панели меню, и для панели инструментов. Например.Notepad ++ а такжеБлокнот 2.

Я прочитал некоторые официальные документы и попробовал решение, такое какОбзор визуальных стилей, Включение визуальных стилейоднако он включает только стиль плоских кнопок (по сравнению со старым стилем кнопок в Win98). Это не имело никакого значения со стилем, который я получил в первой картине.

Я попытался прочитать исходный код Notepad ++. Нашелtoolbar.cpp и сделал некоторые изменения в моем коде, соответственно, но ничего не изменилось. Я думаю, что я был потерян в кодовой базе.

Вот мой код звонкаInitCommonControlsEx и создание панели инструментов.

// in WinMain
INITCOMMONCONTROLSEX icce;
icce.dwSize = sizeof(INITCOMMONCONTROLSEX);
icce.dwICC = ICC_BAR_CLASSES | ICC_COOL_CLASSES | ICC_USEREX_CLASSES;
InitCommonControlsEx(&icce);

// called in WM_CREATE handler, hwnd is the handle of the main window
VOID BuildToolBar(HWND hwnd)
{
    HWND hTool;
    TBBUTTON tbb[3];
    TBADDBITMAP tbab;

    hTool = CreateWindowEx(0, TOOLBARCLASSNAME, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | TBSTYLE_TOOLTIPS |TBSTYLE_FLAT | CCS_TOP | BTNS_AUTOSIZE, 0, 0, 0, 0, hwnd, (HMENU)IDC_MAIN_TOOL, GetModuleHandle(NULL), NULL);
    SendMessage(hTool, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
    SendMessage(hTool, TB_SETEXTENDEDSTYLE, 0, (LPARAM)TBSTYLE_EX_HIDECLIPPEDBUTTONS);

    tbab.hInst = HINST_COMMCTRL;
    tbab.nID = IDB_STD_SMALL_COLOR;
    SendMessage(hTool, TB_ADDBITMAP, 0, (LPARAM)&tbab);

    ZeroMemory(tbb, sizeof(tbb));
    tbb[0].iBitmap = STD_FILENEW;
    tbb[0].fsState = TBSTATE_ENABLED;
    tbb[0].fsStyle = TBSTYLE_BUTTON;
    tbb[0].idCommand = ID_FILE_NEW;

    tbb[1].iBitmap = STD_FILEOPEN;
    tbb[1].fsState = TBSTATE_ENABLED;
    tbb[1].fsStyle = TBSTYLE_BUTTON;
    tbb[1].idCommand = ID_FILE_OPEN;

    tbb[2].iBitmap = STD_FILESAVE;
    tbb[2].fsState = TBSTATE_ENABLED;
    tbb[2].fsStyle = TBSTYLE_BUTTON;
    tbb[2].idCommand = ID_FILE_SAVEAS;

    SendMessage(hTool, TB_SETBUTTONSIZE, (WPARAM)0, (LPARAM)MAKELONG(16, 16));
    SendMessage(hTool, TB_ADDBUTTONS, sizeof(tbb) / sizeof(TBBUTTON), (LPARAM)&tbb);
    SendMessage(hTool, TB_AUTOSIZE, 0, 0);
}

Так,Вопрос в том: Несмотря на растровое изображение кнопок, как я могу получить 3D-вид панели инструментов, как в примере Notepad ++ / Notepad2?

Заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос