Jak správně vytvoření checkmenu? – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak správně vytvoření checkmenu? – C / C++ – Fórum – Programujte.comJak správně vytvoření checkmenu? – C / C++ – Fórum – Programujte.com

 

MiCizek0
Stálý člen
27. 7. 2012   #1
-
0
-

Ahoj,

zkouším vytvořit checkmenu, ale nějak mi to nejde. Políčko stále zůstává zaškrtnuté, ikdyž na něj znovu kliknu.

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include "VereApp_private.h"

/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */

    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (hThisInstance, MAKEINTRESOURCE("IDI_HICON"));
    wincl.hIconSm = LoadIcon (hThisInstance, MAKEINTRESOURCE("IDI_HICONSM"));
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = "MAINMENU";                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Vere App",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* The programs width */
           375,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );

    /* Make the window visible on the screen */
    ShowWindow (hwnd, nFunsterStil);

    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }

    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}


/*  This function is called by the Windows function DispatchMessage()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        HDC hDC;
        HMENU hMenu;
        PAINTSTRUCT ps;
        RECT rect;
        int posX = 0;
        int posY = 0;
        UINT checkRules = 0;
        char buffer [33];
        switch (message)                  /* handle the messages */
        {
               case WM_COMMAND:
                    hMenu = GetMenu(hwnd);
                    switch (wParam)
                    {
                           case IDM_NEW:
                                SetTimer(hwnd,IDT_TIMER,500,NULL);
                                break;
                           case IDM_END:
                                PostQuitMessage (0);
                                break;
                           case IDM_RULES:
                                switch (checkRules)
                                {
                                       case 0:
                                               CheckMenuItem(hMenu, IDM_RULES, MF_CHECKED);
                                               checkRules = 1;
                                               break;
                                       default:
                                               CheckMenuItem(hMenu, IDM_RULES, MF_UNCHECKED);
                                               checkRules = 0;
                                               break;
                                }
                                break;
                    }
                    break;
                    case WM_PAINT:
                    
                    break;
               case WM_TIMER:
                    switch (wParam)
                    {
                           case IDT_TIMER:
                                SetWindowPos(hwnd,NULL,++posX,++posY,512,256 ,NULL);
                                break;
                    }
                    break;
               case WM_DESTROY:
                    PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                    break;
               default:                      /* for messages that we don't deal with */
                    return DefWindowProc (hwnd, message, wParam, lParam);
        }
        return 0;
}
#include "VereApp_private.h"
#include "afxres.h"

IDI_ICON ICON DISCARDABLE "Resource/Icon.ico"
IDI_HICON ICON DISCARDABLE "Resource/hIcon.ico"
IDI_HICONSM ICON DISCARDABLE "Resource/hIconSM.ico"

MAINMENU MENU DISCARDABLE
BEGIN
         POPUP "&Game"
         BEGIN
              MENUITEM "&New Game",               IDM_NEW
              MENUITEM "&Score",                  IDM_SCORE
              MENUITEM "&End",                    IDM_END
         END
         POPUP "&Help"
         BEGIN
              MENUITEM "&Rules",                  IDM_RULES
              MENUITEM "&About App",              IDM_ABOUT
         END
END
Nahlásit jako SPAM
IP: 88.100.108.–
MiCizek0
Stálý člen
27. 7. 2012   #2
-
0
-

   

/* THIS FILE WILL BE OVERWRITTEN BY DEV-C++ */
/* DO NOT EDIT ! */

#ifndef VEREAPP_PRIVATE_H
#define VEREAPP_PRIVATE_H

/* VERSION DEFINITIONS */
#define VER_STRING	"0.1.1.1"
#define VER_MAJOR	0
#define VER_MINOR	1
#define VER_RELEASE	1
#define VER_BUILD	1
#define COMPANY_NAME	""
#define FILE_VERSION	""
#define FILE_DESCRIPTION	"Developed using the Dev-C++ IDE"
#define INTERNAL_NAME	""
#define LEGAL_COPYRIGHT	""
#define LEGAL_TRADEMARKS	""
#define ORIGINAL_FILENAME	""
#define PRODUCT_NAME	""
#define PRODUCT_VERSION	""
#define IDI_ICON 101
#define IDI_HICON 102
#define IDI_HICONSM 103
#define IDT_TIMER 201
#define IDM_NEW 40001
#define IDM_SCORE 40002
#define IDM_END 40003
#define IDM_RULES 40004
#define IDM_ABOUT 40005

#endif /*VEREAPP_PRIVATE_H*/
Nahlásit jako SPAM
IP: 88.100.108.–
liborb
~ Redaktor
+18
Guru
27. 7. 2012   #3
-
0
-

Protože proměnou checkRules máš lokální, takže bude vždycky 0.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.216.–
MiCizek0
Stálý člen
27. 7. 2012   #4
-
0
-

#3 liborb
Nic co by nezpravilo #ifndef, aspo+n douf8m. :-D

Nahlásit jako SPAM
IP: 88.100.108.–
MiCizek0
Stálý člen
27. 7. 2012   #5
-
0
-

musí se opravdu vytvořit globální proměnná? #ifndef,#define a #ifend nějak nefungujou. :-(

Nahlásit jako SPAM
IP: 88.100.108.–
liborb
~ Redaktor
+18
Guru
27. 7. 2012   #6
-
0
-

Musíš si pamatovat ten stav, takže globální proměnná je správná volba. Na globální proměnné není nic špatného :).

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.211.–
Atheo+4
Stálý člen
29. 7. 2012   #7
-
0
-

   

case WM_CREATE:{
            /* Hlavni Menu */
            HMENU hHlavniMenu = CreateMenu();
            /* Hlavni Casti Menu */
            HMENU hMENU1 = CreateMenu();
            HMENU hMENU2 = CreateMenu();
            HMENU hMENU3 = CreateMenu();
            /* Hlavni Cast Menu 1 */
            AppendMenu(hHlavniMenu, MF_POPUP,(UINT_PTR)hMENU1, "MENU1");
            /* Polozky Hlavniho Menu 1 */
            AppendMenu(hMENU1, MF_STRING, 1, "Polozka 1");
            AppendMenu(hMENU1, MF_STRING, 2, "Polozka 2");
            /* Hlavni Cast Menu 2 */
            AppendMenu(hHlavniMenu, MF_POPUP,(UINT_PTR)hMENU2, "MENU2");
            /* Polozky Hlavniho Menu 2 */
            AppendMenu(hMENU2, MF_STRING, 3, "Polozka 1_1");
            AppendMenu(hMENU2, MF_STRING, 4, "Polozka 2_1");
            /* Hlavni Cast Menu 3 */
            AppendMenu(hHlavniMenu, MF_POPUP,(UINT_PTR)hMENU3, "MENU3");
            /* Polozky Hlavniho Menu 3 */
            AppendMenu(hMENU3, MF_STRING, 5, "Polozka 1_2");
            AppendMenu(hMENU3, MF_STRING, 6, "Polozka 2_2");
            /* Tisk Menu */
            SetMenu(hwnd, hHlavniMenu);
            break;
            }

snad jsem to pochopil dobre ale spis ne koukam ^^))

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

Podobná vlákna

Jak správně na namespace? — založil Homer

Moderátoři diskuze

 

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