943,907 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 737
  • C++ RSS
Jul 12th, 2008
0

GUI problem?

Expand Post »
Hey,
I decided to make a little visit to Winprog and decided to go on the page "Menus and Icons" and so i copied and pasted the code from the website to give me..

C++ Syntax (Toggle Plain Text)
  1. #include "resource.h"
  2.  
  3. IDR_MYMENU MENU
  4. BEGIN
  5. POPUP "&File"
  6. BEGIN
  7. MENUITEM "E&xit", ID_FILE_EXIT
  8. END
  9.  
  10. POPUP "&Stuff"
  11. BEGIN
  12. MENUITEM "&Go", ID_STUFF_GO
  13. MENUITEM "G&o somewhere else", 0, GRAYED
  14. END
  15. END
  16. IDI_MYICON ICON "Console.ico"

And i made my own resource.h which has..

C++ Syntax (Toggle Plain Text)
  1. #define IDR_MYMENU 101
  2. #define IDI_MYICON 201
  3.  
  4. #define ID_FILE_EXIT 9001
  5. #define ID_STUFF_GO 9002

The problem is that I get 2 Errors:

3 D:\C++ Code\Gui.cpp expected unqualified-id before numeric constant
3 D:\C++ Code\Gui.cpp expected `,' or `;' before numeric constant

Please help.
Similar Threads
Reputation Points: 25
Solved Threads: 4
Junior Poster
Black Magic is offline Offline
177 posts
since Apr 2008
Jul 12th, 2008
0

Re: GUI problem?

Could you post the Gui.cpp file?
Reputation Points: 1105
Solved Threads: 389
Posting Virtuoso
mitrmkar is offline Offline
1,714 posts
since Nov 2007
Jul 12th, 2008
0

Re: GUI problem?

Here you go.
Attached Files
File Type: cpp Gui.cpp (293 Bytes, 14 views)
File Type: h resource.h (103 Bytes, 8 views)
Reputation Points: 25
Solved Threads: 4
Junior Poster
Black Magic is offline Offline
177 posts
since Apr 2008
Jul 12th, 2008
0

Re: GUI problem?

Here you go.
You are trying to define the application's resources in the .cpp file. That cannot be done. Instead,
  • save the Gui.cpp as e.g. resource.rc (= resource script)
  • add the resource.rc file to your project
  • then you might copy/paste the following code into Gui.cpp (it's pretty much standard Dev-C++ Win Gui application code). Assuming that you have created a Win32 GUI project.
  • then compile and run

#include <windows.h>
#include "resource.h" // <- needed for the menu ID (IDR_MYMENU)

/*  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 (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* 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 */
           "Windows 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 */
// Load the menu ... 
           LoadMenu(hThisInstance, MAKEINTRESOURCE(IDR_MYMENU)),
           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)
{
    switch (message)                  /* handle the messages */
    {
        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;
}

Note that if you don't have the console.ico icon specified in the .rc file, you can comment out the line specifying the icon resource, i.e.

// IDI_MYICON ICON "Console.ico"

Note also that although the menu appears, it is non-functional since there are no related menu command handlers ...
Reputation Points: 1105
Solved Threads: 389
Posting Virtuoso
mitrmkar is offline Offline
1,714 posts
since Nov 2007

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: remote control
Next Thread in C++ Forum Timeline: Dialog box confusion





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC