<?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[CBitmapButton + AutoLoad funktioniert nicht - warum ?]]></title><description><![CDATA[<p>Sers Leutz ;),</p>
<p>ich hab hier n sonderbares Problem mit CBitmapButton und AutoLoad obwohl ich alles nach Buch mache bekomm ich immer wieder die selben Fehler.<br />
Ich hanb eine Dlg-Anwendung angelegt un einen Butten (IDC_BUTTON1) draufgelegt.<br />
In den Eigenschaften des Buttons hab ich Benutzerzeichnung aktiviert.<br />
Die Kontextabhängige Hilfe ist nur wegen der Bitmaps dabei die standardmäßig ins Ressourceverzeichnis kopiert werden.<br />
Ich habe eine Bitmapressource eingefügt (&quot;BUTTD&quot;).<br />
Im Konstruktor meines Dlg hab ich</p>
<pre><code class="language-cpp">private:CBitmapButton m_Bild;
</code></pre>
<p>eingefügt.<br />
In OnInitDialog habe ich</p>
<pre><code class="language-cpp">VERIFY(m_Bild.AutoLoad(IDC_BUTTON1),this);
</code></pre>
<p>eingefügt.<br />
Obwohl ich alles genau nach Buch mache bekomm ich folgende Fehlermeldungen :<br />
warning C4002: Zu viele uebergebene Parameter für das Makro 'VERIFY'<br />
error C2065: 'm_Bild' : nichtdeklarierter Bezeichner<br />
error C2228: Der linke Teil von '.AutoLoad' muss eine Klasse/Struktur/Union sein</p>
<p>Hier mal der ganze Quellcode der ...DLG.cpp:</p>
<pre><code class="language-cpp">// DLGBitmapButtonDlg.cpp : Implementierungsdatei
//

#include &quot;stdafx.h&quot;
#include &quot;DLGBitmapButton.h&quot;
#include &quot;DLGBitmapButtonDlg.h&quot;

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

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

class CAboutDlg : public CDialog
{
//*****************************************************************************************************************************
//*****************************************************************************************************************************
private:
	CBitmapButton m_Bild;
//*****************************************************************************************************************************
//*****************************************************************************************************************************
public:
	CAboutDlg();

// Dialogfelddaten
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// Vom Klassenassistenten generierte Überladungen virtueller Funktionen
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung
	//}}AFX_VIRTUAL

// Implementierung
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// Keine Nachrichten-Handler
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDLGBitmapButtonDlg Dialogfeld

CDLGBitmapButtonDlg::CDLGBitmapButtonDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CDLGBitmapButtonDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDLGBitmapButtonDlg)
		// HINWEIS: Der Klassenassistent fügt hier Member-Initialisierung ein
	//}}AFX_DATA_INIT
	// Beachten Sie, dass LoadIcon unter Win32 keinen nachfolgenden DestroyIcon-Aufruf benötigt
	m_hIcon = AfxGetApp()-&gt;LoadIcon(IDR_MAINFRAME);
}

void CDLGBitmapButtonDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDLGBitmapButtonDlg)
		// HINWEIS: Der Klassenassistent fügt an dieser Stelle DDX- und DDV-Aufrufe ein
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CDLGBitmapButtonDlg, CDialog)
	//{{AFX_MSG_MAP(CDLGBitmapButtonDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_DESTROY()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDLGBitmapButtonDlg Nachrichten-Handler

BOOL CDLGBitmapButtonDlg::OnInitDialog()
{
	CDialog::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)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		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

	// ZU ERLEDIGEN: Hier zusätzliche Initialisierung einfügen
//*****************************************************************************************************************************
//*****************************************************************************************************************************
	VERIFY(m_Bild.AutoLoad(IDC_BUTTON1),this);
//*****************************************************************************************************************************
//*****************************************************************************************************************************
	return TRUE;  // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
}

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

void CDLGBitmapButtonDlg::OnDestroy()
{
	WinHelp(0L, HELP_QUIT);
	CDialog::OnDestroy();
}

// Wollen Sie Ihrem 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 für Sie erledigt.

void CDLGBitmapButtonDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // Gerätekontext für Zeichnen

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Symbol in Client-Rechteck 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
	{
		CDialog::OnPaint();
	}
}

// Die Systemaufrufe fragen den Cursorform ab, die angezeigt werden soll, während der Benutzer
//  das zum Symbol verkleinerte Fenster mit der Maus zieht.
HCURSOR CDLGBitmapButtonDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}
</code></pre>
<p>Vielen dank für eure Mühe<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Shadoweater</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/175887/cbitmapbutton-autoload-funktioniert-nicht-warum</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 13:33:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/175887.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 15 Mar 2007 08:23:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CBitmapButton + AutoLoad funktioniert nicht - warum ? on Thu, 15 Mar 2007 08:23:19 GMT]]></title><description><![CDATA[<p>Sers Leutz ;),</p>
<p>ich hab hier n sonderbares Problem mit CBitmapButton und AutoLoad obwohl ich alles nach Buch mache bekomm ich immer wieder die selben Fehler.<br />
Ich hanb eine Dlg-Anwendung angelegt un einen Butten (IDC_BUTTON1) draufgelegt.<br />
In den Eigenschaften des Buttons hab ich Benutzerzeichnung aktiviert.<br />
Die Kontextabhängige Hilfe ist nur wegen der Bitmaps dabei die standardmäßig ins Ressourceverzeichnis kopiert werden.<br />
Ich habe eine Bitmapressource eingefügt (&quot;BUTTD&quot;).<br />
Im Konstruktor meines Dlg hab ich</p>
<pre><code class="language-cpp">private:CBitmapButton m_Bild;
</code></pre>
<p>eingefügt.<br />
In OnInitDialog habe ich</p>
<pre><code class="language-cpp">VERIFY(m_Bild.AutoLoad(IDC_BUTTON1),this);
</code></pre>
<p>eingefügt.<br />
Obwohl ich alles genau nach Buch mache bekomm ich folgende Fehlermeldungen :<br />
warning C4002: Zu viele uebergebene Parameter für das Makro 'VERIFY'<br />
error C2065: 'm_Bild' : nichtdeklarierter Bezeichner<br />
error C2228: Der linke Teil von '.AutoLoad' muss eine Klasse/Struktur/Union sein</p>
<p>Hier mal der ganze Quellcode der ...DLG.cpp:</p>
<pre><code class="language-cpp">// DLGBitmapButtonDlg.cpp : Implementierungsdatei
//

#include &quot;stdafx.h&quot;
#include &quot;DLGBitmapButton.h&quot;
#include &quot;DLGBitmapButtonDlg.h&quot;

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

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

class CAboutDlg : public CDialog
{
//*****************************************************************************************************************************
//*****************************************************************************************************************************
private:
	CBitmapButton m_Bild;
//*****************************************************************************************************************************
//*****************************************************************************************************************************
public:
	CAboutDlg();

// Dialogfelddaten
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// Vom Klassenassistenten generierte Überladungen virtueller Funktionen
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV-Unterstützung
	//}}AFX_VIRTUAL

// Implementierung
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// Keine Nachrichten-Handler
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDLGBitmapButtonDlg Dialogfeld

CDLGBitmapButtonDlg::CDLGBitmapButtonDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CDLGBitmapButtonDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDLGBitmapButtonDlg)
		// HINWEIS: Der Klassenassistent fügt hier Member-Initialisierung ein
	//}}AFX_DATA_INIT
	// Beachten Sie, dass LoadIcon unter Win32 keinen nachfolgenden DestroyIcon-Aufruf benötigt
	m_hIcon = AfxGetApp()-&gt;LoadIcon(IDR_MAINFRAME);
}

void CDLGBitmapButtonDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDLGBitmapButtonDlg)
		// HINWEIS: Der Klassenassistent fügt an dieser Stelle DDX- und DDV-Aufrufe ein
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CDLGBitmapButtonDlg, CDialog)
	//{{AFX_MSG_MAP(CDLGBitmapButtonDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_DESTROY()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDLGBitmapButtonDlg Nachrichten-Handler

BOOL CDLGBitmapButtonDlg::OnInitDialog()
{
	CDialog::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)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		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

	// ZU ERLEDIGEN: Hier zusätzliche Initialisierung einfügen
//*****************************************************************************************************************************
//*****************************************************************************************************************************
	VERIFY(m_Bild.AutoLoad(IDC_BUTTON1),this);
//*****************************************************************************************************************************
//*****************************************************************************************************************************
	return TRUE;  // Geben Sie TRUE zurück, außer ein Steuerelement soll den Fokus erhalten
}

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

void CDLGBitmapButtonDlg::OnDestroy()
{
	WinHelp(0L, HELP_QUIT);
	CDialog::OnDestroy();
}

// Wollen Sie Ihrem 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 für Sie erledigt.

void CDLGBitmapButtonDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // Gerätekontext für Zeichnen

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Symbol in Client-Rechteck 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
	{
		CDialog::OnPaint();
	}
}

// Die Systemaufrufe fragen den Cursorform ab, die angezeigt werden soll, während der Benutzer
//  das zum Symbol verkleinerte Fenster mit der Maus zieht.
HCURSOR CDLGBitmapButtonDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}
</code></pre>
<p>Vielen dank für eure Mühe<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Shadoweater</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245874</guid><dc:creator><![CDATA[ShadowEater]]></dc:creator><pubDate>Thu, 15 Mar 2007 08:23:19 GMT</pubDate></item><item><title><![CDATA[Reply to CBitmapButton + AutoLoad funktioniert nicht - warum ? on Thu, 15 Mar 2007 11:04:20 GMT]]></title><description><![CDATA[<p>Der Name der Bitmap Ressourcen, die verwendet werden sollen, muss als Button text vergeben werden.<br />
Ist der Button-Text &quot;BUTT&quot;, dann benötigst Du 4 Bitmaps:<br />
BUTTU, BUTTD, BUTTF, BUTTX!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245969</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 15 Mar 2007 11:04:20 GMT</pubDate></item><item><title><![CDATA[Reply to CBitmapButton + AutoLoad funktioniert nicht - warum ? on Thu, 15 Mar 2007 11:23:58 GMT]]></title><description><![CDATA[<p>Danke für Deine Antwort Martin ;),</p>
<p>was muss ich tun um nur eine Bmp. verwenden zu müssen ?</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
ShadowEater</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1245975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1245975</guid><dc:creator><![CDATA[ShadowEater]]></dc:creator><pubDate>Thu, 15 Mar 2007 11:23:58 GMT</pubDate></item><item><title><![CDATA[Reply to CBitmapButton + AutoLoad funktioniert nicht - warum ? on Thu, 15 Mar 2007 12:32:49 GMT]]></title><description><![CDATA[<p>Neicht Autoload verwenden sondern eben LoadBitmaps und dann eben 4 mal die gleiche angeben. Aber wie soll der User dann sehen, dass er drauf geklickt hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246022</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Thu, 15 Mar 2007 12:32:49 GMT</pubDate></item><item><title><![CDATA[Reply to CBitmapButton + AutoLoad funktioniert nicht - warum ? on Fri, 16 Mar 2007 10:42:51 GMT]]></title><description><![CDATA[<p>Danke für Deine Antwort Martin.<br />
Ich will die Bmp als Verzierung verwenden.</p>
<p>regards<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
ShadowEater</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1246549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1246549</guid><dc:creator><![CDATA[ShadowEater]]></dc:creator><pubDate>Fri, 16 Mar 2007 10:42:51 GMT</pubDate></item></channel></rss>