Como habilitar a aparência moderna da barra de ferramentas para o aplicativo Win32?

Recentemente, comecei a aprender programação de GUI baseada na API do Win32. Quando adiciono controle de barra de ferramentascomctl32.lib) para o meu aplicativo simples eu acho que parece plana, enquanto a barra de menu tem mais "Windows 7 amigável" 3D olhar e sentir (brilho branco no topo e gradiente cinza vertical de cima para baixo). A diferença faz com que pareça com fio.

No entanto, acho que muitos outros aplicativos têm aparência consistente para a barra de menus e a barra de ferramentas. Por exemplo.Notepad ++ eBloco de notas 2.

Eu li alguns documentos oficiais e tentei a solução, comoVisão geral de estilos visuais, Ativando Estilos Visuais, no entanto, só ativa o estilo de botão plano (comparado ao antigo estilo de botão sólido Win98). Não fez diferença com o estilo que obtive na primeira foto.

Eu tentei ler o código fonte do Notepad ++. EncontradoToolBar.cpp e fiz algumas alterações no meu código de acordo, mas nada mudou. Eu acho que estava perdido na base de código.

Aqui está o meu código de chamadaInitCommonControlsEx e criação da ToolBar.

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

Assim,A questão é: Apesar dos bitmaps dos botões, como posso obter a aparência 3D da barra de ferramentas, assim como o exemplo Notepad ++ / Notepad2?

Desde já, obrigado.

questionAnswers(1)

yourAnswerToTheQuestion