av-school in Russia →   
Logowanie
Nazwa:
Hasło:
Statystyki
Ilość postów: 6333
Użytkowników: 10824
Gości: 19

Ostatnio dołączył:
harryhbhernandez

Najwięcej postów:
kristoff

Online:
brak zalogowanych użytkowników
Artykuły
Visual Basic W stylu WindowsXP
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:
Listing :
 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="X86"
    name="WinXPStyle"
    type="win32"
/>
<description>WindowsXP Style</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="X86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>
 


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 :
 
Public Type SINITCOMMONCONTROLSEX
   dwSize  As Long  ' - Rozmiar struktury
   dwICC   As Long  ' - Jakie klasy załadować
End Type
Public Declare Function InitCommonControlsEx Lib "comctl32.dll" (lpInitCtrls As SINITCOMMONCONTROLSEX) As Boolean
Public Const ICC_USEREX_CLASSES = &H200 ' - Potrzebna nam klasa
Option Explicit
 


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 :
 
Public Sub InitXPStyle()
Dim InitCtrls As SINITCOMMONCONTROLSEX
   On Error Resume Next
   With InitCtrls
       .dwSize = LenB(InitCtrls)
       .dwICC  = ICC_USEREX_CLASSES
   End With
   InitCommonControlsEx InitCtrls
End Sub
 


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
End Sub
 


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.


TEKST +   TEKST -  
Komentarze (0)
Brak komentarzy
Dodaj komentarz
Aby dodać komentarz musisz być zalogowany.
Patronat
Partnerzy
Wydarzenia
Ostatnio
Electronic Games Party 2012
Dzisiaj
Brak
Najbliższe
Brak
Statystyki zagrożeń
TOP 10 złośliwych
programów tygodnia

1. Malicious URL
2. Script.Iframer Troj
3. Win32.Generic Troj
4. Script.Generic Troj
5. Script.Generic Exp
6. Shopper.il AdW
7. Script.Generic TrD
8. Eorezo.heur AdW
9. Popupper.aw Troj
10. Shopper.jq AdW

Żródło: KSN
Imieniny
Czy wiesz, że...
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...
Z galerii...
Letni obóz AV-School 2009

Polecamy artykuł
Pomoc techniczna - nie zawsze warto z niej korzystać
     Główna            Kontakt           O projekcie
Copyright © 2012 Kaspersky Lab