CListCtrl mit CEdit abgeleiteter Klasse editieren
-
Hallo zusammen,
Wie die Überschrift schon sagt möchte ich mit einem Steuerelement das von CEdit abgeleitet ist den Eintrag in einer von CListCtrl abgeleiteten Klasse editieren.Das Editfeld erstellt eigenständig beim Initialisieren 5 Editfelder die es darüber legt.
Wenn ich dieses Editfeld in einem Dialog instanziere funktioniert dies ohne Störungen. Wenn ich allerdings Versuche eine Instanz über das Label des CListCtrl zu legen bekomme ich den Fehler "unknown software exception 0x80000003" beim Aufrufen von Create(), obwohl ich Create() nicht überschrieben habe funktioniert es nicht.
Beim kompletten Durchsteppen im Debugger ist mir aufgefallen das beim Aufrufen von ::CreateWindowEx() dieser Fehler auftritt.Ich habe dann versuchsweise ein normales CEdit verwendet und da hat es geklappt.
Außerdem ist mir aufgefallen, daß das Window-Handle (hWnd) NULL ist, kann das vielleicht daran liegen?CIPListEdit* CIPListCtrl::EditItem(int nItem, int nSubItem) { CRect rect; int offset = 0; DWORD dwStyle = 0; CIPListEdit *lpIPListEdit = new CIPListEdit; if(!EnsureVisible(nItem, TRUE)) { return NULL; } GetSubItemRect(nItem, nSubItem, LVIR_BOUNDS, rect); // Now scroll if we need to expose the column CRect rcClient; GetClientRect(rcClient); if( offset + rect.left < 0 || offset + rect.left > rcClient.right ) { CSize size(offset + rect.left,0); Scroll(size); rect.left -= size.cx; } rect.left += offset; rect.right = rect.left + GetColumnWidth(nSubItem); if(rect.right > rcClient.right) rect.right = rcClient.right; dwStyle |= WS_BORDER | WS_CHILD | WS_VISIBLE | ES_AUTOHSCROLL; #define IDC_EDITCTRL 0x1234 lpIPListEdit->Create(dwStyle, rect, this, IDC_EDITCTRL); lpIPListEdit->SetItem(nItem, nSubItem); lpIPListEdit->SetWindowText(GetItemText(nItem, nSubItem)); return lpIPListEdit; }Wenn jemand ne Idee hat, was es sein könnte
bitte posten
-
Reagiere doch ganz normal auf LVN_BEGINLABELEDIT und besorge Dir das Edit Control mit LVM_GETEDITCONTROL (CListCtrl::GetEditControl), dann kanst Du es ganz einfach wie gewohnt subclassen!