mit IsThemeActive() wird ja "entschieden" ob ich "visual Style" haben kann oder nicht.
Dabei wird auf die uxtheme.dll zugegriffen und man kann feststellen of "IsThemeActive" ist und ob die Application "IsAppThemed".
Wenn man nun z.b. einen Ownerdraw CLASS FROM XbpPushbutton erstellen will, kommt man zu der Frage mit den "visual Style".
Code: Alles auswählen
::DrawBackground( oPS, aInfo )
::DrawFrame( oPS, aInfo )
::DrawImage( oPS, aInfo )
::DrawText( oPS, aInfo )
nun habe ich mit dem ::DrawBackground() das 1.) "Problem"
Code: Alles auswählen
METHOD Button:DrawBackground( oPS, aInfo )
GraBackground( oPS, {aInfo[XBP_DRAWINFO_RECT][1],aInfo[XBP_DRAWINFO_RECT][2]},;
{aInfo[XBP_DRAWINFO_RECT][3],aInfo[XBP_DRAWINFO_RECT][4]} )
RETURN
aber leider gibt er immer das System OS() Theme zurück und nicht die aktuellen Skin.ist dem Xbase Part ein visueller Stil zugewiesen, verwendet GraBackground() die durch den Stil vorgegebene Hintergrundgrafik.
nun überlege ich, woher kommt eigentlich das GraBackground() ... hat das was mit uxtheme.dll zu tun ?
ich bin da auf http://www.codeproject.com/KB/tabs/themedtabpage.aspx gestossen wo von
hm ... wäre das nicht genau (naja nicht Xbase++) was ich suche ? leider "nur" C++ Source ...Wrapping uxTheme
In order to draw the themed background, you have to call uxtheme.dll function DrawThemeBackground, which means calling into unmanaged code.
* bool Wrapper_IsAppThemed ();
* bool Wrapper_DrawBackground (const wchar_t* name, const wchar_t* part, const wchar_t* state, HDC hdc, ...);
* bool Wrapper_DrawThemeParentBackground (HWND hwnd, HDC hdc);
* bool Wrapper_DrawThemeParentBackgroundRect (HWND hwnd, HDC hdc, int ox, int oy, int dx, int dy);
* bool Wrapper_GetTextColor (const wchar_t* name, const wchar_t* part, const wchar_t* state, int* r, int* g, int* b)
auf der Website http://win7dll.info/uxtheme_dll.html habe ich eine "Exported Functions List" gefunden wo wohl "viel mehr" vorhanden ist als Alaska uns gibt ...
leider scheint es kein COM Interface zu geben, also müsste man das wohl mit DLLcall machen ?
Nun hab ich die Website http://www.vbaccelerator.com/home/VB/Co ... rticle.asp entdeckt und die ersten VB.NT Function für solche DLL Zugiffe und auf http://www.vbaccelerator.com/home/net/c ... rticle.asp noch mehr davon.
was alles mit "visual Style" möglich ist kann man sich unter http://www.codeproject.com/KB/miscctrl/uxtheme.aspx ansehen ...
und wir sprechen hier nicht von "Zusatztools" sondern vom OS() XP/VISTA/Win7 was wir auch mit Xbase++ können "müssten"