CListCtrl - Styles setzen
-
Hallo,
ich habe eine von CListCtrl abgeleitete Klasse. In dieser möchte ich fest Styles vorgeben (LVS_REPORT, LVS_EX_FULLROWSELECT, etc.) um diese nicht immer, wenn ich einen neuen Dialog erstelle und dort ein ListCtrl plaziere die ganzen Styles setzen zu müssen (und auch um Fehlern die durch falsche bzw. fehlende Styles entstehen könnten entgegen zu wirken).
Ich habe nun PreCreateWindow überschrieben. Sieht dann so aus:
BOOL CListCtrlEx::PreCreateWindow( CREATESTRUCT& cs ) { cs.dwExStyle = LVS_EX_FULLROWSELECT; return CListCtrl::PreCreateWindow( cs ); }Leider passiert genau garnix.
Auch ein manueles überschreiben von OnCreate brachte nix:
int CListCtrlEx::OnCreate( LPCREATESTRUCT lpCreateStruct ) { lpCreateStruct->dwExStyle = LVS_EX_FULLROWSELECT; return CListCtrl::OnCreate( lpCreateStruct ); }Wenn ich das ganze im Dialog mache, also m_view.SetExtendedStyle( LVS_EX_FULLROWSELECT );, funzt das. (Allerdings geht das ja nur für die Extended Styles, nicht für normale, und es wiederspricht meinem angedachten Zweck, s.o.)
Villeicht auch wichtig: Ist eine Dialog-Projekt.
Hoffe es weis einer Rat...
MfG
HauiP.S. Wenn jmd. nen Link kennt, wo man Infos zu Funktionen/Klassen zwechs Kommunikation von MFC-Anwendungen mit Excel/Word findet wäre ich sehr dankbar. Habe bei CodeGuru schon geschaut, aber nur Klassen gefunden die das via ODBC machen, was ich nicht möchte.
-
Vielleicht:
BOOL CListCtrlEx::PreCreateWindow( CREATESTRUCT& cs ) { if (!CListCtrl::PreCreateWindow(cs)) return FALSE; cs.dwExStyle |= LVS_EX_FULLROWSELECT; return TRUE; }
-
Hilft leider nicht.
Bin nun aber mal hingegangen und hab einfach nen Aufruf von GetParent()->MessageBox( "Hallo" ); In die Funktion reingesetzt.... was soll ich sagen: PreCreateWindow() wird garnich aufgerufen... Insofern ist das nich weiter verwunderlich.

Weis jmd. woran das liegen könnte?
Control via Resource Workshop im Dialog plaziert, Member-Variable vom Typ der abgeleiteten Klasse angelegt... alles ganz "normal" eigentlich... wiso wird nu die PreCreateWindow() nicht augerufen? Raff ich irgendwie nicht...
-
PreCreateWindow wird aufgerufen, wenn man das Control per Create bzw. CreateEx erstellt. Versuch es dann in PreSubclassWindow den Style mittels ModifyStyleEx zu setzen, das sollte eigentlich funktionieren.
-

Funktion wird aufgerufen (logisch), ModifyStyle() und ModifyStyleEx() werden erfolgreich ausgeführt, aber bringen tut es trotzdem nix. Ich denke mal die Funktion ist "zu früh" dran und nach ihr wird seitens MFC das was ich da nu einstelle durch die Werte aus der Resource überschrieben.
-
Oh Gott, die ganzen extended styles (LVS_EX_*) können nur per SetExtendedStyle Aufruf geändert werden. Jetzt aber

-
JUCHU! 1000 und 1 Dank.
void CListCtrlEx::PreSubclassWindow() { SetExtendedStyle( LVS_EX_FULLROWSELECT ); CListCtrl::PreSubclassWindow(); }Das funktioniert.
Wenn nu noch einer was für mein P.S. vom ursprünglichen Posting ganz oben hat....

-
Hallo,
viel Spaß beim Lesen:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dno2kta/html/offaut.asp
http://support.microsoft.com/default.aspx?kbid=196776
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnoffdev/html/vsofficedev.asp
http://support.microsoft.com/default.aspx?kbid=253235
MfG
-

Ok, ich denke das reicht fürs erste

Vielen Dank nochmal
