<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Listbox füllen, Verständniss Problem]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>Bin gerade dabei mich in c++ einzuarbeiten und noch absoluter Anfänger im Objekt orientierten Bereich(Kenne mich bisher nur mit C für Mikrokontroller aus).</p>
<p>Ich habe ein fertiges Projekt das ich erweitern möchte, dort gibt es ein Dialog mit einer Listbox in der zugehörigen Cpp datei gibt es folgenden Funktion um diese Listbox zu füllen:</p>
<pre><code class="language-cpp">void CUsbHidDemoCodeDlg::AddRecievedData(CString NewData)
{

	m_RecievedData.AddString( NewData );

	// display only last 100 messages recieved
	if(m_RecievedData.GetCount()&gt;100) {
		m_RecievedData.DeleteString(0);
	}

	// Set Focus on Last Element
	int nCount = m_RecievedData.GetCount(); 	
	if (nCount &gt; 0) m_RecievedData.SetCurSel(nCount-1);

}
</code></pre>
<p>Das funktioniert auch wunderbar, jetzt möchte aus einem anderem Modul in diese Listbox auftretene Fehler reinschreiben. Dieses andere Modul wird mit einem Button aus dem gleichen Dialog aufgerufen. Wie geht man jetzt am besten vor? Dises Listbox Element irgendwie der Funktion in dem andere Modul übergeben? Kann ich direkt auf die Listbox zugreifen?</p>
<p>Anbei noch der code, der Header Datei<br />
(KommToolDlg.h), kann man hier auch komplette Zip's hochladen, weil ich nicht genau weiß was noch wichtig ist.</p>
<pre><code class="language-cpp">// UsbHidDemoCodeDlg.h : header file
//

#if !defined(AFX_USBHIDDEMOCODEDLG_H__F9AA5915_C6E4_4CF0_95B7_2C6EB1964BAB__INCLUDED_)
#define AFX_USBHIDDEMOCODEDLG_H__F9AA5915_C6E4_4CF0_95B7_2C6EB1964BAB__INCLUDED_

#if _MSC_VER &gt; 1000
#pragma once
#endif // _MSC_VER &gt; 1000

/////////////////////////////////////////////////////////////////////////////
// CUsbHidDemoCodeDlg dialog

class CUsbHidDemoCodeDlg : public CDialog
{
// Construction
public:
	void AddRecievedData(CString NewData);

	void ConnectDevice();
	void DisableLedButton();
	void EnableLedButton();
	boolean Led1;
	boolean Led2;
	boolean Led3;
	boolean Led4;
	boolean IsConnected;
	HINSTANCE hLib;  
	int Vid;
	int Pid;

	CUsbHidDemoCodeDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	//{{AFX_DATA(CUsbHidDemoCodeDlg)
	enum { IDD = IDD_USBHIDDEMOCODE_DIALOG };
	CButton	m_FwUpgrade;
	CListBox	m_RecievedData;
	CStatic	m_Status;
	CButton	m_Led4;
	CButton	m_Led3;
	CButton	m_Led2;
	CButton	m_Led1;
	CString	m_PID;
	CString	m_VID;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CUsbHidDemoCodeDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	HICON m_hIcon;

	// Generated message map functions
	//{{AFX_MSG(CUsbHidDemoCodeDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnLed1();
	afx_msg void OnLed2();
	afx_msg void OnLed3();
	afx_msg void OnLed4();
	afx_msg void OnTimer(UINT nIDEvent);
	afx_msg void OnFwUpgrade();
	virtual void OnCancel();
	afx_msg void OnButtonVidPid();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
	BOOL OnDeviceChange(UINT nEventType, DWORD dwData);
public:
	//afx_msg void OnBnClickedMfcbutton1();
	//afx_msg void OnBnClickedStatus2();
	//afx_msg void OnBnClickedButton1();
	afx_msg void OnBnClickedButtonOpenfile();
	afx_msg void OnBnClickedButtonstartupgrade();
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_USBHIDDEMOCODEDLG_H__F9AA5915_C6E4_4CF0_95B7_2C6EB1964BAB__INCLUDED_)
</code></pre>
<p>Wünsche noch einen Abend!<br />
- Falko</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271847/listbox-füllen-verständniss-problem</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 06:10:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271847.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Aug 2010 21:34:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Listbox füllen, Verständniss Problem on Wed, 04 Aug 2010 21:34:14 GMT]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>Bin gerade dabei mich in c++ einzuarbeiten und noch absoluter Anfänger im Objekt orientierten Bereich(Kenne mich bisher nur mit C für Mikrokontroller aus).</p>
<p>Ich habe ein fertiges Projekt das ich erweitern möchte, dort gibt es ein Dialog mit einer Listbox in der zugehörigen Cpp datei gibt es folgenden Funktion um diese Listbox zu füllen:</p>
<pre><code class="language-cpp">void CUsbHidDemoCodeDlg::AddRecievedData(CString NewData)
{

	m_RecievedData.AddString( NewData );

	// display only last 100 messages recieved
	if(m_RecievedData.GetCount()&gt;100) {
		m_RecievedData.DeleteString(0);
	}

	// Set Focus on Last Element
	int nCount = m_RecievedData.GetCount(); 	
	if (nCount &gt; 0) m_RecievedData.SetCurSel(nCount-1);

}
</code></pre>
<p>Das funktioniert auch wunderbar, jetzt möchte aus einem anderem Modul in diese Listbox auftretene Fehler reinschreiben. Dieses andere Modul wird mit einem Button aus dem gleichen Dialog aufgerufen. Wie geht man jetzt am besten vor? Dises Listbox Element irgendwie der Funktion in dem andere Modul übergeben? Kann ich direkt auf die Listbox zugreifen?</p>
<p>Anbei noch der code, der Header Datei<br />
(KommToolDlg.h), kann man hier auch komplette Zip's hochladen, weil ich nicht genau weiß was noch wichtig ist.</p>
<pre><code class="language-cpp">// UsbHidDemoCodeDlg.h : header file
//

#if !defined(AFX_USBHIDDEMOCODEDLG_H__F9AA5915_C6E4_4CF0_95B7_2C6EB1964BAB__INCLUDED_)
#define AFX_USBHIDDEMOCODEDLG_H__F9AA5915_C6E4_4CF0_95B7_2C6EB1964BAB__INCLUDED_

#if _MSC_VER &gt; 1000
#pragma once
#endif // _MSC_VER &gt; 1000

/////////////////////////////////////////////////////////////////////////////
// CUsbHidDemoCodeDlg dialog

class CUsbHidDemoCodeDlg : public CDialog
{
// Construction
public:
	void AddRecievedData(CString NewData);

	void ConnectDevice();
	void DisableLedButton();
	void EnableLedButton();
	boolean Led1;
	boolean Led2;
	boolean Led3;
	boolean Led4;
	boolean IsConnected;
	HINSTANCE hLib;  
	int Vid;
	int Pid;

	CUsbHidDemoCodeDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	//{{AFX_DATA(CUsbHidDemoCodeDlg)
	enum { IDD = IDD_USBHIDDEMOCODE_DIALOG };
	CButton	m_FwUpgrade;
	CListBox	m_RecievedData;
	CStatic	m_Status;
	CButton	m_Led4;
	CButton	m_Led3;
	CButton	m_Led2;
	CButton	m_Led1;
	CString	m_PID;
	CString	m_VID;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CUsbHidDemoCodeDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	HICON m_hIcon;

	// Generated message map functions
	//{{AFX_MSG(CUsbHidDemoCodeDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnLed1();
	afx_msg void OnLed2();
	afx_msg void OnLed3();
	afx_msg void OnLed4();
	afx_msg void OnTimer(UINT nIDEvent);
	afx_msg void OnFwUpgrade();
	virtual void OnCancel();
	afx_msg void OnButtonVidPid();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
	BOOL OnDeviceChange(UINT nEventType, DWORD dwData);
public:
	//afx_msg void OnBnClickedMfcbutton1();
	//afx_msg void OnBnClickedStatus2();
	//afx_msg void OnBnClickedButton1();
	afx_msg void OnBnClickedButtonOpenfile();
	afx_msg void OnBnClickedButtonstartupgrade();
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_USBHIDDEMOCODEDLG_H__F9AA5915_C6E4_4CF0_95B7_2C6EB1964BAB__INCLUDED_)
</code></pre>
<p>Wünsche noch einen Abend!<br />
- Falko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936348</guid><dc:creator><![CDATA[spacevoyager]]></dc:creator><pubDate>Wed, 04 Aug 2010 21:34:14 GMT</pubDate></item><item><title><![CDATA[Reply to Listbox füllen, Verständniss Problem on Wed, 04 Aug 2010 22:00:34 GMT]]></title><description><![CDATA[<p>Solange ich receive nicht richtig schreiben kann, würde ich einfach deutsche Variablennamen benutzen, um mir peinliche Antworten wie meine zu ersparen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936361</guid><dc:creator><![CDATA[spatzvoyager]]></dc:creator><pubDate>Wed, 04 Aug 2010 22:00:34 GMT</pubDate></item><item><title><![CDATA[Reply to Listbox füllen, Verständniss Problem on Wed, 04 Aug 2010 22:06:15 GMT]]></title><description><![CDATA[<p>spatzvoyager schrieb:</p>
<blockquote>
<p>Solange ich receive nicht richtig schreiben kann, würde ich einfach deutsche Variablennamen benutzen, um mir peinliche Antworten wie meine zu ersparen.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /> Oh, ist mir noch gar nicht aufgefallen, aber lustig ist ja das der Code noch der original Atmel Demo Code ist...eigentlich eine amerikanische Firma <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /><br />
- Falko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936363</guid><dc:creator><![CDATA[spacevoyager]]></dc:creator><pubDate>Wed, 04 Aug 2010 22:06:15 GMT</pubDate></item><item><title><![CDATA[Reply to Listbox füllen, Verständniss Problem on Fri, 06 Aug 2010 13:50:05 GMT]]></title><description><![CDATA[<p>Da ich noch nicht wirklich weiter gekommen bin, hab ich mal versucht das Problem auf ein einfaches Beispiel zu reduzieren. Hab mit Visual Studio ein neues MFC Projekt angelegt. Eine Form hat ein Button &quot;Firmware Update&quot;. Dort soll die Funktion firmwareupdate in der FirmwareUpdate.cpp gestartet werden. Damit die Funktion Statusmeldungen direkt darstellen kann, habe ich auch eine Listbox in diese Form gesetzt. Diese (bzw. das aufrufende Objekt) soll der Funktion übergeben werden, damit diese weiß, wo die Meldungen angezeigt werden sollen. Leider bekomme ich die Fehlermeldung:</p>
<p>firmwareupdate.cpp(10): error C2027: Verwendung des undefinierten Typs<br />
&quot;CmfcTest1Dlg&quot;</p>
<p>Obwohl ich in der Header die Klasse als Prototyp deklariert habe, wenn ich statt der Prototypen Deklaration den Header der Klasse inkludiere gibt es diverse andere Fehler.. was mache ich falsch? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> Vielleicht ist mein Konzept ja voll daneben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> , würde mich freuen, wenn mich jemand in die richtig Richtung bringt.</p>
<p>Code ist wie folgt (mfcTest1Dlg.h):</p>
<pre><code class="language-cpp">// mfcTest1Dlg.h: Headerdatei
//

#pragma once
#include &quot;afxwin.h&quot;

// CmfcTest1Dlg-Dialogfeld
class CmfcTest1Dlg : public CDialogEx
{
// Konstruktion
public:
	CmfcTest1Dlg(CWnd* pParent = NULL);	// Standardkonstruktor

// Dialogfelddaten
	enum { IDD = IDD_MFCTEST1_DIALOG };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV-Unterstützung

// Implementierung
protected:
	HICON m_hIcon;

	// Generierte Funktionen für die Meldungstabellen
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnBnClickedFwupdate();
	afx_msg void OnLbnSelchangeList1();
	CListBox m_RecievedData;
};
</code></pre>
<p>Die zugehörige cpp datei:</p>
<pre><code class="language-cpp">// mfcTest1Dlg.cpp: Implementierungsdatei
//

#include &quot;stdafx.h&quot;
#include &quot;mfcTest1.h&quot;
#include &quot;mfcTest1Dlg.h&quot;
#include &quot;afxdialogex.h&quot;
#include &quot;FirmwareUpdate.h&quot;

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// CAboutDlg-Dialogfeld für Anwendungsbefehl &quot;Info&quot;

class CAboutDlg : public CDialogEx
{
public:
	CAboutDlg();

// Dialogfelddaten
	enum { IDD = IDD_ABOUTBOX };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung

// Implementierung
protected:
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()

// CmfcTest1Dlg-Dialogfeld

CmfcTest1Dlg::CmfcTest1Dlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(CmfcTest1Dlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()-&gt;LoadIcon(IDR_MAINFRAME);
}

void CmfcTest1Dlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LIST1, m_RecievedData);
}

BEGIN_MESSAGE_MAP(CmfcTest1Dlg, CDialogEx)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_FWUpdate, &amp;CmfcTest1Dlg::OnBnClickedFwupdate)
	ON_LBN_SELCHANGE(IDC_LIST1, &amp;CmfcTest1Dlg::OnLbnSelchangeList1)
END_MESSAGE_MAP()

// CmfcTest1Dlg-Meldungshandler

BOOL CmfcTest1Dlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// Hinzufügen des Menübefehls &quot;Info...&quot; zum Systemmenü.

	// IDM_ABOUTBOX muss sich im Bereich der Systembefehle befinden.
	ASSERT((IDM_ABOUTBOX &amp; 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX &lt; 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		BOOL bNameValid;
		CString strAboutMenu;
		bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
		ASSERT(bNameValid);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu-&gt;AppendMenu(MF_SEPARATOR);
			pSysMenu-&gt;AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Symbol für dieses Dialogfeld festlegen. Wird automatisch erledigt
	//  wenn das Hauptfenster der Anwendung kein Dialogfeld ist
	SetIcon(m_hIcon, TRUE);			// Großes Symbol verwenden
	SetIcon(m_hIcon, FALSE);		// Kleines Symbol verwenden

	// TODO: Hier zusätzliche Initialisierung einfügen
	   m_RecievedData.AddString( L&quot;a&quot; );

	return TRUE;  // TRUE zurückgeben, wenn der Fokus nicht auf ein Steuerelement gesetzt wird
}

void CmfcTest1Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID &amp; 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialogEx::OnSysCommand(nID, lParam);
	}
}

// Wenn Sie dem Dialogfeld eine Schaltfläche &quot;Minimieren&quot; hinzufügen, benötigen Sie
//  den nachstehenden Code, um das Symbol zu zeichnen. Für MFC-Anwendungen, die das 
//  Dokument/Ansicht-Modell verwenden, wird dies automatisch ausgeführt.

void CmfcTest1Dlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // Gerätekontext zum Zeichnen

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast&lt;WPARAM&gt;(dc.GetSafeHdc()), 0);

		// Symbol in Clientrechteck zentrieren
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&amp;rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Symbol zeichnen
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialogEx::OnPaint();
	}
}

// Die System ruft diese Funktion auf, um den Cursor abzufragen, der angezeigt wird, während der Benutzer
//  das minimierte Fenster mit der Maus zieht.
HCURSOR CmfcTest1Dlg::OnQueryDragIcon()
{
	return static_cast&lt;HCURSOR&gt;(m_hIcon);
}

void CmfcTest1Dlg::OnBnClickedFwupdate()
{
	// TODO: Fügen Sie hier Ihren Kontrollbehandlungscode für die Benachrichtigung ein.

	firmwareUpdate(this);

}
</code></pre>
<p>FirmwareUpdate.h:</p>
<pre><code class="language-cpp">#ifndef __FIRMWAREUPDATE_H_
#define __FIRMWAREUPDATE_H_
//#include &quot;mfcTest1Dlg.h&quot;

//Prototyp der Klasse
class CmfcTest1Dlg;

//Prototyp der Funktion
int firmwareUpdate(CmfcTest1Dlg * resultobjekt);

#endif
</code></pre>
<p>und die FirmwareUpdate.cpp:</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &quot;FirmwareUpdate.h&quot;

class CmfcTest1Dlg;
int firmwareUpdate(CmfcTest1Dlg * resultobjekt);

int firmwareUpdate(CmfcTest1Dlg * resultobjekt)
{
	resultobjekt-&gt;m_RecievedData.AddString( L&quot;Info: starte Firmware Update&quot; );
	return 3;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1937028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937028</guid><dc:creator><![CDATA[spacevoyager]]></dc:creator><pubDate>Fri, 06 Aug 2010 13:50:05 GMT</pubDate></item></channel></rss>