Savant Napisano Sierpień 3, 2018 Autor Zgłoś Udostępnij Napisano Sierpień 3, 2018 Mam problem z menu w programiku ktory tworze w VC++. Tworze sobie menu tak jak jest to pokazane w książce Petzold'a Programnomwanie Windows - program sie kompiluje ale wyswietla mi sie samo okno bez menu... menu zapisuje sobie w pliku zasobow...potem przy wywolaniu CreateWindow jako dziewiaty argument podaje MAKEINTRESOURCE(id_mojego menu) ale to i tak jest zle!! :( Próbowalem tez z szMenuName oraz pobierajac uchwyt menu ... niestety to samo... gdy kompiluje przykladowe programy sciagniete z sieci robi sie to samo... czy jest to wina zlych ustawien kompilatora... uzywam Visual C++ 6.0 i Borland Builder C++ 6.0 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Aspect Napisano Sierpień 3, 2018 Zgłoś Udostępnij Napisano Sierpień 3, 2018 A weź sobie spróbuj w Visualu utworzyc nowy projekt (Win32 Application), tylko nie pusty, ale zeby to bylo "Typical "Hello World" Project" dla VC++ 6.0, lub nie "Empty Project" dla VC++ .NET . One maja już szkielet gotowej aplikacji razem z menu. Możesz też wkleić tu kod swojego programu - może problem polega na czym innym. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Savant Napisano Sierpień 3, 2018 Autor Zgłoś Udostępnij Napisano Sierpień 3, 2018 A weź sobie spróbuj w Visualu utworzyc nowy projekt (Win32 Application), tylko nie pusty, ale zeby to bylo "Typical "Hello World" Project" dla VC++ 6.0, lub nie "Empty Project" dla VC++ .NET . One maja już szkielet gotowej aplikacji razem z menu. Możesz też wkleić tu kod swojego programu - może problem polega na czym innym. tak , w ten sposob dziala!!! Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Generał Napisano Sierpień 3, 2018 Zgłoś Udostępnij Napisano Sierpień 3, 2018 Spróbuj tak: HMENU hMenu = LoadMenu(hInstance,MAKEINTRESOURCE(IDR_MENU1)); i jako 9 parametr podaj hMenu. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Savant Napisano Sierpień 4, 2018 Autor Zgłoś Udostępnij Napisano Sierpień 4, 2018 Spróbuj tak: Kod: HMENU hMenu = LoadMenu(hInstance,MAKEINTRESOURCE(IDR_MENU1)); i jako 9 parametr podaj hMenu. Niestety tez nie dziala!!! Moze to wina tego ze pracuje na WinXp?? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Aspect Napisano Sierpień 4, 2018 Zgłoś Udostępnij Napisano Sierpień 4, 2018 Najzabawniejsze jest to, ze ptaku wysłał mi wczoraj (no właściwie to już dzisiaj bo ok 2:00) ten kod, ja go wkleiłem do siebie i niby jest wszystko dobrze, ale menu sie nie wyswietla. Pewno jest jakiś mały błąd, i trzeba się dokładnie wgłębić w kod. ptaku wklej tutaj ten kod może inni coś znajdą (ja niestety wiadomość od Ciebie skasowałem (ale nei wiem jakim cudem) bo dziś już jej nie mam, w związku z czym nie mam też tego kodu i nie moge wkleić). Ps. To na pewnio nie jest wina tego, że masz WinXP. Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Savant Napisano Sierpień 4, 2018 Autor Zgłoś Udostępnij Napisano Sierpień 4, 2018 oto pliki zrodlowe: menu.cpp #include<windows.h> #include"resource.h" LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; TCHAR szAppName[] = TEXT ("Program z Menu") ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { HWND hwnd ; MSG msg ; WNDCLASS wndclass ; //HMENU hMenu; wndclass.style = CS_HREDRAW | CS_VREDRAW ; wndclass.lpfnWndProc = WndProc ; wndclass.cbClsExtra = 0 ; wndclass.cbWndExtra = 0 ; wndclass.hInstance = hInstance ; wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ; wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ; wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; wndclass.lpszMenuName = MAKEINTRESOURCE(101); wndclass.lpszClassName = szAppName ; if (!RegisterClass (&wndclass)) { MessageBox (NULL, TEXT ("Program wymaga Windows NT!"), szAppName, MB_ICONERROR) ; return 0 ; } //hMenu = LoadMenu(hInstance,"IDM_MENU"); //lub MAKEINTRESOURCE(101) hwnd = CreateWindow (szAppName, TEXT ("Program wyświetlający menu"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 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_COMMAND: //TUTAJ BEDA ZNAJDOWALY SIE INSTRUKCJE ODNOSNIE POL MENU return 0; case WM_DESTROY: PostQuitMessage (0) ; return 0 ; } return DefWindowProc (hwnd, message, wParam, lParam) ; } resource.h: //{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by zasoby.rc // #define IDM_MENU 101 #define IDM_OTWORZ_PLIK 40001 #define IDM_SPAKUJ 40002 #define IDM_ROZPAKUJ 40003 #define IDM_USTAWIENIA 40004 #define IDM_WLASCIWOSCI 40005 #define IDM_KONIEC 40006 #define IDM_KOPIUJ 40007 #define IDM_WYTNIJ 40008 #define IDM_WKLEJ 40009 #define IDM_POLSKI 40011 #define IDM_ANGIELSKI 40012 #define IDM_INFO 40013 #define IDM_ABOUT 40014 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 102 #define _APS_NEXT_COMMAND_VALUE 40015 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif zasoby.rc //Microsoft Developer Studio generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Polish resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_PLK) #ifdef _WIN32 LANGUAGE LANG_POLISH, SUBLANG_DEFAULT #pragma code_page(1250) #endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Menu // IDM_MENU MENU DISCARDABLE BEGIN POPUP "&Akcja" BEGIN MENUITEM "&Otwórz Plik ...", IDM_OTWORZ_PLIK MENUITEM "&Spakuj", IDM_SPAKUJ MENUITEM "&Rozpakuj", IDM_ROZPAKUJ MENUITEM SEPARATOR MENUITEM "&Ustawienia", IDM_USTAWIENIA MENUITEM "&Właściwości Pliku ...", IDM_WLASCIWOSCI MENUITEM SEPARATOR MENUITEM "&Koniec", IDM_KONIEC END POPUP "&Edycja" BEGIN MENUITEM "&Kopiuj", IDM_KOPIUJ MENUITEM "&Wytnij", IDM_WYTNIJ MENUITEM "&Wklej", IDM_WKLEJ END POPUP "&Pomoc" BEGIN POPUP "&Język Programu" BEGIN MENUITEM "&Polski", IDM_POLSKI, CHECKED MENUITEM "&Angielski", IDM_ANGIELSKI END MENUITEM "&Informacje o Autorze", IDM_INFO MENUITEM "&About ...", IDM_ABOUT END END #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END 2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED #endif // Polish resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Jarema Napisano Sierpień 4, 2018 Zgłoś Udostępnij Napisano Sierpień 4, 2018 Ja skopiowalem to do siebie, odpalilem i wszystko jest w porzadku. Program sie odpala i pokazuje menu. Wszystko jest OK. Moze pomyliles cos przy tworzeniu projektu. Ja tez uzywam XP. Ja bym nie szukal bledow w kodzie, a w projekcie. Bez tej linijki tez bedzie dzialac: // hMenu = LoadMenu(hInstance, "IDM_MENU"); Mozesz rowniez zamiast linijki: wndclass.lpszMenuName = MAKEINTRESOURCE(101); wspisać: wndclass.lpszMenuName = (LPCSTR)IDM_MENU; good luck! Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.