<?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[Menüressource einbinden, Menu laden]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich versuche mich gerade an Menüs mit WinAPI, aber da ich nur die Express-Edition von MSVC++ habe, habe ich keinen eingebauten Ressourcen-Editor. Deshalb wollte ich die Menuressource von Hand erstellen und anschliessend in die EXE hineinkompilieren lassen (rc.exe ist ja vorhanden). Allerdings wird meine Ressource nicht geladen, und ich weiss nicht warum. Hier mal mein Code:</p>
<p>resource.rc:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &quot;resource.h&quot;

IDM_MENU MENU DISCARDABLE
BEGIN
	POPUP &quot;&amp;Datei&quot;
	BEGIN
		MENUITEM &quot;&amp;Speichern&quot;, IDM_SAVE
		MENUITEM SEPARATOR
		MENUITEM &quot;&amp;Beenden&quot;, IDM_QUIT
	END
END
</code></pre>
<p>resource.h:</p>
<pre><code class="language-cpp">#ifndef RESOURCE_H
#define RESOURCE_H

#define IDM_MENU 101
#define IDM_SAVE 102
#define IDM_QUIT 103

#endif
</code></pre>
<p>und schliesslich in meinem sourcecode (main.cpp):</p>
<pre><code class="language-cpp">//Fensterklasse initialisieren, registrieren usw.:
         HWND hwnd;
	MSG msg;
	WNDCLASS wndclass;
	LPCWSTR szAppName = TEXT(&quot;Template&quot;);

	wndclass.style = CS_VREDRAW | CS_HREDRAW;
	wndclass.cbClsExtra = NULL;
	wndclass.cbWndExtra = NULL;
	wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wndclass.hCursor = LoadCursorW(NULL, IDC_ARROW);
	wndclass.hIcon = LoadIconW(NULL, IDI_APPLICATION);
	wndclass.hInstance = hInstance;
	wndclass.lpfnWndProc = WndProc;
	wndclass.lpszClassName = szAppName;
	wndclass.lpszMenuName = szAppName;

	if (!RegisterClassW(&amp;wndclass))
	{
		MessageBoxW(NULL, TEXT(&quot;Fensterregistrierungsfehler&quot;), TEXT(&quot;Error&quot;), NULL);
		return EXIT_FAILURE;
	}

	hwnd = CreateWindowW(szAppName, 
			   TEXT(&quot;&quot;),
			WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT,
			CW_USEDEFAULT,
			CW_USEDEFAULT,
			CW_USEDEFAULT,
			NULL,
			NULL,
			hInstance,
			NULL);
/* SNIP */
//WndProc:
static HMENU hMenu;

	switch(message)
	{
	case WM_CREATE:
		hMenu = GetMenu(hwnd);
		if(!hMenu)
		{
			MessageBox(hwnd, TEXT(&quot;no menu&quot;),TEXT (&quot;Error&quot;),                 MB_OK|MB_ICONWARNING);
			SendMessage(hwnd, WM_CLOSE, wParam, lParam);
		}
		break;
	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDM_SAVE:
			MessageBeep(0);
			return 0;
		case IDM_QUIT:
			SendMessage(hwnd, WM_CLOSE, 0, 0);
			return 0;
		}
		break;
</code></pre>
<p>Das Problem ist, hMenu wird immer NULL, d.h. das Menü wird anscheinend nicht eingebunden. Der Ressourcen-Compiler beschwert sich nicht....<br />
Hat jemand eine Idee was ich vergessen / übersehen habe? Vielen Dank schonmal...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/219473/menüressource-einbinden-menu-laden</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Apr 2026 18:30:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219473.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 03 Aug 2008 20:43:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Menüressource einbinden, Menu laden on Sun, 03 Aug 2008 20:43:51 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>Ich versuche mich gerade an Menüs mit WinAPI, aber da ich nur die Express-Edition von MSVC++ habe, habe ich keinen eingebauten Ressourcen-Editor. Deshalb wollte ich die Menuressource von Hand erstellen und anschliessend in die EXE hineinkompilieren lassen (rc.exe ist ja vorhanden). Allerdings wird meine Ressource nicht geladen, und ich weiss nicht warum. Hier mal mein Code:</p>
<p>resource.rc:</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt;
#include &quot;resource.h&quot;

IDM_MENU MENU DISCARDABLE
BEGIN
	POPUP &quot;&amp;Datei&quot;
	BEGIN
		MENUITEM &quot;&amp;Speichern&quot;, IDM_SAVE
		MENUITEM SEPARATOR
		MENUITEM &quot;&amp;Beenden&quot;, IDM_QUIT
	END
END
</code></pre>
<p>resource.h:</p>
<pre><code class="language-cpp">#ifndef RESOURCE_H
#define RESOURCE_H

#define IDM_MENU 101
#define IDM_SAVE 102
#define IDM_QUIT 103

#endif
</code></pre>
<p>und schliesslich in meinem sourcecode (main.cpp):</p>
<pre><code class="language-cpp">//Fensterklasse initialisieren, registrieren usw.:
         HWND hwnd;
	MSG msg;
	WNDCLASS wndclass;
	LPCWSTR szAppName = TEXT(&quot;Template&quot;);

	wndclass.style = CS_VREDRAW | CS_HREDRAW;
	wndclass.cbClsExtra = NULL;
	wndclass.cbWndExtra = NULL;
	wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	wndclass.hCursor = LoadCursorW(NULL, IDC_ARROW);
	wndclass.hIcon = LoadIconW(NULL, IDI_APPLICATION);
	wndclass.hInstance = hInstance;
	wndclass.lpfnWndProc = WndProc;
	wndclass.lpszClassName = szAppName;
	wndclass.lpszMenuName = szAppName;

	if (!RegisterClassW(&amp;wndclass))
	{
		MessageBoxW(NULL, TEXT(&quot;Fensterregistrierungsfehler&quot;), TEXT(&quot;Error&quot;), NULL);
		return EXIT_FAILURE;
	}

	hwnd = CreateWindowW(szAppName, 
			   TEXT(&quot;&quot;),
			WS_OVERLAPPEDWINDOW,
			CW_USEDEFAULT,
			CW_USEDEFAULT,
			CW_USEDEFAULT,
			CW_USEDEFAULT,
			NULL,
			NULL,
			hInstance,
			NULL);
/* SNIP */
//WndProc:
static HMENU hMenu;

	switch(message)
	{
	case WM_CREATE:
		hMenu = GetMenu(hwnd);
		if(!hMenu)
		{
			MessageBox(hwnd, TEXT(&quot;no menu&quot;),TEXT (&quot;Error&quot;),                 MB_OK|MB_ICONWARNING);
			SendMessage(hwnd, WM_CLOSE, wParam, lParam);
		}
		break;
	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDM_SAVE:
			MessageBeep(0);
			return 0;
		case IDM_QUIT:
			SendMessage(hwnd, WM_CLOSE, 0, 0);
			return 0;
		}
		break;
</code></pre>
<p>Das Problem ist, hMenu wird immer NULL, d.h. das Menü wird anscheinend nicht eingebunden. Der Ressourcen-Compiler beschwert sich nicht....<br />
Hat jemand eine Idee was ich vergessen / übersehen habe? Vielen Dank schonmal...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1558672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558672</guid><dc:creator><![CDATA[Dave__R]]></dc:creator><pubDate>Sun, 03 Aug 2008 20:43:51 GMT</pubDate></item><item><title><![CDATA[Reply to Menüressource einbinden, Menu laden on Mon, 04 Aug 2008 04:21:32 GMT]]></title><description><![CDATA[<p>du musst das menü noch zuweisen:</p>
<pre><code class="language-cpp">wndclass.lpszMenuName = MAKEINTRESOURCE(IDM_MENU);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1558755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558755</guid><dc:creator><![CDATA[menü]]></dc:creator><pubDate>Mon, 04 Aug 2008 04:21:32 GMT</pubDate></item><item><title><![CDATA[Reply to Menüressource einbinden, Menu laden on Mon, 04 Aug 2008 08:47:50 GMT]]></title><description><![CDATA[<p>Ups, danke sehr! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1558844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558844</guid><dc:creator><![CDATA[Dave__R]]></dc:creator><pubDate>Mon, 04 Aug 2008 08:47:50 GMT</pubDate></item></channel></rss>