Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Combobox Borderstyle

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.02.2004, 14:45 Uhr
~theolmue
Gast


Hallo,
ich habe mit dem Ressourceneditor eine Combobox und dazu eine Membervariable vom Typ CComboBox erstellt. Jetzt möchte ich, dass die Combobox OHNE Rand dargestellt wird. Bei einer EditBox funktioniert das wunderbar mit

m_EditBox.ModifyStyleEx(WS_EX_CLIENTEDGE,0,SWP_FRAMECHANGED);

Wenn ich das analog dazu mit der Combobox mache, passiert gar nichts...

m_ComboBox.ModifyStyleEx(WS_EX_CLIENTEDGE,0,SWP_FRAMECHANGED);

Ich programmiere erst seit 4 Monaten MFC und bin doch sher irritiert, da beide Controls die Methode ja schon von der Klasse CWnd erben!

Ich bin für jede Lösung dankbar, mit der ich die ComboBox ohne Rand hinbekomme, auch wenn der Style schon zur Entwurfszeit festgelegt wird.
theolmue
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.02.2004, 18:46 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Ich glaube, dass du das bei dem Edit - welches sich in der Combo befindet - machen musst (laut Spy++ besteht eine ComboBox aus einem Edit). Nur kann man imho keienn Pointer auf das Edit holen. Das heißt, du müsstest die Combo ableiten und dann mit Hilfe von OnPaint das ganze händisch "übermalen" -> of codeproject gibts ein paar Samples, wie man Controls auf diese Weise bearbeiten kann.

mfg
--

Dieser Post wurde am 17.02.2004 um 18:47 Uhr von mike editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.02.2004, 22:32 Uhr
~theolmue
Gast


Hallo!
Erst mal vielen Dank an mike, dass Du Dir damit so viel Mühe gegeben hast.
Leider wird mich das aber (wenn ich es richtig verstanden habe) wohl kaum weiter bringen. Ich will den Rahmen der ComboBox in erster Linie weg haben, weil mir der Platz dafür fehlt. Die Box soll nämlich als Eingabe in ein MSFlexgrid integriert werden. Wenn ich also den Rahmen nur übermale, bleibt der Rest ja eben an der "falschen" Stelle stehen. Mal abgesehen davon erscheint es mir (fast) unmöglich, den Rahmen so weg zu retouschieren, dass es in dem Flexgrid nicht auffällt.

Gesucht ist also eine Lösung, die Combobox direkt ohne Rahmen zu bekommen. Daher scheint sich mir die Frage zu stellen, wie komme ich an die EditBox in der ComboBox heran?

Ich hoffe, es hat noch jemand eine andere gute Idee, wie ich den Rahmen der ComboBox los werde.
theolmue

PS.: Ja, ich muss dass Flexgrid benutzen und kann keine Alternative verwenden. - Aufgabenstellung in der Ausbildung ;-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.02.2004, 00:33 Uhr
~Joe
Gast


Huhu !

Meinst Du mit Rahmen, den dünnen (ca. 0.5 mm) schwaren Rand, wenn
die Combo-Box aufgeht ?
Ansonsten Haken raus bei den Eigenschaften: Client-Kante, statische Kante, modaler Rahmen ( wenn du VS C++ benutzst ). Ist aber eh Voreinstellung, glaub ich.

Sonst:

Wenn ich mit

CComboBox m_ctlComboBox;
m_ctlComboBox.Create(WS_VISIBLE, rect, this, 12345);

ne Combo-Box erzeuge, ist auch der dünne schwarze "Rahmen" nicht zu sehen. Weiss aber nicht, ob Du diesen schwarzen, dünnen Strich mit Rahmen meinst.

Gruß, Joe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.02.2004, 07:37 Uhr
~theolmue
Gast


Ich meine den 3D-Rahmen, der erscheint, sobald die ComboBox auf dem Form ist - genau wie bei einer EditBox. Der Rahmen beim Aufklappen ist mir ziemlich egal
Gruß
theolmue
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
18.02.2004, 10:36 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Also ich kenne diesbezüglich nur ein Demo:
www.codeproject.com/miscctrl/gridctrl_combo.asp
Dort werden auch die ganz normalen Combos verwendet.

Speziell für dein Problem hätte ich eine eigene Klasse:
http://193.171.122.120/stuff/fun-soft/XListCtrl_demo.zip
Die Spalte Item müsste eigentlich genau das haben, was du brauchst
Du musst eventl. auf ein paar Funktionen der CCOmboBOx verzichten, da diese selbst geproggt ist:
class CXComboList : public CWnd
Aber zum Auswählen dürfte es reichen *g*

mfg
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.02.2004, 15:58 Uhr
~theolmue
Gast


Die genannte Internetseite kenne ich, denn überall wird darauf verwiesen. Für mich hat die Sache allerdings zwei Haken: Zum einen wird dort nicht das MSFlexGrid benutzt (was ich ja zwingend nutzen muss) und zum anderen ist mir das Projekt dort als ganzes zu groß; ich steig da nicht ganz durch.
Der Link zu dem Demo dagegen ist hilfreich. Zwar muss ich auch hier die Klasse noch erst durchschauen, aber das erschlägt mich nicht.
Daher vielen Dank an mike!

Schade nur, dass man offensichtlich nicht um vollständige Eigenentwicklungen herum kommt, wenn man eine ComboBox ohne Rahmen will...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: