API 3.díl - Resources (nejde vytvořit mainmenu) – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

API 3.díl  - Resources (nejde vytvořit mainmenu) – C / C++ – Fórum – Programujte.comAPI 3.díl - Resources (nejde vytvořit mainmenu) – C / C++ – Fórum – Programujte.com

 

Miras
~ Anonymní uživatel
9 příspěvků
25. 9. 2010   #1
-
0
-

Ahoj potřeboval bych helpnout, momentálně se učím API a vyskytl se mi jeden problém bez kterého nemuhu pokračovat.
Jedná se o to že mi nejde vytvořit MAINMENU. BuildLog hlásí chybu v souboru zdroje.rc : error: 'MAINMENU' does not name a type

Zdrojové kódy:
zdroje.rc -



#include "zdroje_private.h"
#include "afxres.h"
//**************ZDROJE***********************


MAINMENU MENU DISCARDABLE
BEGIN
POPUP "&Soubor"
BEGIN
MENUITEM "&Nový", IDM_NEW
MENUITEM "&Otevřít", IDM_OPEN
MENUITEM SEPARATOR
POPUP "Ta&jemství"
BEGIN
MENUITEM "&Tajemná truhla", IDM_SECRET
END
END
POPUP "&Ostatní"
BEGIN
MENUITEM "&Nápověda", IDM_HELP
MENUITEM "&Konec", IDM_CLOSE
MENUITEM SEPARATOR
MENUITEM "&O Aplikaci", IDM_ABOUT
END
END

IDI_ICON ICON DISCARDABLE "grafika/ikona.ico"
IDC_CURSOR CURSOR DISCARDABLE "grafika/kur.cur"


zdroje_private.h -


#define IDI_ICON 101
#define IDC_CURSOR 102
#define IDM_NEW 40001
#define IDM_OPEN 40002
#define IDM_SECRET 40003
#define IDM_HELP 40004
#define IDM_CLOSE 40005
#define IDM_ABOUT 40006


main.cpp


#include <windows.h>
#include <iostream>
#include <string>
#include <cctype>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <time.h>
#include <math.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <winuser.h>
#include <clocale>
#include <locale.h>
#include <ctype.h>
#include <Vfw.h>
#include <conio.h>
#include <Lmcons.h>
#include "zdroje_private.h"
#include "zdroje.rc"
using namespace std;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
{
TCHAR szAppName[] = TEXT("Nazdárek celičkej světe:-)");
HWND hWnd;
MSG msg;
WNDCLASSEX wc;

wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON));
wc.hIconSm = NULL;
wc.hCursor = LoadCursor(hInstance,MAKEINTRESOURCE(IDC_CURSOR));
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wc.lpszMenuName = "MAINMENU";
wc.lpszClassName = szAppName;

RegisterClassEx(&wc);

hWnd = CreateWindowEx(0,szAppName,
szAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
800,
650,
NULL,
NULL,
hInstance,NULL);
ShowWindow(hWnd, iCmdShow);
UpdateWindow(hWnd);

while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;


}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, message, wParam, lParam);
}




Opravdu potřebuji help. Pomůže někdo?

Nahlásit jako SPAM
IP: 78.80.70.–
liborb
~ Redaktor
+18
Guru
25. 9. 2010   #2
-
0
-

Nemáš definován MAINMENU v zdroje_private.h. Je to stejné jako třeba s ikonou, takže "nějaké číslo" a pak v kódu místo "MAINMENU" použiješ MAKEINTRESOURCE(MAINMENU).

Nahlásit jako SPAM
IP: 195.189.142.–
liborb
~ Redaktor
+18
Guru
25. 9. 2010   #3
-
0
-

Nemáš definován MAINMENU v zdroje_private.h. Je to stejné jako třeba s ikonou, takže "nějaké číslo" a pak v kódu místo "MAINMENU" použiješ MAKEINTRESOURCE(MAINMENU).

Nahlásit jako SPAM
IP: 195.189.142.–
liborb
~ Redaktor
+18
Guru
25. 9. 2010   #4
-
0
-
Nahlásit jako SPAM
IP: 195.189.142.–
Miras
~ Anonymní uživatel
9 příspěvků
25. 9. 2010   #5
-
0
-

Takže přidal jsem

#define MAINMENU 4025

do zdroje_private.h

a upravil jsem main.cpp

místo
wc.lpszMenuName = "MAINMENU"


jsem dal toto
wc.lpszMenuName = MAKEINTRESOURCE(MAINMENU);



Ale stejně mi to nefunguje. Teď to hlásí jinou chybu ve zdroje.rc
error: expected unqualified-id before numeric constant

Nahlásit jako SPAM
IP: 78.80.70.–
liborb
~ Redaktor
+18
Guru
25. 9. 2010   #6
-
0
-

Problém .rc souborů je v tom, že se v nich blbě hledají chyby. Stačí jeden překlep, který není na první pohled vidět a máš "celé odpoledne co dělat". To menu vypadá dobře, teda alespoň z mého mobilního pohledu :), tak můžeš zkusit vše v .rc zakomentovat a mělo by to jít přeložit. Následně postupně po částech odkomentovat a zjistit, co se mu to přesně nelíbí.

Nahlásit jako SPAM
IP: 195.189.142.–
Míra
~ Anonymní uživatel
54 příspěvků
25. 9. 2010   #7
-
0
-

Furt se mu nelíbí žádek s MAINMENU.
Když mam někde chybu tak to většinou dělám tak , že určitou sekci smažu a napíšu znovu, bohužel API zatím v krvi nemám. Nemohl by jsi mi jako profík napsat celej *.rc znovu, podle sebe?

Nahlásit jako SPAM
IP: 78.80.70.–
Míra
~ Anonymní uživatel
54 příspěvků
25. 9. 2010   #8
-
0
-

Zjistil jsem novinku !
Takle vypadá původní kód *.rc. Překladač hlásí chybu v řádku s "MAINMENU MENU DISCARDABLE"

#include "zdroje_private.h"

#include "afxres.h"
//**************ZDROJE***********************



MAINMENU MENU DISCARDABLE
BEGIN
POPUP "&Soubor"
BEGIN
MENUITEM "&Nový", IDM_NEW
MENUITEM "&Otevřít", IDM_OPEN
MENUITEM SEPARATOR
POPUP "Ta&jemství"
BEGIN
MENUITEM "&Tajemná truhla", IDM_SECRET
END
END
POPUP "&Ostatní"
BEGIN
MENUITEM "&Nápověda", IDM_HELP
MENUITEM "&Konec", IDM_CLOSE
MENUITEM SEPARATOR
MENUITEM "&O Aplikaci", IDM_ABOUT
END
END


IDI_ICON ICON DISCARDABLE "grafika/ikona.ico"
IDC_CURSOR CURSOR DISCARDABLE "grafika/kur.cur"



Ale, když kód upravím takhle:



#include "zdroje_private.h"
#include "afxres.h"
//**************ZDROJE***********************

IDI_ICON ICON DISCARDABLE "grafika/ikona.ico"
IDC_CURSOR CURSOR DISCARDABLE "grafika/kur.cur"

MAINMENU MENU DISCARDABLE
BEGIN
POPUP "&Soubor"
BEGIN
MENUITEM "&Nový", IDM_NEW
MENUITEM "&Otevřít", IDM_OPEN
MENUITEM SEPARATOR
POPUP "Ta&jemství"
BEGIN
MENUITEM "&Tajemná truhla", IDM_SECRET
END
END
POPUP "&Ostatní"
BEGIN
MENUITEM "&Nápověda", IDM_HELP
MENUITEM "&Konec", IDM_CLOSE
MENUITEM SEPARATOR
MENUITEM "&O Aplikaci", IDM_ABOUT
END
END




Tak to hlásí chybu v řádku "IDI_ICON ICON DISCARDABLE "grafika/ikona.ico""
To by mělo znamet že nei chyba někde v syntaxi MAINMENU ale bude to něco "nahoře"

Nahlásit jako SPAM
IP: 78.80.70.–
liborb
~ Redaktor
+18
Guru
25. 9. 2010   #9
-
0
-

To je to, co jsem ti psal, že chyba se hledá blbě :). Ještě jednou jsem se podíval na ten zdroják, protože "nahoře" už jsou jenom include, a koukám, že v main.cpp máš include toho .rc souboru - rc se "jenom" přidávají do projektu a nikam se neincludují.

Nahlásit jako SPAM
IP: 195.189.142.–
liborb
~ Redaktor
+18
Guru
25. 9. 2010   #10
-
0
-

To je to, co jsem ti psal, že chyba se hledá blbě :). Ještě jednou jsem se podíval na ten zdroják, protože "nahoře" už jsou jenom include, a koukám, že v main.cpp máš include toho .rc souboru - rc se "jenom" přidávají do projektu a nikam se neincludují.

Nahlásit jako SPAM
IP: 195.189.142.–
Míra
~ Anonymní uživatel
54 příspěvků
25. 9. 2010   #11
-
0
-

Seš borec !!!
Odstranil jsem v main.cpp
#include "zdroje.rc"

A už to fuguje.
Díky moc

Nahlásit jako SPAM
IP: 78.80.70.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý