HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Windows XP megjelenítési stílusok felhasználása


Példaprogram letöltése

13056 bájt

A Windows XP-vel létrehozásra került néhány olyan új funkció, melyet felhasználva látványos grafikai objektumokat rajzolhatunk ki saját alkalmazásainkban is, teljesen egyedi módon felhasználva a számtalan lehetőséget.

Ezen függvények felhasználásához szükséges, hogy azokat elérhessük. Ezért létrehoztunk a Win32.cs forráskódot, melyben megadjuk a szükséges függvényeket és hozzájuk tartozó konstansokat. Ezeket a függvényeket az UxTheme.dll-ben találjuk, így erre kell hivatkoznunk.
Számos különféle a Windows-ból már jól ismert objektum, grafikai elem rajzolható ki a függvények felhasználásával, természetesen most nem csak eredeti funkciójuknak megfelelően, hanem saját céljainkra is. Így például rajzolhatunk Form fejléc hátteret tetszőleges méretben, melyet egyedi módon használunk fel. Hogy mit is szeretnénk rajzoltatni, az különféle osztályokra van bontva:
  • BUTTON
  • CLOCK
  • COMBOBOX
  • EDIT
  • EXPLORERBAR
  • GLOBALS
  • HEADER
  • LISTVIEW
  • MENU
  • MENUBAND
  • PAGE
  • PROGRESS
  • REBAR
  • SCROLLBAR
  • SPIN
  • STARTPANEL
  • STATUS
  • TAB
  • TASKBAND
  • TASKBAR
  • TOOLBAR
  • TOOLTIP
  • TRACKBAR
  • TRAYNOTIFY
  • TREEVIEW
  • WINDOW
Minden osztálynak lehet még számos tulajdonsága, mely befolyásolhatja a megjelenő eredményt. Például egy ablak fejléc hátterének rajzolásakor rajzoltathatunk aktív, vagy inaktív fejlécet.
Nézzük a gyakorlatban miként is használhatjuk ezt ki:
    private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
    {
Rajzoljunk ki egy téglalapot a Form fejlécének háttér stílusával.
      IntPtr hdc = e.Graphics.GetHdc();
      Rectangle rect = new Rectangle(20, 20, 300, 55);
Az IsThemeActive függvény használatával ellenőrizhetjük, hogy alkalmazásunk képes-e ezen lehetőségek kihasználásra. Ha igen és még nem nyitottunk meg valamely osztályú rajzeszközt, akkor ezt az OpenThemeData függvény hívásával megtehetjük. Első paraméterként annak az ablaknak az azonosítóját kell megadnunk, melyen a rajzolást szeretnénk elvégezni, másodikként a fenti felsorolásban látható osztályok megnevezése közül azt, melyet használni szeretnénk.
      if ((Win32.IsThemeActive() == 1)  && (handleTheme == IntPtr.Zero)) 
      {
        handleTheme = Win32.OpenThemeData(Handle, "Window");
      }
Ezt követően a DrawThemeBackground függvény hívásával elvégezhetjük egy objektum hátterének kifestését. Első paraméterként az OpenThemeData által visszaadott azonosítót kell megadnunk. Ezt követi a rajzeszközünk azonosítója, melyet a Graphics osztályunk GetHdc függvénye szolgáltatott. A harmadik paraméterben arról rendelkezhetünk, hogy a választott objektum mely osztályát szeretnénk használni, míg a negyedik paraméter az osztályhoz tartozó egyéb attribútumot adja meg. A kirajzolás területét az ezt követő paraméterben adhatjuk meg.
      Win32.RECT r = new Win32.RECT(rect);
      Win32.DrawThemeBackground(handleTheme, hdc, Win32.WP_CAPTION, Win32.CS_ACTIVE, ref r, ref r); 
      ...
Mint látható a Form fejléc hátterének kirajzolásához a WP_CAPTION konstanst használtuk, melynél a CS_ACTIVE attribútum megadásával értük el, hogy egy aktív ablak fejléce legyen kirajzolva.
Hogy milyen egyéb lehetőségeink vannak, azt az alábbi táblázat foglalja össze. Az első oszlopban a felhasználható osztályok láthatóak, a másodikban a DrawThemeBackground függvény harmadik paraméterében (Part) használható konstansok, míg a táblázat harmadik oszlopában a DrawThemeBackground függvény negyedik paraméterének (States) konstansai láthatók.
Osztály Part paraméter States paraméter
BUTTON BP_CHECKBOX CBS_CHECKEDDISABLED, CBS_CHECKEDHOT, CBS_CHECKEDNORMAL, CBS_CHECKEDPRESSED, CBS_MIXEDDISABLED, CBS_MIXEDHOT, CBS_MIXEDNORMAL, CBS_MIXEDPRESSED, CBS_UNCHECKEDDISABLED, CBS_UNCHECKEDHOT, CBS_UNCHECKEDNORMAL, CBS_UNCHECKEDPRESSED
--> BP_GROUPBOX GBS_DISABLED, GBS_NORMAL
--> BP_PUSHBUTTON PBS_DEFAULTED, PBS_DISABLED, PBS_HOT, PBS_NORMAL, PBS_PRESSED
--> BP_RADIOBUTTON RBS_CHECKEDDISABLED, RBS_CHECKEDHOT, RBS_CHECKEDNORMAL, RBS_CHECKEDPRESSED, RBS_UNCHECKEDDISABLED, RBS_UNCHECKEDHOT, RBS_UNCHECKEDNORMAL, RBS_UNCHECKEDPRESSED
--> BP_USERBUTTON -
CLOCK CLP_TIME CLS_NORMAL
COMBOBOX CP_DROPDOWNBUTTON CBXS_DISABLED, CBXS_HOT, CBXS_NORMAL, CBXS_PRESSED
EDIT EP_CARET -
--> EP_EDITTEXT ETS_ASSIST, ETS_DISABLED, ETS_FOCUSED, ETS_HOT, ETS_NORMAL, ETS_READONLY, ETS_SELECTED
EXPLORERBAR EBP_HEADERBACKGROUND -
--> EBP_HEADERCLOSE EBHC_HOT, EBHC_NORMAL, EBHC_PRESSED
--> EBP_HEADERPIN EBHP_HOT, EBHP_NORMAL, EBHP_PRESSED, EBHP_SELECTEDHOT, EBHP_SELECTEDNORMAL, EBHP_SELECTEDPRESSED
--> EBP_IEBARMENU EBM_HOT, EBM_NORMAL, EBM_PRESSED
--> EBP_NORMALGROUPBACKGROUND -
--> EBP_NORMALGROUPCOLLAPSE EBNGC_HOT, EBNGC_NORMAL, EBNGC_PRESSED
--> EBP_NORMALGROUPEXPAND EBNGE_HOT, EBNGE_NORMAL, EBNGE_PRESSED
--> EBP_NORMALGROUPHEAD -
--> EBP_SPECIALGROUPBACKGROUND -
--> EBP_SPECIALGROUPCOLLAPSE EBSGC_HOT, EBSGC_NORMAL, EBSGC_PRESSED
--> EBP_SPECIALGROUPEXPAND EBSGE_HOT, EBSGE_NORMAL, EBSGE_PRESSED
--> EBP_SPECIALGROUPHEAD -
GLOBALS GP_BORDER BSS_FLAT, BSS_RAISED, BSS_SUNKEN
--> GP_LINEHORZ LHS_FLAT, LHS_RAISED, LHS_SUNKEN
--> GP_LINEVERT LVS_FLAT, LVS_RAISED, LVS_SUNKEN
HEADER HP_HEADERITEM HIS_HOT, HIS_NORMAL, HIS_PRESSED
--> HP_HEADERITEMLEFT HILS_HOT, HILS_NORMAL, HILS_PRESSED
--> HP_HEADERITEMRIGHT HIRS_HOT, HIRS_NORMAL, HIRS_PRESSED
--> HP_HEADERSORTARROW HSAS_SORTEDDOWN, HSAS_SORTEDUP
LISTVIEW LVP_EMPTYTEXT -
--> LVP_LISTDETAIL -
--> LVP_LISTGROUP -
--> LVP_LISTITEM LIS_DISABLED, LIS_HOT, LIS_NORMAL, LIS_SELECTED, LIS_SELECTEDNOTFOCUS
--> LVP_LISTSORTEDDETAIL -
MENU MP_MENUBARDROPDOWN MS_DEMOTED, MS_NORMAL, MS_SELECTED
--> MP_MENUBARITEM MS_DEMOTED, MS_NORMAL, MS_SELECTED
MP_CHEVRON MS_DEMOTED, MS_NORMAL, MS_SELECTED
--> MP_MENUDROPDOWN MS_DEMOTED, MS_NORMAL, MS_SELECTED
--> MP_MENUITEM MS_DEMOTED, MS_NORMAL, MS_SELECTED
--> MP_SEPARATOR MS_DEMOTED, MS_NORMAL, MS_SELECTED
MENUBAND MDP_NEWAPPBUTTON MDS_CHECKED, MDS_DISABLED, MDS_HOT, MDS_HOTCHECKED, MDS_NORMAL, MDS_PRESSED
--> MDP_SEPARATOR -
PAGE PGRP_DOWN DNS_DISABLED, DNS_HOT, DNS_NORMAL, DNS_PRESSED
--> PGRP_DOWNHORZ DNHZS_DISABLED, DNHZS_HOT, DNHZS_NORMAL, DNHZS_PRESSED
--> PGRP_UP UPS_DISABLED, UPS_HOT, UPS_NORMAL, UPS_PRESSED
--> PGRP_UPHORZ UPHZS_DISABLED, UPHZS_HOT, UPHZS_NORMAL, UPHZS_PRESSED
PROGRESS PP_BAR -
--> PP_BARVERT -
--> PP_CHUNK -
--> PP_CHUNKVERT -
REBAR RP_BAND -
--> RP_CHEVRON CHEVS_HOT, CHEVS_NORMAL, CHEVS_PRESSED
--> RP_CHEVRONVERT -
--> RP_GRIPPER -
--> RP_GRIPPERVERT -
SCROLLBAR SBP_ARROWBTN ABS_DOWNDISABLED, ABS_DOWNHOT, ABS_DOWNNORMAL, ABS_DOWNPRESSED, ABS_UPDISABLED, ABS_UPHOT, ABS_UPNORMAL, ABS_UPPRESSED, ABS_LEFTDISABLED, ABS_LEFTHOT, ABS_LEFTNORMAL, ABS_LEFTPRESSED, ABS_RIGHTDISABLED, ABS_RIGHTHOT, ABS_RIGHTNORMAL, ABS_RIGHTPRESSED
--> SBP_GRIPPERHORZ -
--> SBP_GRIPPERVERT -
--> SBP_LOWERTRACKHORZ SCRBS_DISABLED, SCRBS_HOT, SCRBS_NORMAL, SCRBS_PRESSED
--> SBP_LOWERTRACKVERT SCRBS_DISABLED, SCRBS_HOT, SCRBS_NORMAL, SCRBS_PRESSED
--> SBP_THUMBBTNHORZ SCRBS_DISABLED, SCRBS_HOT, SCRBS_NORMAL, SCRBS_PRESSED
--> SBP_THUMBBTNVERT SCRBS_DISABLED, SCRBS_HOT, SCRBS_NORMAL, SCRBS_PRESSED
--> SBP_UPPERTRACKHORZ SCRBS_DISABLED, SCRBS_HOT, SCRBS_NORMAL, SCRBS_PRESSED
--> SBP_UPPERTRACKVERT SCRBS_DISABLED, SCRBS_HOT, SCRBS_NORMAL, SCRBS_PRESSED
--> SBP_SIZEBOX SZB_LEFTALIGN, SZB_RIGHTALIGN
SPIN SPNP_DOWN DNS_DISABLED, DNS_HOT, DNS_NORMAL, DNS_PRESSED
--> SPNP_DOWNHORZ DNHZS_DISABLED, DNHZS_HOT, DNHZS_NORMAL, DNHZS_PRESSED
--> SPNP_UP UPS_DISABLED, UPS_HOT, UPS_NORMAL, UPS_PRESSED
--> SPNP_UPHORZ UPHZS_DISABLED, UPHZS_HOT, UPHZS_NORMAL, UPHZS_PRESSED
STARTPANEL SPP_LOGOFF -
--> SPP_LOGOFFBUTTONS SPLS_HOT, SPLS_NORMAL, SPLS_PRESSED
--> SPP_MOREPROGRAMS -
--> SPP_MOREPROGRAMSARROW SPS_HOT, SPS_NORMAL, SPS_PRESSED
--> SPP_PLACESLIST -
--> SPP_PLACESLISTSEPARATOR -
--> SPP_PREVIEW -
--> SPP_PROGLIST -
--> SPP_PROGLISTSEPARATOR -
--> SPP_USERPANE -
--> SPP_USERPICTURE -
STATUS SP_GRIPPER -
--> SP_PANE -
--> SP_GRIPPERPANE -
TAB TABP_BODY -
--> TABP_PANE -
--> TABP_TABITEM TIS_DISABLED, TIS_FOCUSED, TIS_HOT, TIS_NORMAL, TIS_SELECTED
--> TABP_TABITEMBOTHEDGE TIBES_DISABLED, TIBES_FOCUSED, TIBES_HOT, TIBES_NORMAL, TIBES_SELECTED
--> TABP_TABITEMLEFTEDGE TILES_DISABLED, TILES_FOCUSED, TILES_HOT, TILES_NORMAL, TILES_SELECTED
--> TABP_TABITEMRIGHTEDGE TIRES_DISABLED, TIRES_FOCUSED, TIRES_HOT, TIRES_NORMAL, TIRES_SELECTED
--> TABP_TOPTABITEM TTIS_DISABLED, TTIS_FOCUSED, TTIS_HOT, TTIS_NORMAL, TTIS_SELECTED
--> TABP_TOPTABITEMBOTHEDGE TTIBES_DISABLED, TTIBES_FOCUSED, TTIBES_HOT, TTIBES_NORMAL, TTIBES_SELECTED
--> TABP_TOPTABITEMLEFTEDGE TTILES_DISABLED, TTILES_FOCUSED, TTILES_HOT, TTILES_NORMAL, TTILES_SELECTED
--> TABP_TOPTABITEMRIGHTEDGE TTIRES_DISABLED, TTIRES_FOCUSED, TTIRES_HOT, TTIRES_NORMAL, TTIRES_SELECTED
TASKBAND TDP_GROUPCOUNT -
--> TDP_FLASHBUTTON -
--> TDP_FLASHBUTTONGROUPMENU -
TASKBAR TBP_BACKGROUNDBOTTOM -
--> TBP_BACKGROUNDLEFT -
--> TBP_BACKGROUNDRIGHT -
--> TBP_BACKGROUNDTOP -
--> TBP_SIZINGBARBOTTOM -
--> TBP_SIZINGBARBOTTOMLEFT -
--> TBP_SIZINGBARRIGHT -
--> TBP_SIZINGBARTOP -
TOOLBAR TP_BUTTON TS_CHECKED, TS_DISABLED, TS_HOT, TS_HOTCHECKED, TS_NORMAL, TS_PRESSED
--> TP_DROPDOWNBUTTON TS_CHECKED, TS_DISABLED, TS_HOT, TS_HOTCHECKED, TS_NORMAL, TS_PRESSED
--> TP_SPLITBUTTON TS_CHECKED, TS_DISABLED, TS_HOT, TS_HOTCHECKED, TS_NORMAL, TS_PRESSED
--> TP_SPLITBUTTONDROPDOWN TS_CHECKED, TS_DISABLED, TS_HOT, TS_HOTCHECKED, TS_NORMAL, TS_PRESSED
--> TP_SEPARATOR TS_CHECKED, TS_DISABLED, TS_HOT, TS_HOTCHECKED, TS_NORMAL, TS_PRESSED
--> TP_SEPARATORVERT TS_CHECKED, TS_DISABLED, TS_HOT, TS_HOTCHECKED, TS_NORMAL, TS_PRESSED
TOOLTIP TTP_BALLOON TTBS_LINK, TTBS_NORMAL
--> TTP_BALLOONTITLE TTBS_LINK, TTBS_NORMAL
--> TTP_CLOSE TTCS_HOT, TTCS_NORMAL, TTCS_PRESSED
--> TTP_STANDARD TTSS_LINK, TTSS_NORMAL
--> TTP_STANDARDTITLE TTSS_LINK, TTSS_NORMAL
TRACKBAR TKP_THUMB TUS_DISABLED, TUS_FOCUSED, TUS_HOT, TUS_NORMAL, TUS_PRESSED
--> TKP_THUMBBOTTOM TUBS_DISABLED, TUBS_FOCUSED, TUBS_HOT, TUBS_NORMAL, TUBS_PRESSED
--> TKP_THUMBLEFT TUVLS_DISABLED, TUVLS_FOCUSED, TUVLS_HOT, TUVLS_NORMAL, TUVLS_PRESSED
--> TKP_THUMBRIGHT TUVRS_DISABLED, TUVRS_FOCUSED, TUVRS_HOT, TUVRS_NORMAL, TUVRS_PRESSED
--> TKP_THUMBTOP TUTS_DISABLED, TUTS_FOCUSED, TUTS_HOT, TUTS_NORMAL, TUTS_PRESSED
--> TKP_THUMBVERT TUVS_DISABLED, TUVS_FOCUSED, TUVS_HOT, TUVS_NORMAL, TUVS_PRESSED
--> TKP_TICS TSS_NORMAL
--> TKP_TICSVERT TSVS_NORMAL
--> TKP_TRACK TRS_NORMAL
--> TKP_TRACKVERT TRVS_NORMAL
TRAYNOTIFY TNP_ANIMBACKGROUND -
--> TNP_BACKGROUND -
TREEVIEW TVP_BRANCH -
--> TVP_GLYPH GLPS_CLOSED, GLPS_OPENED
--> TVP_TREEITEM TREIS_DISABLED, TREIS_HOT, TREIS_NORMAL, TREIS_SELECTED, TREIS_SELECTEDNOTFOCUS
WINDOW WP_CAPTION CS_ACTIVE, CS_DISABLED, CS_INACTIVE
--> WP_CAPTIONSIZINGTEMPLATE -
--> WP_CLOSEBUTTON CBS_DISABLED, CBS_HOT, CBS_NORMAL, CBS_PUSHED
--> WP_DIALOG -
--> WP_FRAMEBOTTOM FS_ACTIVE, FS_INACTIVE
--> WP_FRAMEBOTTOMSIZINGTEMPLATE -
--> WP_FRAMELEFT FS_ACTIVE, FS_INACTIVE
--> WP_FRAMELEFTSIZINGTEMPLATE -
--> WP_FRAMERIGHT FS_ACTIVE, FS_INACTIVE
--> WP_FRAMERIGHTSIZINGTEMPLATE -
--> WP_HELPBUTTON HBS_DISABLED, HBS_HOT, HBS_NORMAL, HBS_PUSHED
--> WP_HORZSCROLL HSS_DISABLED, HSS_HOT, HSS_NORMAL, HSS_PUSHED
--> WP_HORZTHUMB HTS_DISABLED, HTS_HOT, HTS_NORMAL, HTS_PUSHED
--> WP_MAX_BUTTON MAXBS_DISABLED, MAXBS_HOT, MAXBS_NORMAL, MAXBS_PUSHED
--> WP_MAXCAPTION MXCS_ACTIVE, MXCS_DISABLED, MXCS_INACTIVE
--> WP_MDICLOSEBUTTON CBS_DISABLED, CBS_HOT, CBS_NORMAL, CBS_PUSHED
--> WP_MDIHELPBUTTON HBS_DISABLED, HBS_HOT, HBS_NORMAL, HBS_PUSHED
--> WP_MDIMINBUTTON MINBS_DISABLED, MINBS_HOT, MINBS_NORMAL, MINBS_PUSHED
--> WP_MDIRESTOREBUTTON RBS_DISABLED, RBS_HOT, RBS_NORMAL, RBS_PUSHED
--> WP_MDISYSBUTTON SBS_DISABLED, SBS_HOT, SBS_NORMAL, SBS_PUSHED
--> WP_MINBUTTON MINBS_DISABLED, MINBS_HOT, MINBS_NORMAL, MINBS_PUSHED
--> WP_MINCAPTION MNCS_ACTIVE, MNCS_DISABLED, MNCS_INACTIVE
--> WP_RESTOREBUTTON RBS_DISABLED, RBS_HOT, RBS_NORMAL, RBS_PUSHED
--> WP_SMALLCAPTION CS_ACTIVE, CS_DISABLED, CS_INACTIVE
--> WP_SMALLCAPTIONSIZINGTEMPLATE
--> WP_SMALLCLOSEBUTTON CBS_DISABLED, CBS_HOT, CBS_NORMAL, CBS_PUSHED
--> WP_SMALLFRAMEBOTTOM FS_ACTIVE, FS_INACTIVE
--> WP_SMALLFRAMEBOTTOMSIZINGTEMPLATE -
--> WP_SMALLFRAMELEFT FS_ACTIVE, FS_INACTIVE
--> WP_SMALLFRAMELEFTSIZINGTEMPLATE -
--> WP_SMALLFRAMERIGHT FS_ACTIVE, FS_INACTIVE
--> WP_SMALLFRAMERIGHTSIZINGTEMPLATE -
--> WP_SMALLHELPBUTTON HBS_DISABLED, HBS_HOT, HBS_NORMAL, HBS_PUSHED
--> WP_SMALLMAXBUTTON MAXBS_DISABLED, MAXBS_HOT, MAXBS_NORMAL, MAXBS_PUSHED
--> WP_SMALLMAXCAPTION MXCS_ACTIVE, MXCS_DISABLED, MXCS_INACTIVE
--> WP_SMALLMINBUTTON MINBS_DISABLED, MINBS_HOT, MINBS_NORMAL, MINBS_PUSHED
--> WP_SMALLMINCAPTION MNCS_ACTIVE, MNCS_DISABLED, MNCS_INACTIVE
--> WP_SMALLRESTOREBUTTON RBS_DISABLED, RBS_HOT, RBS_NORMAL, RBS_PUSHED
--> WP_SMALLSYSBUTTON SBS_DISABLED, SBS_HOT, SBS_NORMAL, SBS_PUSHED
--> WP_SYSBUTTON SBS_DISABLED, SBS_HOT, SBS_NORMAL, SBS_PUSHED
--> WP_VERTSCROLL VSS_DISABLED, VSS_HOT, VSS_NORMAL, VSS_PUSHED
--> WP_VERTTHUMB VTS_DISABLED, VTS_HOT, VTS_NORMAL, VTS_PUSHED

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 382. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |