Extended ComboBox mit Strings füllen
-
Das ist falsch: "CComboBoxEx unterstützt AddString nicht"
class CComboBoxEx : public CComboBox
Und deshalb hat CComboBoxEx eine Methode AddString.
Vs2010 bietet diese auch in der Vervollständigung an.
-
Nur zur Ergänzung von wem alles CComboBoxEx erbt:
Base Class Members
CObject Members
CCmdTarget Members
CWnd Members
CComboBox Members
Quelle MSDN
-
@noergel
schaust du die definition von CComboboxEx an
class CComboBoxEx : public CComboBox { DECLARE_DYNAMIC(CComboBoxEx) // Constructors public: CComboBoxEx(); // Generic creator virtual BOOL Create(_In_ DWORD dwStyle, _In_ const RECT& rect, _In_ CWnd* pParentWnd, _In_ UINT nID); // Generic creator allowing extended style bits virtual BOOL CreateEx(_In_ DWORD dwExStyle, _In_ DWORD dwStyle, _In_ const RECT& rect, _In_ CWnd* pParentWnd, _In_ UINT nID); // Operations using CComboBox::DeleteItem; int DeleteItem(_In_ int iIndex); BOOL GetItem(_Out_ COMBOBOXEXITEM* pCBItem); int InsertItem(_In_ const COMBOBOXEXITEM* pCBItem); BOOL SetItem(_In_ const COMBOBOXEXITEM* pCBItem); // Attributes BOOL HasEditChanged(); DWORD GetExtendedStyle() const; DWORD SetExtendedStyle(_In_ DWORD dwExMask, _In_ DWORD dwExStyles); CEdit* GetEditCtrl() const; CComboBox* GetComboBoxCtrl() const; CImageList* GetImageList() const; CImageList* SetImageList(_In_ CImageList* pImageList); #if (_WIN32_WINNT >= 0x0501) AFX_ANSI_DEPRECATED HRESULT SetWindowTheme(_In_z_ LPCWSTR pszSubAppName); #endif // These functions are supported by the Windows ComboBox control, // but not supported by the Windows ComboBoxEx control. int Dir(_In_ UINT attr, _In_z_ LPCTSTR lpszWildCard); int FindString(_In_ int nIndexStart, _In_z_ LPCTSTR lpszFind) const; int AddString(_In_z_ LPCTSTR lpszString); BOOL SetEditSel(_In_ int nStartChar, _In_ int nEndChar); int InsertString(_In_ int nIndex, _In_z_ LPCTSTR lpszString); // Implementation public: virtual ~CComboBoxEx(); };
und wie kann man da lesen
// These functions are supported by the Windows ComboBox control,
// but not supported by the Windows ComboBoxEx control.was soviel bedeutet wie das es nicht unterstützt wird???????
soviel zum erben von klassen
also ist dann nur die Möglichkeit mit InsertItem los zu machen, wobei wenn man das öfters braucht, kann man natürlich anpassen mit einer eigenen Funtion die dann auch nur den string als übergabe braucht
@TE
aber warum reicht dir nicht ein einfaches CComboBox?
-
Stimmt. Ich lag falsch.
Habe den Remark nicht gelesen.
http://msdn.microsoft.com/de-de/library/x9y44b47%28v=vs.80%29.aspx
-
Wie wäre es mit Doku lesen?
1. EIn ASSERT ist kein Absturz sondern eine Warnung das Du etwas nihct korrekt benutzt.
2. CComboBoxEx unterstützt AddString nicht.
Siehe auch Doku im MFC Source Code knapp über Deiner Assert Stelle.
3. InsertItem muss eine gültige Struktur übergeben werden.
Warum machst Du es nicht wie es Source702 Dir scon geschrieben hat?
-
Oh, ja. Hat funktioniert! Vielen Dank.
Wie gesagt, würde mich noch als Anfänger beschreiben - verstehe auch nicht alles auf Anhieb..
Ich möchte jetzt ja wie beschrieben um die 6 - in diesem Fall jetzt Items - einfügen, wie mache ich das am besten, ohne dass ich immer wieder den Code wiederholen muss? Die Länge des Strings kann ich ja einmal auf 20 packen und muss dann nur aufpassen, dass der String diese Länge nicht überschreitet.Eine weitere Frage: Wie kann ich die ComboBox von Anfang größer machen? So ist es doch schon etwas lästig...
http://img195.imageshack.us/img195/8620/eyyo.png
-
Du basut eine Schleife über einen Array von Strings oder oder oder
-
Ja, da bin ich auch drauf gekommen. Wie sieht es mit meinem Problem mit der Größer/dargestellten Länge der ComboBox aus?
-
Hast Du as COntrol selbst erzeugt? Bei einer COmbobox muss man das COntrol in der Größe erzeugen, die die Dropdown Box haben soll.
Wenn Du es über den Ressourceneditor gemacht hast. Klick auf den Dropdown Schalter und die die Box auf die Größe, die Du möchtest.
-
Ah super!
Das war's dann erst mal.
Vielen Dank für die freundliche Hilfe!