No to trzeba było od razu napisać że raczkujesz.
Button jest jedną z najstarszych kontrolek, zawsze jest dostępny bez extra bibliotek. Problem w tym, że jego domyślna implementacja jest stara, bez styli.
Button ma swoją implementację w bibliotece comctl32.dll, która sobie siedzi w /system32. Gdy Twój program używa jakiejś funkcji która pośrednio lub bezpśrednio odwołuje się do comctl32.dll, system ładuje comctl32.dll z domyślnej lokalizacji, czyli z /system32 (nie ma styli).
Wizualne style są zaimplementowane w comctl32.dll w wersji (6). Biblioteka ta siedzi sobie głęboko zakopana w /WinSxS. Jest tam ich nawet kilka, w różnych wersjach.
Stosując trik z manifestem dajesz systemowi do zrozumienia, że nie chcesz domyślnej wersji danej biblioteki (z /system32) tylko chcesz wersję 6.0 lub inną. Bezpośrednio przed uruchomieniem programu system sprawdza najpierw czy jest plik manifestu, potem ewentualnie szuka manifestu w zasobach programu, jeżeli nie znalazł pliku. Jeśli już znajdzie manifest i odczyta z niego że sprecyzowałeś wersję 6.0 dla comctl32, oraz gdy jeszcze znajdzie bezpośrednią referencję z programu do taj bibtioteki (InitCommonControls) to przydzieli Ci tą wersję której oczekujesz, zamiast domyślnej. Dopiero wtedy kontrolka będzie miała odpowiednie style.