Skocz do zawartości

Menu


Brzdyl

Recommended Posts

Witam.
Mam taki problem napisałem program wg kursu dotyczącego menu lecz niestety menu nie chce się wyświetlić oto program:

#include <windows.h>
#include "resource.h"
char tablica[1200];
LRESULT CALLBACK ProcOkna(HWND uchwyt, UINT komunikat, WPARAM wParam, LPARAM lParam) 

{
switch(komunikat)
{
case WM_CREATE: {
break;
       
   
}

case WM_KEYDOWN:
break;

case WM_DESTROY:
PostQuitMessage(0);




default:
return (DefWindowProc(uchwyt, komunikat, wParam, lParam));
}
return(0L);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{

WNDCLASS klasaokna;
HWND uchwyt;

klasaokna.style = CS_HREDRAW|CS_VREDRAW;
klasaokna.lpfnWndProc = ProcOkna;
klasaokna.cbClsExtra = 0;
klasaokna.cbWndExtra = 0;
klasaokna.hInstance = hInstance;
klasaokna.hIcon = NULL;
klasaokna.hCursor = LoadCursor(NULL, IDC_ARROW);
klasaokna.hbrBackground = (HBRUSH)COLOR_WINDOW;
klasaokna.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
klasaokna.lpszClassName = "mojeokno";


if(RegisterClass(&klasaokna) == 0) return false;
uchwyt = CreateWindow("mojeokno", "OKNO", WS_OVERLAPPEDWINDOW, 100, 100, 600, 500, NULL, NULL, hInstance, NULL);


if(uchwyt == NULL) return false;
ShowWindow(uchwyt, SW_SHOW);
UpdateWindow(uchwyt);
MSG komunikat;
while(GetMessage(&komunikat, NULL, 0, 0))
{
TranslateMessage(&komunikat);
DispatchMessage(&komunikat);
}
return komunikat.wParam;
}

Ktoś by mógł powiedzieć co jest źle lub gdzie tkwi przyczyna?
Z góry dzięki...
Pozdrawiam

Link do komentarza
Udostępnij na innych stronach

Móglbyś pokazać kod pliku zasobów bo to zależy od tego jak nazwaleś w zasobach sowje menu . Jezeli np wygląda to w ten sposób :


MENU MENU 
BEGIN 
         POPUP "&Plik"   
         BEGIN 
        
          MENUITEM "New" 



To wtedy w polu lpszMenuName wpisujesz nazwę menu czyli np .

wndclass.lpszMenuName = "MENU";
Link do komentarza
Udostępnij na innych stronach

na 90% mylisz nazwe zasobu. Tak dla malego sprostowania, nazwa projektu nie musi byc wcale taka sama jak pliczek z kodem w nim, bo jak sadze projekt1234.cpp to nazwa pliku z kodem. A jesli chodzi o nazwe skryptu z zasobami to jest taka jaka nadales, bo rozumiem ze jak dolaczales zasoby to najpierw utworzyles plik z rozszerzeniem *.rc, zreszta zobacz sobie w katalogu z projektem on tam musi byc. Ale plik nagłówkowy zasobow musisz zalaczac prawidlowo skoro nie zlasza kompilator zadnych bledow. Coz pokombinuj cos bo z tymi zasobami to czesto sa takie klocki. ;)

Link do komentarza
Udostępnij na innych stronach

To jest mój plik *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
//

Menu MENUEX DISCARDABLE 
BEGIN
    MENUITEM "",                            65535,
    MFT_STRING | MFT_RIGHTORDER | MFT_RIGHTJUSTIFY,MFS_ENABLED
    POPUP "aaaaaaaa",                       65535,MFT_STRING,MFS_ENABLED
    BEGIN
        MENUITEM "aaaaa",                       65535,MFT_STRING,MFS_ENABLED
        MENUITEM "bbbbbbbb",                    40003,MFT_STRING,MFS_ENABLED
    END
    POPUP "kkkkkkkkk",                      65535,MFT_STRING,MFS_ENABLED
    BEGIN
        MENUITEM ";pppppp",                     77,MFT_STRING,MFS_ENABLED
    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

Domyślam się iż nazywa się "Menu"
Ale wpisuję tak:
klasaokna.lpszMenuName = MAKEINTRESOURCE(Menu);
klasaokna.lpszMenuName = MAKEINTRESOURCE("Menu");
klasaokna.lpszMenuName = "Menu";
Niestaty nic z tego nie działa :(
Proszę o wyrozumiałość :$
Z góry thx...

Link do komentarza
Udostępnij na innych stronach

Niestety dalej nie działa... Zrobiłem wszystko tak jak w tym kodzie, a plik *.rc edytowałem notatnikiem... NIe wiem co jest grane próbowałem już na wszystkie sposoby :( Mógłby mi ktoś podać link z programem (kodem źródłowym) korzystającym z menu - wtedy bym przynajmniej wiedział że to nie ja robię coś źle
Z góry dzięki.
(sorry że Was tak męcze :) )

Link do komentarza
Udostępnij na innych stronach

Teraz to już naprawdę Cię nie rozumiem. Z Twoich postów domyślam się że jesteś głęboko początkujący. Ale nie czaję tego dlaczego pytasz o program używający menu skoro podałem Ci go juz 2 razy. Przecież to jest normalny program tyle że nie zmontowany w projekt. Mam dla Ciebie taką radę, jeśli chcesz zobaczyć że to naprawdę program to utwórz sobie nowy projekt dodaj do niego pliczek z rozszerzeniem *.c, wklej do niego ten kod, potem utwórz sobie pliczek z rozszerzeniem *.rc, wklej do niego kwałek kodu opatrzony moim komentarzem "plik z zasobami". Skompiluj i odpal. Jeśli wtedy zrozumiesz że to co podałem to program to chyba będzie Ci łatwiej zrozumieć swój błąd. Tak na marginesie to dobrze radziłbym trochę zapoznać się z jakiegoś kursu np. z: tego.

Link do komentarza
Udostępnij na innych stronach

  • 1 month later...

Witam

W swoim programie zmień linie
klasaokna.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
na
klasaokna.lpszMenuName = "Menu";

A co do przykładów to pare topików temu ktoś podawał adres serwerka ftp

host: ftp.winapi.org
Można się logować anonimowo.

Off topic:
Dzięki dobrzy ludzie za te przykłady na pewno się przydadzą.

Pozdrawiam

Link do komentarza
Udostępnij na innych stronach

Hej zmarax!!!

Szkoda, że szukasz na ftp skoro już x osób podało ci gotowy kod.

Ale jak już tak bardzo chcesz gotowy projekt to
masz:
ftp://ftp.winapi.org
W katalogu examples są przykładziki do chyba każdego z artów tej strony.

Tamten link chyba źle cię przenosił.
Jak tu nie znajdziesz to ja jestem..(nie ważne)...hyh

Pozdro ;)

Link do komentarza
Udostępnij na innych stronach

zmarax napisał:
Do RafalS: na ftp.winapi.org nie ma źródeł programów :( Proszę o podanie jakiejś strony z gotowym żródłem programu (do ściągniecia gotowych plików żróðłowych) bo nie tylko ja mam taki problem, wiele osób boryka się z tym samym...Z góry dzięki

Bo ja podałem adres ktory mozesz wpisac,gdy uzywasz klienta ftp(np Total Comander ma takowego),a codeguy podal link,z ktorego mozna sie dostac na serwerek przez przegladarke.

Dla mnie wygodniejszy jest ten pierwszy sposob.

Pozdrawiam

Link do komentarza
Udostępnij na innych stronach

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gość
Odpowiedz...

×   Wkleiłeś zawartość bez formatowania.   Usuń formatowanie

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Utwórz nowe...