Jak włączyć nowoczesny wygląd paska narzędzi dla aplikacji Win32?

Ostatnio zacząłem uczyć się programowania GUI w oparciu o Win32 API. Po dodaniu kontroli paska narzędzi (zcomctl32.lib) do mojej prostej aplikacji wydaje mi się, że wygląda płasko, podczas gdy pasek menu ma bardziej trójwymiarowy wygląd i styl „przyjazny dla Windows 7” (biały blask na górze i pionowy szary gradient od góry do dołu). Różnica sprawia, że ​​wygląda na okablowaną.

Jednak uważam, że wiele innych aplikacji ma spójny wygląd zarówno dla paska menu, jak i paska narzędzi. Na przykład.Notatnik ++ iNotatnik 2.

Przeczytałem kilka oficjalnych dokumentów i wypróbowałem rozwiązanie, takie jakPrzegląd stylów wizualnych, Włączanie stylów wizualnychjednak włącza tylko styl płaskiego przycisku (w porównaniu ze starym stylem przycisku pełnego Win98). Nie różniło się to od stylu na pierwszym zdjęciu.

Próbowałem odczytać kod źródłowy Notepad ++. UznanyToolBar.cpp i wprowadziłem odpowiednie zmiany do mojego kodu, ale nic się nie zmieniło. Myślę, że zgubiłem się w bazie kodu.

Oto mój kod dzwonieniaInitCommonControlsEx i tworzenie paska narzędzi.

// 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);
}

Więc,Pytanie brzmi: Pomimo map bitowych przycisków, jak mogę uzyskać trójwymiarowy wygląd paska narzędzi, tak jak przykład Notepad ++ / Notepad2?

Z góry dziękuję.

questionAnswers(1)

yourAnswerToTheQuestion