Autor Wątek: Tło aplikacja jak w IE6  (Przeczytany 1493 razy)

Offline t4fun

  • Użytkownik

# Wrzesień 15, 2010, 16:29:56
Jak w WinAPI zrobić tło aplikacji oraz menu w stylu IE6, tzn z gradientem od lewej do prawej? Kilka programów ma takie tło np Firefox, TotalCommander.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Karol

  • Użytkownik

# Wrzesień 15, 2010, 17:37:33


Chodzi Ci o ten gradient pod Plik, Edycja, Podgląd, Opcje? Nie wiem jak w IE6, ale w TC to jedyny gradient u mnie. Jeżeli o to chodzi to po prostu dodaj manifest. Co do tła aplikacji to po prostu narysuj gradient.
« Ostatnia zmiana: Wrzesień 15, 2010, 17:46:59 wysłana przez Karol »

Offline t4fun

  • Użytkownik

# Wrzesień 15, 2010, 19:54:32
Nie, chodzi a taki poziomy gradient:


Uploaded with ImageShack.us

Manifest mam, buttony i inne kontrolki mają prawidłowy wygląd, nie wiem tylko jak ustawić te tła menu i samej aplikacji

Offline Karol

  • Użytkownik

# Wrzesień 16, 2010, 00:54:45
No to nie wiem, wydaje mi się, że to jakaś rozszerzona kontrolka, albo Fx samo rysuje gradient pobierając kolory systemowe.

Offline t4fun

  • Użytkownik

# Wrzesień 16, 2010, 01:12:29
Wiele aplikacji ma takie tło, na pewno same go nie rysują. Wiem że sie pojawiło z IE6 i nowymi kontrolkami CommonControls 6.0. Aplikacje pisane w Delphi bez problemów mogły mieć takie tło. Kilka lat temu widziałem na msdn artykuł jak to zrobić, ale teraz nie potrafię tego znaleźć. W ostateczności pobiorę kod Firefoxa i spróbuje to ze źródeł wyczytać.

Offline ConayR

  • Użytkownik

# Wrzesień 16, 2010, 01:49:41
Fx używa XUL do całego UI, nie renderuje standardowych kontrolek.

Offline t4fun

  • Użytkownik

# Wrzesień 16, 2010, 09:17:34
Ale gdzieś tam pod spodem muszą być wywołania systemowe. Pod Windowsem WinAPI, pod Linuksem GTK+. Ale fakt przebicie się przez kod Firefoxa może być zbyt trudnym zadaniem.

Offline ConayR

  • Użytkownik

# Wrzesień 16, 2010, 15:30:24
Ale gdzieś tam pod spodem muszą być wywołania systemowe.
Tak, BitBlt.

Offline Karol

  • Użytkownik

# Wrzesień 16, 2010, 18:15:45
Aplikacje pisane w Delphi bez problemów mogły mieć takie tło.
W życiu w Delphi w kontrolkach takiego tła nie widziałem, a przynajmniej jeżeli chodzi o standardowe kontrolki, bo jest tona upiększonych, których nie używam. Poza tym jest OwnerDraw i można całkowicie odmienić sposób rysowania kontrolki.

Offline t4fun

  • Użytkownik

# Wrzesień 16, 2010, 21:29:28
Zrobiłem, w odpowiedzi na komunikat WM_ERASEBKGND:
Kod: (c++) [Zaznacz]
HTHEME hTheme = NULL;
hTheme = OpenThemeData(hWnd, L"Rebar");
if (hTheme) {
    RECT rc = {0, -GetSystemMetrics(SM_CYMENU), w, h};
    DrawThemeBackground(hTheme, (HDC) wParam, -1, 0, &rc, 0);
    CloseThemeData(hTheme);
}
return 1;
Ale z powodu że tło nie jest jednolite, pojawiły się problemu z innymi kontrolkami, w sumie dla każdej z nich musiałbym przepisać procedury rysowania, więc olewam to.