Edit Controls im XP Style
-
Ich frage mich wie man Edit Controls im XP Style hinbekommt
habe alles so gemacht wie hier beschrieben (meine ich zuminderst):
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwxp/html/xptheming.asphabe die Libary ComCtl32.lib mitgelinkt, hab die Funktion InitCommonControls aufrufen (auch die Headerdatei commctrl.h inkludiert) und eine Manifest Datei angelegt:
<?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.YourApplication" 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>Nur die Edit Box sieht immer noch aus wie aus der Steinzeit (hat also keinen XP Style). Andere Controls wie BUTTON oder TabControl haben den XP-Style
Hier mein Code (Visual Studio 2005 Solution): http://turing.fh-landshut.de/~jamann/Edit.zip
und ein Bildchen:
http://turing.fh-landshut.de/~jamann/steinzeit.PNGhat jemand eine Idee was ich falsch mache?
-
Standardmäßig legt Visual C++ 2005 schon ein Manifest an, daher musst du dieses Manifest mit einem pragma verändern:
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
-
Standardmäßig legt Visual C++ 2005 schon ein Manifest an, daher musst du dieses Manifest mit einem pragma verändern:
daran liegts nicht - hab jetzt zwar zu Testzwecken trotzdem mal das pragma eingebaut - aber es ändert sich nichts - die anderen Controls haben sich ja nach dem ich eine Manifestdatei hinzugefügt habe auch geändert - nur diese Blöde Edit Box nicht
-
Wie anders sieht denn eine Edit Box im XP-Stil aus?
Ich wüsste jetzt nicht was du da großartig sehen kannst.
Wenn die anderen Controls das schon angenommen haben dann hat das dein Edit Control sicherlich auch.Eventuell suchst du nur einen anderen ES_* Style
BR
Vinzenz
-
Wie anders sieht denn eine Edit Box im XP-Stil aus?
links siehst du XP-Style - Rechts meine Version:
http://turing.fh-landshut.de/~jamann/editc.PNG
-
evilissimo schrieb:
Eventuell suchst du nur einen anderen ES_* Style
/* * Edit Control Styles */ #define ES_LEFT 0x0000L #define ES_CENTER 0x0001L #define ES_RIGHT 0x0002L #define ES_MULTILINE 0x0004L #define ES_UPPERCASE 0x0008L #define ES_LOWERCASE 0x0010L #define ES_PASSWORD 0x0020L #define ES_AUTOVSCROLL 0x0040L #define ES_AUTOHSCROLL 0x0080L #define ES_NOHIDESEL 0x0100L #define ES_OEMCONVERT 0x0400L #define ES_READONLY 0x0800L #define ES_WANTRETURN 0x1000L #if(WINVER >= 0x0400) #define ES_NUMBER 0x2000L #endif /* WINVER >= 0x0400 */mmh - nö kein ES Style dabei
-
Ok, mein Fehler. Ich hab da an etwas anderes gedacht.
Zeig mal wie du das Edit erstellst.
Ausserdem musst du ein anderes Font setzen, zum Bleistift Arial.
BR
-
Der Code ist hier zu finden:
http://turing.fh-landshut.de/~jamann/Edit.zipErstellung des Edit Controls:
HWND edit = CreateWindow(TEXT("EDIT"), TEXT("Ein String"), WS_CHILD | WS_VISIBLE | WS_BORDER , 10, 300, 100,25, hwnd, NULL, hInstance, NULL); // neu eingebaut schriftart ändern: SendMessage( edit, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), 0);aber der Rand ist immer noch Schwarz und nicht so schön blau

-
War quatsch

-
WS_BORDER rausnehmen und stattdessen CreateWindowEx mit WS_EX_CLIENTEDGE benutzen. Hätteste ganz einfach mit Spy++ rausfinden können.
-
......... schrieb:
WS_BORDER rausnehmen und stattdessen CreateWindowEx mit WS_EX_CLIENTEDGE benutzen. Hätteste ganz einfach mit Spy++ rausfinden können.
Argh ich depp. Ich hatte beides drin und dachte dann es geht net *fg*.
Habs aber ausprobiert es geht

BR
Vinzenz
-
Der Rahemen ist Weg - es ist keien Auswirkung von WS_EX_CLIENTEDGE zu sehen...
-
ups es geth doch:
HWND edit = CreateWindowEx(WS_EX_CLIENTEDGE,TEXT("EDIT"), TEXT("Ein String"), WS_CHILD | WS_VISIBLE , 10, 300, 100,25, hwnd, NULL, hInstance, NULL);Danke für den Tip mit dem Spy - hätte ich gleich machen sollen
-
Vertexwahn schrieb:
Der Rahemen ist Weg - es ist keien Auswirkung von WS_EX_CLIENTEDGE zu sehen...
CreateWindowEx(WS_EX_CLIENTEDGE, ...)
-
Genau das war der Fehler
- hatte es erst so:HWND edit = CreateWindowEx(NULL,TEXT("EDIT"), TEXT("Ein String"), WS_EX_CLIENTEDGE| WS_CHILD | WS_VISIBLE , 10, 300, 100,25, hwnd, NULL, hInstance, NULL);