Artykuł opisuje metodę wykorzystywania stylu XP w aplikacjach w Visual Basic 6.0, zarówno w gotowym programie, jak i podczas jego tworzenia w IDE.
Niestety, VB domyślnie nie obsługuje stylu XP. Tym niedopatrzeniem zajmiemy się dzisiaj.
W celu demonstracji konieczności korzystania z nowego stylu Windows XP posłużymy się plikiem manifestu "nazwa_programu.manifest".
Jego zawartość wygląda następująco:
Aby zastosować styl XP w programie, niekiedy wystarczy umieścić plik manifestu w jednym folderze z plikiem wykonawczym. Jeśli jednak program wykorzystuje Common Controls, to pliki te powinny być zgodne zainicjowanym. W przeciwnym razie program nie uruchomi się.
Przejdźmy do realizacji powołania stylu XP.
Inicjacja stylu elementów zarządzania powinna odbywać się do momentu ich załadowania, czyli do ukształtowania formularza. Wykonania programu nie zaczynamy od Form_Load, ale od Sub Main w module. Po zainicjowaniu możemy załadować formularz.
Tworzymy nowy moduł, w którym będzie wszytko to, co niezbędne dla "włączenia" stylu. W dalszej perspektywie moduł będzie można wykorzystywać w innych programach.
W celu inicjacji Common Controls, wykorzystujemy funkcję InitCommonControlsEX, która jako jedyny parametr przyjmuje strukturę SINITCOMMONCONTROLSEX. Pozwala ona zachować 2 pola: rozmiar struktury i jakie klasy powinny być zainicjowane.
Listing :
PublicType SINITCOMMONCONTROLSEX
dwSize AsLong' - Rozmiar struktury
dwICC AsLong' - Jakie klasy załadować EndType PublicDeclareFunction InitCommonControlsEx Lib "comctl32.dll" (lpInitCtrls As SINITCOMMONCONTROLSEX)AsBoolean PublicConst ICC_USEREX_CLASSES = &H200 ' - Potrzebna nam klasa OptionExplicit
W zasadzie, to wszystko czego nam potrzeba.
W razie potrzeby stałej innych klas można znaleźć MSDN. Potrzebujemy tylko ICC_USEREX_CLASSES.
Funkcja, wyzwalająca inicjację Common Controls:
Listing :
PublicSub InitXPStyle() Dim InitCtrls As SINITCOMMONCONTROLSEX OnErrorResumeNext With InitCtrls
.dwSize = LenB(InitCtrls)
.dwICC = ICC_USEREX_CLASSES EndWith
InitCommonControlsEx InitCtrls EndSub
Jak widać, jest to zwykła "okładka" na InitCommonControlsEx.
Teraz, przechodząc do formularza, wrzucimy do niego różne elementy kontrolne, a w procedurze Sub Main napiszemy kod:
Listing:
Sub Main()
InitXPStyle ' - Inicjujemy styl WindowsXP
frmMain.Show' - Ładujemy formularz EndSub
W momencie uruchomienia, w IDE styl elementów kontrolnych pozostał taki sam, ponieważ elementy zostały już zainicjowane IDE i rezultat wywołania InitCommonControlsEx nie przyniesie rezultatu.
Skompilujemy teraz program. Nazwijmy go "XPStyle.exe".
Uruchamiamy.
Nic się nie zmieniło? Wszystko na swoim miejscu. Bez względu na wywołanie InitCommonControlsEx, typ elementów kontrolnych pozostał taki sam.
Rzecz w tym, że potrzebny nam jest plik manifestu.
Tworzymy plik z nazwą"XPStyle.exe.manifest", zawartość którego przedstawiona jest na początku artykułu, i umieszczamy go w folderze z XPStyle.exe.
Uruchamiamy.
Elementy kontrolne przybrały styl Windows XP!
Jeśli nie chcemy ciągnąć ze sobą pliku manifestu, a chcemy aby wszystko znajdowało się w jednym pliku, to niezbędne jest dodanie manifestu w zasoby przy użyciu dowolnego edytora zasobów.
Typ zasobu - 24. Nazwa - 1. Język dowolny, np. 1045 (polski)
Nawiasem mówiąc, jeśli zmieściliśmy w formularzu element Frame, i wrzuciliśmy tam CommandButton lub Option, powinniśmy zauważyć, że wokół przycisku pojawiło się ciemne obramowanie, a Option może być w ogóle niewidoczny lub przybrać kształt czarnego prostokąta.
To zwykły bug.
Usunąć go jest stosunkowo łatwo. Wszystkie "kłopotliwe" elementy nie od razu umieszczamy w Frame, ale w PictureBox, który może się w nim zmieścić.
Aby PictureBox był niewidoczny, możemy wyłączyć jego granice. Tak, jak na obrazku poniżej.
Po lewej stronie Frame CommnadButton i Option znajdują się bezpośrednio w Frame, po prawej - w PictureBox.
Granice PictureBox są podświetlone.
Poznaliśmy już zasadę działania stylu XP w programach.
Dobrze było by jednak mieć możliwość korzystania z nowego stylu w czasie pracy nad aplikacjami w IDE.
W folderze z Visual Basic, tam gdzie znajduje się VB6.exe, umieszczamy plik vb6.exe.manifest ze znaną nam już zawartością i uruchamiamy IDE.
Również i tutaj nowy styl został powołany do życia.
Mam nadzieję, że artykuł pomógł Twojemu interfejsowi nabrać bardziej współczesnego wyglądu.
BIOS - Termin BIOS [Basic Input-Output System] odnosi się do instrukcji zawartych w jednym z chipów w komputerze PC. Wykorzystywany jest przez system operacyjny w celu uzyskania dostępu do sprzętu komput...