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


  • Mod

    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


  • Mod

    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?


  • Mod

    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! 🙂


Anmelden zum Antworten