dawid Temat założony przez niniejszego użytkownika |
[C++] Tworzenie menu » 2013-12-18 20:18:14 Cześć, mam taki kod(w pliku okienko.cpp) #include <windows.h> #include "menu.h"
LPSTR NazwaKlasy = "Klasa Okienka"; MSG Komunikat; HWND g_hPrzycisk;
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam );
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { WNDCLASSEX wc; wc.cbSize = sizeof( WNDCLASSEX ); wc.style = 0; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 ); wc.lpszMenuName = NULL; wc.lpszClassName = NazwaKlasy; wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION ); if( !RegisterClassEx( & wc ) ) { MessageBox( NULL, "Wysoka Komisja odmawia rejestracji tego okna!", "Niestety...", MB_ICONEXCLAMATION | MB_OK ); return 1; } HWND hwnd; hwnd = CreateWindowEx( WS_EX_CLIENTEDGE, NazwaKlasy, "Oto okienko", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL ); g_hPrzycisk = CreateWindowEx( 0, "BUTTON", "Nasz przycisk", WS_CHILD | WS_VISIBLE, 100, 100, 150, 30, hwnd, NULL, hInstance, NULL ); if( hwnd == NULL ) { MessageBox( NULL, "Okno odmówi³o przyjœcia na œwiat!", "Ale kicha...", MB_ICONEXCLAMATION ); return 1; } ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd ); while( GetMessage( & Komunikat, NULL, 0, 0 ) ) { TranslateMessage( & Komunikat ); DispatchMessage( & Komunikat ); } return Komunikat.wParam; }
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_CLOSE: DestroyWindow( hwnd ); break; case WM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hwnd, msg, wParam, lParam ); } return 0; }
I w pliku menu.h tak: #ifndef ID_MENU #define ID_MENU 200 #define ID_1 201 #define ID_2 202 #define ID_3 203 200 MENU { POPUP "Plik" { MENUITEM "Plik", 201 MENUITEM "Edycja", 202 MENUITEM "Pomoc", 203 } } #endif
I gdy chcę skompilować w pliku okienko.cpp przenosi mnie do pliku menu.h zaznaczając linijkę [code[200 MENU[/code] jako błąd. I w logach tak: Compiling: C:\Users\Dawid\Desktop\C++\Okienko\okienko.cpp In file included from C:\Users\Dawid\Desktop\C++\Okienko\okienko.cpp:2:0: C:\Users\Dawid\Desktop\C++\Okienko\menu.h:6:1: error: expected unqualified-id before numeric constant 200 MENU ^ Process terminated with status 1 (0 minutes, 0 seconds) 1 errors, 0 warnings
Tak to wygląda na screenie: http://iv.pl/images/82730133936754345479.pngMoże mi ktoś pomóc w rozwiązaniu tego problemu? |
|
pekfos |
» 2013-12-18 20:47:53 Nie możesz tak dołączyć skryptu zasobów. |
|
dawid Temat założony przez niniejszego użytkownika |
» 2013-12-19 10:38:21 Tzn? A jak mogę? |
|
Adik80 |
» 2013-12-19 10:58:48 |
|
dawid Temat założony przez niniejszego użytkownika |
» 2013-12-19 16:57:31 Ale ja używam Code::Blocks a nie Visual Basic. |
|
Monika90 |
» 2013-12-19 20:05:54 Definicje zasobów umieść w pliku *.rc |
|
dawid Temat założony przez niniejszego użytkownika |
» 2013-12-19 21:47:58 Mam w pliku .rc. Już nawet zmieniłem z C::B na Dev-C++(lepiej nawiasem mówiąc mi się na nim cokolwiek robi). Nic to nie działa. Plik mam dołączony do projektu, dodaję go za pomocą dyrektywy poprawnie, pojawiają się tylko błędy: Kompilator: MinGW GCC 4.7.2 32-bit Release Building Makefile "C:\Users\Dawid\Desktop\C++\Projekty\Makefile.win" Wykonywanie make... mingw32-make.exe -f "C:\Users\Dawid\Desktop\C++\Projekty\Makefile.win" all g++.exe -c program.cpp -o program.o -I"C:/Program Files (x86)/Dev-Cpp/MinGW32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW32/lib/gcc/mingw32/4.7.2/include/c++" -g3
In file included from program.cpp:2:0: menu.rc:1:1: error: expected unqualified-id before numeric constant
C:\Users\Dawid\Desktop\C++\Projekty\Makefile.win:29: recipe for target 'program.o' failed mingw32-make.exe: *** [program.o] Error 1
Compilation failed after 0,48 seconds with errors
A plik menu.rc wygląda tak: 200 MENU { POPUP "&Plik" { MENUITEM "&Nowy", 100 MENUITEM "&Otwórz", 101 MENUITEM "&Zapisz", 102 MENUITEM SEPARATOR POPUP "&Importuj" { MENUITEM "&Tekst", 103 POPUP "O&braz" { MENUITEM "Bit&mapa", 104 MENUITEM "&JPEG", 105 } } MENUITEM SEPARATOR MENUITEM "&Koniec", 106 } MENUITEM "&Edycja", 108 }
|
|
Monika90 |
» 2013-12-19 21:53:13 Plików rc nie dołącza sie za pomocą dyrektywy include (ani w żaden inny sposób) do plików cpp. Pliki rc kompiluje się osobno za pomocą kompilatora zasobów, a nie kompilatora C++. |
|
« 1 » 2 |