Witam zrobiłem sobie menu ale nie wiem jak dodać funkcje żeby po kliknięciu np. “Koniec” wychodziło się z programu.
Moze “return 0;”? jesli to jest w switchu to
break;
return 0;
O ile ofc chodzi o WinAPI… Zmień tytuł na bardziej konkretny.
Dla mnie to janse:P
Tak WinAPI Tu Screen Menu
Właśnieo te Menu mi chodzi. mam Menu ale nic nie daje po kliknięciu i chce żeby ktoś mi wytłumaczył gdzie i co wkleić do kodu
Ehkm
Udało się!
Wystarczyło wkleić w “zdarzeniach” ten kod:
case WM_COMMAND:
{
if(LOWORD(wParam) == /*ID Menu np*/ 105)
{
//Treść np ten komunikat
MessageBox (NULL, "To jest komunikat", "Okno komunikatu", MB_OK | MB_ICONINFORMATION);
}
}
break;
@Edit2 Mam jeszcze jedenproblem zrobiłem kontrolke za pomącą tej funkcji
g_hWyjdz = CreateWindowEx(0, "BUTTON", "WYJDZ", WS_CHILD | WS_VISIBLE, 200, 200, 150, 30, hOkno, NULL, hInstance, NULL);
i nie umiem dodać jej zadaia chodzi żeby po kliknięciu np. wyswiętlił się komunikat
a tak tworzysz button:
hButton=CreateWindowEx(0,WC_BUTTON,“O programie”,WS_CHILD|WS_VISIBLE,400,10,90,25,hwnd,(HMENU)1,*hInst,0);
tak :
MessageBox(hwnd, "bleble","Komunikat", MB_ICONINFORMATION);
przykład użycia :
.......
case WM_COMMAND:
switch(LOWORD(wPar))
{
case 1:
MessageBox(hwnd, "bleble","Komunikat", MB_ICONINFORMATION);
break:
}
break;
......
@UP Wilekie dzięki tylko że jak klikam na jedną czy tam na drogą kontrolke to wyskakuje ten sam komunikat.
hButton=CreateWindowEx(0,WC_BUTTON,“O programie”,WS_CHILD|WS_VISIBLE,400,10,90,25,hwnd,(HMENU)1,*hInst,0);
case 1://ta jedynka pochodzi z tąd (HMENU)1 więc drugi button powinien mieć (HMENU)2
i w tedy
case WM_COMMAND:
switch(LOWORD(wPar))
{
case 1:
MessageBox(hwnd, "Naciśnięto button 1","Komunikat", MB_ICONINFORMATION);
break:
case 2:
MessageBox(hwnd, "Naciśnięto button 2","Komunikat", MB_ICONINFORMATION);
break;
}
break;
nadal mi nie działa ;/
tu jest całymój kod żródwowy zrób tak żeby działało
#include
#define WIN32_LEAN_AND_MEAN
#include
// nazwa klasy okna
std::string g_strKlasaOkna = "od0dogk_Window";
// --- procedura zdarzeniowa okna ---
LRESULT CALLBACK WindowEventProc(HWND hWindow, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_COMMAND:
{
if(LOWORD(wParam) == /*ID Menu np*/ 101)
{
MessageBox (NULL, "To jest komunikat", "Okno komunikatu", MB_OK | MB_ICONINFORMATION);
}}{
if(LOWORD(wParam) == /*ID Menu np*/ 102)
{
MessageBox (NULL, "To jest komunikat", "Okno komunikatu", MB_OK | MB_ICONINFORMATION);
}}{
if(LOWORD(wParam) == /*ID Menu np*/ 103)
{
MessageBox (NULL, "To jest komunikat", "Okno komunikatu", MB_OK | MB_ICONINFORMATION);
}}{
if(LOWORD(wParam) == /*ID Menu np*/ 104)
{
MessageBox (NULL, "To jest komunikat", "Okno komunikatu", MB_OK | MB_ICONINFORMATION);
}}{
if(LOWORD(wParam) == /*ID Menu np*/ 105)
{
MessageBox (NULL, "To jest komunikat", "Okno komunikatu", MB_OK | MB_ICONINFORMATION);
}}{
if(LOWORD(wParam) == /*ID Menu np*/ 106)
{
MessageBox (NULL, "To jest komunikat", "Okno komunikatu", MB_OK | MB_ICONINFORMATION);
}}
break;
case WM_DESTROY:
// kończymy program
PostQuitMessage (0);
return 0;
}
return DefWindowProc(hWindow, uMsg, wParam, lParam);
}
HWND g_hGraj;
HWND g_hWyjdz;
// --- funkcja WinMain() ---
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow)
{
WNDCLASSEX KlasaOkna;
HBITMAP hBitmapa;
HBRUSH hbrPedzelOkna;
// tworzymy pędzel wypełnienia okna
hBitmapa = (HBITMAP) LoadImage(NULL, "C:\\Degrentes\\Games\\Gangsta Paradise\\Menu\\pattern.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
hbrPedzelOkna = CreatePatternBrush(hBitmapa);
// wypełniamy strukturę WNDCLASSEX
ZeroMemory (&KlasaOkna, sizeof(WNDCLASSEX));
KlasaOkna.cbSize = sizeof(WNDCLASSEX);
KlasaOkna.hInstance = hInstance;
KlasaOkna.lpfnWndProc = WindowEventProc;
KlasaOkna.lpszClassName = g_strKlasaOkna.c_str();
KlasaOkna.hCursor = LoadCursor(hInstance,"KURSOREK");
KlasaOkna.hIcon = LoadIcon(hInstance, "IKONAA");
KlasaOkna.hbrBackground = hbrPedzelOkna; // przypisujemy swój pędzel
// rejestrujemy klasę okna
RegisterClassEx (&KlasaOkna);
HMENU hMenu; // uchwyt naszego menu
hMenu = LoadMenu( hInstance, MAKEINTRESOURCE(200));
//Obrazki Przy Górnym Menu
//Muszą mnieć 13x13 px
HBITMAP hbmmenu1 = (HBITMAP)LoadImage(hInstance, "C:\\Degrentes\\Games\\Gangsta Paradise\\Menu\\menu1.bmp", //Obrazek
IMAGE_BITMAP, 0,0, LR_LOADFROMFILE|LR_LOADTRANSPARENT); //Nowa Gra
SetMenuItemBitmaps(hMenu, 100, MF_BYCOMMAND, hbmmenu1, hbmmenu1); //
HBITMAP hbmmenu2 = (HBITMAP)LoadImage(hInstance, "C:\\Degrentes\\Games\\Gangsta Paradise\\Menu\\menu2.bmp", //Obrazek
IMAGE_BITMAP, 0,0, LR_LOADFROMFILE|LR_LOADTRANSPARENT); //Koniec Grfy
SetMenuItemBitmaps(hMenu, 101, MF_BYCOMMAND, hbmmenu2, hbmmenu2); //
HBITMAP hbmmenu3 = (HBITMAP)LoadImage(hInstance, "C:\\Degrentes\\Games\\Gangsta Paradise\\Menu\\menu3.bmp", //Obrazek
IMAGE_BITMAP, 0,0, LR_LOADFROMFILE|LR_LOADTRANSPARENT); // Pauza
SetMenuItemBitmaps(hMenu, 102, MF_BYCOMMAND, hbmmenu3, hbmmenu3); //
HBITMAP hbmmenu4 = (HBITMAP)LoadImage(hInstance, "C:\\Degrentes\\Games\\Gangsta Paradise\\Menu\\menu4.bmp", //Obrazek
IMAGE_BITMAP, 0,0, LR_LOADFROMFILE|LR_LOADTRANSPARENT); //Zapisz
SetMenuItemBitmaps(hMenu, 103, MF_BYCOMMAND, hbmmenu4, hbmmenu4); //
HBITMAP hbmmenu5 = (HBITMAP)LoadImage(hInstance, "C:\\Degrentes\\Games\\Gangsta Paradise\\Menu\\menu5.bmp", //Obrazek
IMAGE_BITMAP, 0,0, LR_LOADFROMFILE|LR_LOADTRANSPARENT); //Wyczytaj
SetMenuItemBitmaps(hMenu, 104, MF_BYCOMMAND, hbmmenu5, hbmmenu5); //
HBITMAP hbmmenu6 = (HBITMAP)LoadImage(hInstance, "C:\\Degrentes\\Games\\Gangsta Paradise\\Menu\\menu6.bmp", //Obrazek
IMAGE_BITMAP, 0,0, LR_LOADFROMFILE|LR_LOADTRANSPARENT); //Cały Ekran
SetMenuItemBitmaps(hMenu, 105, MF_BYCOMMAND, hbmmenu6, hbmmenu6); //
HBITMAP hbmmenu7 = (HBITMAP)LoadImage(hInstance, "C:\\Degrentes\\Games\\Gangsta Paradise\\Menu\\menu7.bmp", //Obrazek
IMAGE_BITMAP, 0,0, LR_LOADFROMFILE|LR_LOADTRANSPARENT); //Pomoc - Gangsta Paradise
SetMenuItemBitmaps(hMenu, 106, MF_BYCOMMAND, hbmmenu7, hbmmenu7); //
/* tworzymy okno */
// tworzymy okno funkcją CreateWindowEx
HWND hOkno;
hOkno = CreateWindowEx(NULL, // rozszerzony styl okna
g_strKlasaOkna.c_str(), // klasa okna
"Gangsta Paradise", // tekst na pasku tytułu
WS_OVERLAPPEDWINDOW, // styl okna
CW_USEDEFAULT, // współrzędna pozioma
CW_USEDEFAULT, // współrzędna pionowa
CW_USEDEFAULT, // szerokość
CW_USEDEFAULT, // wysokość
NULL, // uchwyt do okna nadrzędnego
hMenu, // uchwyt do menu
hInstance, // uchwyt do instancji aplikacji
NULL); // dodatkowe dane
g_hGraj = CreateWindowEx(0, "BUTTON", "GRAJ", WS_CHILD | WS_VISIBLE, 200, 100, 150, 30, hOkno, NULL, hInstance, NULL);
g_hWyjdz = CreateWindowEx(0, "BUTTON", "WYJDZ", WS_CHILD | WS_VISIBLE, 200, 200, 150, 30, hOkno, NULL, hInstance, NULL);
// pokazujemy nasze okno
ShowWindow (hOkno, nCmdShow);
/* pętla komunikatów */
MSG msgKomunikat;
while (GetMessage(&msgKomunikat, NULL, 0, 0))
{
TranslateMessage (&msgKomunikat);
DispatchMessage (&msgKomunikat);
}
/* kończymy */
// usuwamy pędzel i zwalniamy wczytaną bitmapę
DeleteObject (hbrPedzelOkna);
DeleteObject (hBitmapa);
// zwracamy kod wyjścia
return static_cast(msgKomunikat.wParam);
}
Chwilowo nie mam czasu przekształcać cały kod:
Dopisz sobie swoje funkcje do szkieletu:
#include
#include
HWND hEdit,hButton,hWnd;
CHAR szClassName[]="klasa";
HINSTANCE* hInst;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
INT WINAPI WinMain(HINSTANCE hInstance,HINSTANCE,LPSTR lStart,INT nShow)
{
hInst=&hInstance;
WNDCLASSEX xp;
xp.hInstance=*hInst;
xp.lpszClassName=szClassName;
xp.lpfnWndProc=WndProc;
xp.style=0;
xp.cbSize=sizeof(WNDCLASSEX);
xp.hIcon=LoadIcon(0,IDI_APPLICATION);
xp.hIconSm=0;
xp.hCursor=LoadCursor(0,IDC_ARROW);
xp.lpszMenuName="menu";
xp.hbrBackground=(HBRUSH)COLOR_BACKGROUND;
xp.cbWndExtra=0;
xp.cbClsExtra=0;
if(RegisterClassEx(&xp)==0) return 0;
HWND oknom=CreateWindowEx(0,szClassName,"program",WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX,50,50,500,600,0,0,*hInst,0);
ShowWindow(oknom,nShow);
MSG msgs;
while (GetMessage(&msgs,0,0,0))
{
TranslateMessage(&msgs);
DispatchMessage(&msgs);
}
return msgs.wParam;
}
LRESULT CALLBACK WndProc (HWND hwnd,UINT msg,WPARAM wPar,LPARAM lPar)
{
switch(msg)
{
case WM_CREATE:
hButton=CreateWindowEx(0,WC_BUTTON,"Button 1",WS_CHILD|WS_VISIBLE,400,10,90,25,hwnd,(HMENU)1,*hInst,0);
hButton=CreateWindowEx(0,WC_BUTTON,"Button 2",WS_CHILD|WS_VISIBLE,500,10,90,25,hwnd,(HMENU)2,*hInst,0);
break;
case WM_COMMAND:
switch(LOWORD(wPar))
{
case 1:
MessageBox(hwnd, "Naciśnięto button 1","Komunikat", MB_ICONINFORMATION);
break:
case 2:
MessageBox(hwnd, "Naciśnięto button 2","Komunikat", MB_ICONINFORMATION);
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,msg,wPar,lPar);
}
return 0;
}