Win32 API reakce menu - nereaguje – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Win32 API reakce menu - nereaguje – C / C++ – Fórum – Programujte.comWin32 API reakce menu - nereaguje – C / C++ – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
ProXicT0
Návštěvník
22. 6. 2013   #1
-
0
-

Zdravim, 
mám tu jeden problém s oknem, které jsem vytvořil, mám tam menu nabídku, ale ta na nic nereaguje...normálně se i rozbalí, ale nereaguje.

Když tam mám třeba "File" a pod ním "Exit" a kliknu na "Exit", tak se nic nestane, přestože by se okno mělo zavřít.

Předem díky za pomoc :)

xxx.rc soubor:

// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// Czech (Czech Republic) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CSY)
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE 
BEGIN
    "resource.h�"
END

2 TEXTINCLUDE 
BEGIN
    "#include ""afxres.h""\r\n"
    "�"
END

3 TEXTINCLUDE 
BEGIN
    "\r\n"
    "�"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Menu
//

MAINMENU MENU
BEGIN
POPUP "&File"
    BEGIN
        MENUITEM "Exit"    IDM_EXIT	
        
    END
END
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//

// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
IDI_ICON1               ICON                    "icon1.ico"
IDI_ICON2               ICON                    "icon2.ico"
#endif    // Czech (Czech Republic) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

resource.h:

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Win32 Launcher.rc
//
#define MAINMENU                        101
#define IDI_ICON1                       102
#define IDI_ICON2                       103
#define IDM_EXIT						4001

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        104
#define _APS_NEXT_COMMAND_VALUE         40002
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Zdroják:

#include <windows.h>
#include "resource.h"

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
/*----------------------------------------------------------------------------------------------*/
///
/// Hlavní funkce okna
///
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    TCHAR CLASS_NAME[] = TEXT("Titulek");
    WNDCLASSEX wc = { };
    
    wc.cbSize = sizeof(wc);
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
	wc.lpszClassName = CLASS_NAME;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE("icon1.ico"));
    wc.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE("icon2.ico"));
    wc.hCursor = (HCURSOR)LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wc.lpszMenuName = MAKEINTRESOURCE(MAINMENU);
	
 /*----------------------------------------------------------------------------------------------*/
///
/// Vzhled okna
///

    RegisterClassEx(&wc);
    
    HWND hwnd = CreateWindowEx
		(
		NULL,
		CLASS_NAME, //(přebírá) název třídy okna
		CLASS_NAME,
		WS_OVERLAPPED | WS_SYSMENU,

		640, //pozice okna v ose x
		300, //pozice okna v ose y
		640, //Velikost okna v ose x
		480, //velikost okna v ose y

		NULL,
        NULL,
        hInstance,
		NULL);

 /*----------------------------------------------------------------------------------------------*/
///
/// Funkce vykreslení okna
///
    ShowWindow(hwnd, iCmdShow);
    UpdateWindow(hwnd);
    MSG msg;

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


 /*----------------------------------------------------------------------------------------------*/
///
/// Funkčnost okna 
///
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
 /*----------------------------------------------------------------------------------------------*/

	
	
	
	
	PAINTSTRUCT ps;																						
    HDC hdc;																						
	
	TCHAR greeting[] = TEXT("Hello, World!"); // Deklarace a inicializace textu	
	TCHAR Prom[] = TEXT("Ahoj");			  // Deklarace a inicializace textu	






 /*----------------------------------------------------------------------------------------------*/

        switch(uMsg)
        {

          case WM_DESTROY:										
			  {PostQuitMessage(0);}								
          return 0;												
/*---------------------------------------------------------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------------------------*/// Vnitřek fce switch
		 
		  
		  
		  case WM_PAINT:
        hdc = BeginPaint(hwnd, &ps);
        TextOut /////////////////////// Text Hello, World!
			(
			hdc,

            5,   //////// Pozice textu osa x
			20, //////// Pozice textu osa y

            greeting,
			strlen (greeting)
			);


		TextOut /////////////////////// Text Ahoj
			(
			hdc,

            5, //////// Pozice textu osa x
			5, //////// Pozice textu osa y

            Prom,
			strlen (Prom)

			);
        
        EndPaint(hwnd, &ps);
        return 0;
/*----------------------------------------------------------------------------------------------*/

		  case WM_CLOSE:
				{
					if(MessageBox(hwnd, TEXT("Are You sure, You want to Exit?"), TEXT("Exit"), MB_YESNO | MB_ICONQUESTION) == IDYES)
						DestroyWindow(hwnd);
				}
				return 0;
/*----------------------------------------------------------------------------------------------*/
		  case IDM_EXIT:
			  {
				DestroyWindow(hwnd);														////////                CHYBA ZDE                 ///////////
			  }
			  return 0;
/*---------------------------------------------------------------------------------------------------------------------------*//// Konec Vnitřku fce switch		
/*---------------------------------------------------------------------------------------------------------------------------*/
		}  //Switch Brace
/*---------------------------------------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------------------------------------------------*/


        
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
Nahlásit jako SPAM
IP: 77.240.98.–
Reklama
Reklama
zlz
~ Anonymní uživatel
634 příspěvků
23. 6. 2013   #2
-
+1
-
Zajímavé

   

#define IDM_EXIT /* bez hodnoty? */
Nahlásit jako SPAM
IP: 80.188.216.–
ProXicT0
Návštěvník
23. 6. 2013   #3
-
0
-

Vidím, ale hodotu jsem tam 100% měl, zkoušel jsem tam dávat různé hodnoty, abych se ujistil, že to není tento problém, každopádně díky za uporoznění, ale tím to bohužel není.

Nahlásit jako SPAM
IP: 77.240.98.–
Řešení
liborb
~ Redaktor
+18
Guru
23. 6. 2013   #4
-
+1
-
Zajímavé
Vyřešeno Nejlepší odpověď

IDM_EXIT ti přijde jako část parametru zprávy WM_COMMAND. Všechny ovládací prvky, menu a apod. posílají WM_COMMAND a jejich ID ti přijde myslím jako LOWORD z wParam.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.209.–
ProXicT0
Návštěvník
23. 6. 2013   #5
-
0
-

#4 liborb
SUPER, jsi Bůh! :D Díky moc :) Zabývám se tím už 3 dny :D

Nahlásit jako SPAM
IP: 77.240.98.–
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, 80 hostů

Podobná vlákna

Win32 API — založil survik1

Win32 API - zdroje — založil Rišo Kakaš

CHECKBOX WIN32 API — založil Loli

Kniha o Win32 Api — založil petris123

Moderátoři diskuze

 

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