Powłoka Windows (Windows Shell)

Podobne dokumenty
Menu Plik w Edytorze symboli i Edytorze widoku aparatów

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

PROBLEMY TECHNICZNE. Co zrobić, gdy natrafię na problemy związane z użytkowaniem programu DYSONANS

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Wprowadzenie do biblioteki klas C++

Rozdział 2. Konfiguracja środowiska pracy uŝytkownika

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy


Samsung Universal Print Driver Podręcznik użytkownika

Ustawienia personalne

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.1

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Rejestr systemowy

Nr: 15. Tytuł: Kancelaris w systemie Windows 8 i Windows 8.1. Data modyfikacji:

O środowisku Windows. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Instrukcja obsługi notowań koszykowych w M@klerPlus

Ćwiczenia z systemu operacyjnego WINDOWS

Programowanie obiektowe

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Microsoft Visual C : praktyczne przykłady / Mariusz Owczarek. Gliwice, cop Spis treści

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

Podstawy technologii cyfrowej i komputerów

PORADNIK KORZYSTANIA Z SERWERA FTP ftp.architekturaibiznes.com.pl

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

Praca w środowisku Visual Studio 2008, Visual C

Kontrolka ActiveX Internet Explorer w aplikacji wizualizacyjnej InTouch

O środowisku Windows. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Dlaczego stosujemy edytory tekstu?

2. W oknie dialogowym Choose Toolbox Items w zakładce.net Framework Components naciskamy przycisk Browse...

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Sztuczki z rejestrem systemu Windows

Instrukcja laboratoryjna cz.3

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

PAMIĘĆ OPERACYJNA...107

Ćwiczenie 6. Wiadomości ogólne.

weblsp Wybór przeglądarki i jej ustawienia Instrukcja ADH-Soft sp. z o.o., ul. 17 Stycznia 74, Warszawa

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

RADIOMETR RUM-2 Nota Aplikacyjna

Ćwiczenie Nr 6 Przegląd pozostałych najważniejszych mechanizmów systemu operacyjnego Windows

Podstawy Rejestru systemu. Poddrzewa

Jak przeglądać publikacje w formacie DjVu?

Programowanie obiektowe zastosowanie języka Java SE

Korzystanie z edytora zasad grupy do zarządzania zasadami komputera lokalnego w systemie Windows XP

WPROWADZENIE DO JĘZYKA JAVA

Szkolenie dla nauczycieli SP10 w DG Operacje na plikach i folderach, obsługa edytora tekstu ABC. komputera dla nauczyciela. Materiały pomocnicze

Dział Dopuszczający Dostateczny Dobry Bardzo dobry Celujący

Expo Composer Garncarska Szczecin tel.: info@doittechnology.pl. Dokumentacja użytkownika

windows XP n a j l e p s z e t r i k i

7 Business Ship Control dla Systemu Zarządzania Forte

Podstawy WINDOWS 9x, 2000, XP

Tablet bezprzewodowy QIT30. Oprogramowanie Macro Key Manager

QUICKSTORE PORTABLE PRO USB3.0

Zaawansowane aplikacje internetowe - laboratorium

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Klawiatura. Klawisze specjalne. Klawisze specjalne. klawisze funkcyjne. Klawisze. klawisze numeryczne. sterowania kursorem. klawisze alfanumeryczne

Programowanie na poziomie sprzętu. Programowanie w Windows API

Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.1

Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Microsoft.NET: LINQ to SQL, ASP.NET AJAX

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Microsoft Visual SourceSafe uproszczona instrukcja użytkowania

Viatoll Calc v1.3. Viatoll Calc. Instrukcja użytkownika. Strona 1

Tworzenie i wykorzystanie usług sieciowych

Kancelaria Prawna.WEB - POMOC

Galileo v10 pierwszy program

Układy VLSI Bramki 1.0

Temat: Kopiowanie katalogów (folderów) i plików pomiędzy oknami

Programowanie Obiektowe GUI

Systemy operacyjne i sieci komputerowe Szymon Wilk Konsola MMC 1

ROZDZIAŁ I. BUDOWA I FUNKCJONOWANIE KOMPUTERA PC

Zaawansowane aplikacje WWW - laboratorium

SERWER AKTUALIZACJI UpServ

7 Business Ship Control dla Symfonia Handel

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

Programowanie w środowisku graficznym GUI

xmlns:prism= c. <ContentControl prism:regionmanager.regionname="mainregion" />

HP Workspace. Instrukcja obsługi

Programowanie obiektowe

Instrukcja obsługi przełącznika KVM ATEN CS661. Opis urządzenia. Instalacja urządzenia

Dokumentacja instalatora środowiska obsługi kart mikroprocesorowych w wersji Spis treści

Spis treści. Rozdział 3. Podstawowe operacje na plikach...49 System plików Konsola Zapisanie rezultatu do pliku... 50

SERWER AKTUALIZACJI UpServ

Pracownia internetowa w szkole ZASTOSOWANIA

Włączanie/wyłączanie paska menu

Geneza rejestru systemu Windows

Multimedia JAVA. Historia

KATEGORIA OBSZAR WIEDZY NR ZADANIA Podstawowe informacje i czynności

Księgarnia PWN: Andrzej Jaskulski - AutoCAD 2010/LT Podstawy projektowania parametrycznego i nieparametrycznego


Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

VComNet Podręcznik użytkownika. VComNet. Podręcznik użytkownika Wstęp

Instrukcja krok po kroku Konfiguracja Windows. Strona 2 z 14

Ćwiczenie 1. Przygotowanie środowiska JAVA

1. Od czego zacząć? - Instalacja środowiska pracy

Ćwiczenie Nr 7 ZARZĄDZANIE SYSTEMEM WINDOWS. cz. I Panel sterowania i pulpit. Zespół Szkół Technicznych w Suwałkach. Pracownia Systemów Komputerowych

Instrukcja instalacji oraz konfiguracji sterowników. MaxiEcu 2.0

Transkrypt:

Wykład 13-1 Powłoka Windows (Windows Shell) Hierarchiczna przestrzeń nazw obiektów wykonujących operacje na plikach i folderach Wybrane możliwości: uruchamianie aplikacji drag & drop definicja rozszerzenia plików, powiązanie plików z aplikacją modyfikacja ikon plików modyfikacja wyglądu folderu automatyczne uruchamianie aplikacji z CD-ROM tworzenie skrótów użycie paska zadań (taskbar) i pasków narzędzi na pulpicie użycie Active Desktop aplikacje panelu sterowania

Wykład 13-2 Wersje bibliotek Wykorzystywane biblioteki: Comctl32.dll, Shell32.dll, Shlwapi.dll różna zawartość w zależności od wersji zawarte w instalacjach Windows i Internet Explorer a wersję każdej biblioteki trzeba sprawdzać oddzielnie hinstdll = LoadLibrary(lpszDllName); if (hinstdll) { DLLGETVERSIONPROC pgv = NULL; pgv = (DLLGETVERSIONPROC) GetProcAddress(hinstDll,"DllGetVersion"); if (pgv) { DLLVERSIONINFO dvi; ZeroMemory(&dvi, sizeof(dvi)); (*pgv)(&dvi); } FreeLibrary(hinstDll); }

Wykład 13-3 Przestrzeń nazw powłoki Organizacja wszystkich obiektów zarządzanych przez powłokę w jedną hierarchię drzewiastą m.in.: pliki i foldery, drukarki, komputery połączone siecią, aplikacje panelu sterowania, śmietniczka elementy hierarchii: - pulpit - pień - foldery - węzły drzewa (foldery systemowe lub wirtualne) - pliki - liście drzewa (pliki dyskowe) Identyfikacja obiektów pełna ścieżka do pliku - brak dla obiektów wirtualnych identyfikator (item ID) - struktura SHITEMID lista identyfikatorów - struktura ITEMIDLIST PIDL - wskaźnik na ITEMIDLIST względne i bezwzględne (rozpoczynające się od pulpitu)

Foldery Interfejs IMalloc - alokacja pamięci dla PIDL SHGetMalloc() IMalloc::Alloc(), IMalloc::Free() Foldery specjalne - identyfikowane stałymi CSIDL Interfejs IShellFolder - informacje o folderze zawartość, nazwa, właściwości Funkcje: Wykład 13-4 SHBrowseForFolder() - okno dialogowe z wyborem foldera SHGetPathFromIDList() - pobranie ścieżki dla PIDL SHGetFolderLocation() - PIDL specjalnego foldera SHGetFolderPath() - pobranie ścieżki specjalnego foldera SHGetFileInfo() - informacje o pliku podanym przez PIDL SHBindToParent() - pobranie PIDL rodzica obiektu

Przykład - SHBrowseForFolder() LPITEMIDLIST pidlroot = NULL, pidl = NULL; BROWSEINFO bi = {0}; LPMALLOC pmalloc = NULL; Wykład 13-5 SHGetMalloc(&pMalloc); SHGetFolderLocation(hWnd, CSIDL_PROGRAM_FILES, NULL, NULL, &pidlroot); bi.hwndowner = hwnd; bi.pidlroot = pidlroot; bi.pszdisplayname = buf; bi.lpsztitle = "Choose a folder"; if ((pidl = SHBrowseForFolder(&bi))!= NULL) { SHGetPathFromIDList(pidl, buf); pmalloc->free(pidl); } pmalloc->free(pidlroot); pmalloc->release();

Wykład 13-6 Uruchamianie aplikacji ShellExecute(), ShellExecuteEx() plik lub folder do uruchomienia operacja (polecenie) Operacje najczęściej wykorzystywane: - edit - uruchomienie edytora i otwarcie dokumentu - find - szukanie począwszy od wskazanego katalogu - open - uruchomienie aplikacji - print - wydrukowanie dokumentu - properties - wyświetlenie właściwości zdefiniowane dla obiektu w rejestrze HKEY_CLASSES_ROOT\CLSID\{object_clsid}\Shell\operacja ShellExecute(hwnd, "find", "C:\\Program Files", NULL, NULL, 0);

Wykład 13-7 System plików Cechy specjalne: połączenia między dokumentami (np. plikami używanymi ze strony HTML) ograniczenia dostępu pomiędzy użytkownikami lista ostatnio używanych dokumentów Operacje na plikach - SHFileOperation() kopiowanie, przenoszenie, usuwanie, zmiana nazwy Powiadomienie o zmianach - SHChangeNotify() Dodanie dokumentu do listy ostatnio używanych - SHAddToRecentDocs() Dostęp do katalogów użytkownika: CSIDL_MYDOCUMENTS SHGetFolderLocation(NULL, CSIDL_MYDOCUMENTS, NULL, 0, &pidldocfiles);

Przenoszenie danych Przenoszone dane obiekty implementujące interfejs IDataObject Schowek Wykład 13-8 umieszczenie danych OleSetClipboard() (dane jako obiekt implementujący IDataObject) pobranie danych ze schowka - OleGetClipboard() dostęp do danych - IDataObject::GetData() Drag & drop inicjalizacja - OleInitialize() źródło przenoszonych danych - IDropSource cel przenoszonych danych - IDropTarget

Wykład 13-9 HKEY_CLASSES_ROOT.zip (Default)=WinZip ContentType=application/x-zip-compressed PersistentHandler (Default)={098f2470-bae0-11cd-b579-08002b30bfeb} ShellEx {00021500-0000-0000-c000-000000000046}= {E0D79307-84BE-11CE-9641-444553540000} ShellNew NullFile CLSID {E0D79306-84BE-11CE-9641-444553540000} (Default)=WinZip InProcServer32 (Default)=C:\PROGRA~1\WinZip\WZSHLSTB.DLL ThreadingModel=Apartment WinZip DefaultIcon (Default)=C:\PROGRA~1\WinZip\winzip32.exe,0 shell open (Default)=Open with &WinZip command (Default)=C:\PROGRA~1\WinZip\winzip32.exe "%1" shellex DropHandler (Default)={E0D79306-84BE-11CE-9641-444553540000}

Menu kontekstowe Polecenia Wykład 13-10 standardowe: open print printto - polecenie niewyświetlane w menu kontekstowym explore - otwiera Windows Explorer find - otwiera Windows Search openas - otwiera Open With properties DDE własne HKEY_CLASSES_ROOT.myp (Default)=MyProgram.1 MyProgram.1 (Default)=My Program Application Shell (Default)=doit doit (Default)=&Do it command (Default)=C:\MP\MP.exe /d "%1"

Skróty Wykład 13-11 Obiekty, do których mogą istnieć skróty: pliki, foldery, dyski, drukarki Obsługa programistyczna - interfejs IShellLink umiejscowienie - SetPath(), GetPath() katalog roboczy - SetWorkingDirectory(), GetWorkingDirectory() parametry - SetArguments(), GetArguments() parametr funkcji ShowWindow - SetShowCmd(), GetShowCmd() ikona - SetIconLocation(), GetIconLocation() opis - SetDescription(), GetDescription() hot key - SetHotKey(), GetHotKey() identyfikator - SetIDList(), GetIDList()

Wykład 13-12 Tworzenie skrótu HRESULT CreateLink(LPCSTR lpszpathobj, LPCSTR lpszpathlink, LPCSTR lpszdesc) { HRESULT hres; IShellLink* psl; hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl); if (SUCCEEDED(hres)) { IPersistFile* ppf; psl->setpath(lpszpathobj); psl->setdescription(lpszdesc); hres = psl->queryinterface( &IID_IPersistFile, (LPVOID*)&ppf); if (SUCCEEDED(hres)) { WCHAR wsz[max_path]; MultiByteToWideChar(CP_ACP, 0, lpszpathlink, -1, wsz, MAX_PATH); hres = ppf->save(wsz, TRUE); ppf->release(); } psl->release(); } return hres;

Wykład 13-13 Pasek zadań (taskbar) Menu start (start menu) dodawanie przed NT 4.0 i 95 - wykorzystać DDE dodawanie od NT 4.0 i 95 - wykorzystać IShellLink i SHGetSpecialFolderLocation() z CSIDL_PROGRAMS Quick Launch, Address, Links, Desktop toolbars możliwość tworzenia własnych pasków Taskbar buttons okna bez rodzica ze stylem WS_EX_APPWINDOW FlashWindow() - zamruganie Status area (taskbar notification area, tray) ikony symbolizujące stan lub zdarzenie Shell_NotifyIcon() - dodawanie, modyfikacja, usuwanie powiadomienia o akcjach myszy nad ikoną (lewy, prawy przycisk, dwuklik, ruch)

Application Desktop Toolbar Cechy: możliwość doczepienia do brzegu ekranu zwykle zawiera przyciski uruchamiające akcje poza obszarem dostępnym dla okien aplikacji Obsługa: SHAppBarMessage() ABM_NEW, ABM_REMOVE, ABM_SETPOS, ABM_SETAUTOHIDEBAR, ABM_ACTIVATE ABM_QUERYPOS, ABM_WINDOWPOSCHANGED powiadomienia ABN_POSCHANGED, ABN_STATECHANGED, ABN_FULLSCREENAPP, ABN_WINDOWARRANGE Wykład 13-14

Wykład 13-15 Automatyczne uzupełnianie Automatyczne podpowiadanie zakończenia tekstu wpisywanego w kontrolce edycyjnej (edit control, ComboBoxEx) SHAutoComplete() - wykorzystanie mechanizmu dla podanej kontrolki edycyjnej Ręczne wykorzystanie - interfejs IAutoComplete możliwość korzystania z jednego lub z wielu źródeł podpowiedzi: historia, lista ostatnio używanych, przestrzeń nazw powłoki dwa tryby pracy autoappend - dopisanie podpowiedzi do tekstu jako zaznaczonego fragmentu autosuggest - rozwijalna lista z podpowiedziami

Własne paski Explorer Bar dokowalny pasek w przeglądarce dopisany do menu View / Explorer Bar do stworzenia konieczne jest zaimplementowanie i zarejestrowanie obiektu band Tool Band kontrolka rebar zawierająca kilka kontrolek toolbar wykorzystywana w Internet Explorer ze Desk Band Wykład 13-16 dokowalne okna na pulpicie (dostępne z menu kontekstowego dla paska zadań) Obsługa programistyczna - IDeskBand wpis w rejestrze HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Internet Explorer \ Toolbar

Wykład 13-17 Active Desktop Umieszczenie dokumentów HTML i ich zawartości (m.in. kontrolki ActiveX, aplety Javy, animacje Flash) na pulpicie Obsługa programistyczna - interfejs IActiveDesktop tworzenie - CoCreateInstance() dla CLSID_IActiveDesktop dodawanie elementu - AddDesktopItem(), AddDesktopItemWithUI(), AddUrl() wyliczenie elementów - GetDesktopItemCount(), GetDesktopItem() tapeta GetWallpaper(), SetWallpaper(), GetWallpaperOptions(), SetWallpaperOptions()

Wykład 13-18 Active Desktop przykład w C++ #include "wininet.h" #include "shlobj.h" CoInitialize(NULL); HRESULT hr; IActiveDesktop *pactivedesktop; hr = CoCreateInstance(CLSID_ActiveDesktop, NULL, CLSCTX_INPROC_SERVER, IID_IActiveDesktop, (void**)&pactivedesktop); pactivedesktop->setwallpaper( L"C:\\MyWallPaper.gif", 0); pactivedesktop->applychanges(ad_apply_all); pactivedesktop->release();

Wykład 13-19 Active Desktop przykład w C# [ComImport(), Guid("F490EB00-1240-11D1-9888-006097DEACF9"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] interface IActiveDesktop { void ApplyChanges(AD_APPLY dwflags); void SetWallpaper([MarshalAs(UnmanagedType.LPWStr)] string pwszwallpaper, int dwreserved); //... } [ComImport(), Guid("75048700-EF1F-11D0-9888-006097DEACF9")] class ActiveDesktop /* : IActiveDesktop */ {} IActiveDesktop ad = (IActiveDesktop)new ActiveDesktop(); ad.setwallpaper(@"c:\mywallpaper.gif", 0); ad.applychanges(ad_apply.all);

Wykład 13-20 Windows Themes Wprowadzone w Microsoft Plus! dla Windows 95 Określone w plikach.themes prosty format tekstowy, podobny do plików.ini mogą być tworzone i rozpowszechniane niezależnie od systemu widoczne w oknie ustawień wyświetlania Mogą zmodyfikować tapetę, kursory, fonty, dźwięki i ikony

Wykład 13-21 Style wizualne (Visual Styles) Wprowadzone w Windows XP Definiują wygląd kontrolek UxTheme API umożliwia użycie stylu w aplikacji w przypadku potrzeby ręcznego rysowania Stosowane są do: obszarów non-client okien common controls

Wykład 13-22 ComCtl32.dll i UxTheme.lib ComCtl32.dll włączone do Windows XP w wersji 5 (dla kompatybilności) i 6 (dla nowych stylów) w wersji 6 dołączone są nowe kontrolki do zastosowania stylów w aplikacji konieczne jest użycie manifestu UxTheme.lib biblioteka rysująca kontrolki, pozwalająca na oddzielenie elementów wizualnych od funkcjonalności kontrolek używana przez common controls wymagana przez ComCtl32.dll

Manifest Wykład 13-23 Plik XML dodawany jako zasób lub jako zewnętrzny plik w katalogu aplikacji MANIFEST_ID RT_MANIFEST "YourApp.exe.manifest" <?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="companyname.productname.yourapp" type="win32" /> <description>your application description here.</description> <dependency> <dependentassembly> <assemblyidentity type="win32" name="microsoft.windows.common-controls" version="6.0.0.0" processorarchitecture="x86" publickeytoken="6595b64144ccf1df" language="*" /> </dependentassembly> </dependency> </assembly>

Wykład 13-24 Wskazówki dla stylów wizualnych Pliki manifestów są ignorowane przez poprzednie wersje Windows Nie linkować statycznie biblioteki UxTheme.lib, lecz wczytywać ją dynamicznie Obsługiwać błędy wynikające z innego niż oczekiwane działania stylów Przetestować swoją aplikacji, by mieć pewność, że nie wymaga ComCtl32.dll w wersji 6 jeśli aplikacja wykorzystuje specyficzne cechy tej wersji, należy napisać alternatywny kod dla wcześniejszych systemów nie można zainstalować ComCtl32.dll w wersji 6 w poprzednich wersjach Windows

Użycie UxTheme API HTHEME htheme = OpenThemeData(hwndButton, "Button");... DrawMyControl(hDC, hwndbutton, htheme, istate);... if (htheme) { CloseTheme(hTheme); } Wykład 13-25 void DrawMyControl(HDC hdc, HWND hwndbutton, HTHEME htheme, int istate) {... } if (htheme) { hr = DrawThemeBackground(hTheme, hdc, BP_BUTTON, istate, &rc, 0); hr = GetThemeBackgroundContentRect(hTheme, BP_BUTTON, istate, &rc, &rccontent); hr = DrawThemeText(hTheme, hdc, BP_BUTTON, istate, szbuttontext, cch, DT_CENTER DT_VCENTER DT_SINGLELINE, 0, &rccontent); } else { // Rysowac bez uzycia stylow wizualnych }

Desktop Window Manager [Vista] Desktop Window Manager (DWM) jest nowym komponentem wprowadzonym w Windows Vista DWM pozwala na uzyskania charakterystycznych dla Windows Vista efektów graficznych na oknach, m.in.: glass window frames 3-D window transition animations Windows Flip i Windows Flip3D obsługa wysokich rozdzielczości Wykład 13-26 http://weblogs.asp.net/kennykerr/archive/2006/08/10/windows-vista-for- Developers-_1320_-Part-3-_1320_-The-Desktop-Window-Manager.aspx

Wykład 13-27 Style wizualne w Windows Forms 2.0 Włączenie użycia stylów wizualnych Application.EnableVisualStyles() Kontrolki rysowane bez użycia stylów wizualnych: Label, LinkLabel, DomainUpDown, NumericUpDown, CheckedListBox Znane problemy z kontrolkami: MonthCalendar zaznaczenie zakresu dat TabControl zakładki rysowane na dole lub z boku TextBox surrogate fonts (pary znaków Unicode)

Użycie stylów wizualnych Wykład 13-28 [WinForms] Klasa ControlPaint rysowanie elementów standardowych kontrolek systemowych Uniwersalne klasy, których można użyć niezależnie od ustawień systemowych: ButtonRenderer, CheckBoxRenderer, GroupBoxRenderer, RadioButtonRenderer Klasy, których można użyć wyłącznie przy włączonej obsłudze stylów wizualnych w systemie: ComboBoxRenderer, ProgressBarRenderer, ScrollBarRenderer, TabRenderer, TextBoxRenderer, TrackBarRenderer

Przykład stylów wizualnych Wykład 13-29 [WinForms] protected override void OnPaint(PaintEventArgs e) { base.onpaint(e); } if (!ComboBoxRenderer.IsSupported) { ControlPaint.DrawComboButton(e.Graphics, this.clientrectangle, ButtonState.Normal); } else { ComboBoxRenderer.DrawDropDownButton(e.Graphics, this.clientrectangle, ComboBoxState.Normal); }

Rysowanie elementów Wykład 13-30 [WinForms] private VisualStyleRenderer renderer = null; private readonly VisualStyleElement element = VisualStyleElement.StartPanel.LogOffButtons.Normal; public CustomControl() { if (Application.RenderWithVisualStyles && VisualStyleRenderer.IsElementDefined(element)) { renderer = new VisualStyleRenderer(element); } } protected override void OnPaint(PaintEventArgs e) { if (renderer!= null) { renderer.drawbackground(e.graphics, this.clientrectangle); } else { this.text = "Visual styles are disabled."; TextRenderer.DrawText(e.Graphics, this.text, this.font, new Point(0, 0), this.forecolor); } }

Użycie wybranej kompozycji Wykład 13-31 [WPF] 1. Dodać referencję do odpowiedniego assembly : PresentationFramework.Aero, PresentationFramework.Classic, PresentationFramework.Luna, PresentationFramework.Royale 2. Dodać ResourceDictionary do zasobów aplikacji: <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <!--<ResourceDictionary Source="/PresentationFramework.Royale;component/themes/Royale.NormalColor.xaml" />--> <!--<ResourceDictionary Source="/PresentationFramework.Luna;component/themes/Luna.NormalColor.xaml" />--> <!--<ResourceDictionary Source="/PresentationFramework.Luna;component/themes/Luna.Homestead.xaml" />--> <!--<ResourceDictionary Source="/PresentationFramework.Luna;component/themes/Luna.Metallic.xaml" />--> <ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml" /> <!--<ResourceDictionary Source="/PresentationFramework.Classic;component/themes/Classic.xaml" />--> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources>

Wykład 13-32 Kompozycje Windows dostępne w WPF Luna.NormalColor.xaml Luna.Metallic.xaml Aero.NormalColor.xaml Classic.xaml Luna.Homestead.xaml Royale.NormalColor.xaml

Wykład 13-33 Kompozycje WPF Open source: http://wpf.codeplex.com/wiki/view.aspx?title=wpf%20themes http://www.codeplex.com/wpfthemes Komercyjne: http://www.xamltemplates.net http://www.nukeation.com/reuxables.aspx?id=catalog