|
-
Mar 1st, 2001, 12:49 PM
#1
Thread Starter
Frenzied Member
I'm using this code to show a menu, but it doesn't appear...
Code:
// INCLUDES ////////////////////
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <windowsx.h>
#include <stdio.h>
#include <math.h>
#include "mymenu.h"
// DEFINES ////////////////////
// defines for windows
#define WINDOW_CLASS_NAME "WINCLASS1" // <------ WINDOW not WINDOWS
// GLOBALS ///////////////////
HWND main_window_handle = NULL; // save the window handle // <------ window not windows
// FUNCTIONS ////////////////
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT msg, WPARAM wparam, LPARAM lparam)
{
// this is the main message handler of the system
PAINTSTRUCT ps; // used in WM_AINT
HDC hdc;
// find out what the message is
switch(msg)
{
case WM_CREATE:
{
// do initialization stuff here
return(0);
} break;
case WM_PAINT:
{
// simply validate the window
hdc = BeginPaint(hwnd,&ps);
EndPaint(hwnd,&ps); // <------ needed a pointer
return(0);
} break;
case WM_DESTROY: // <------ spelling mistake
{
// kill the application
PostQuitMessage(0);
return(0);
} break;
default: break;
} // end switch
// process any messages that you didn't take care of
return (DefWindowProc(hwnd,msg,wparam,lparam));
} // end WinProc
// WINMAIN ///////////////////
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE previnstance, // <------ spelling mistake
LPSTR lpcmdline,
int ncmdshow)
{
WNDCLASS winclass; // this will hold the class you create // <------ missing semicolon
HWND hwnd; // generic window handle
MSG msg; // generic message
// first, fill in the window class structure
winclass.style = CS_DBLCLKS | CS_OWNDC |
CS_HREDRAW | CS_VREDRAW;
winclass.lpfnWndProc = WindowProc;
winclass.cbClsExtra = 0;
winclass.cbWndExtra = 0;
winclass.hInstance = hinstance;
winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); // <------ void* needs an explicit cast
winclass.lpszMenuName = NULL;
winclass.lpszClassName = WINDOW_CLASS_NAME;
// register the following class
if (!RegisterClass(&winclass))
return(0);
// create window
if (!(hwnd = CreateWindow(WINDOW_CLASS_NAME,
"Hello Carsten! The C++ Programmer!", // Title
WS_OVERLAPPEDWINDOW | WS_VISIBLE, // Flags
500,500, // x,y
320,200, // width, height
NULL, // Handle to parent
NULL, // Handle to menu
hinstance, // instance // <------ hinstance not hInstance
NULL))) // creation parameters
return(0);
// save the window handle in a global
main_window_handle = hwnd;
SetMenu(hwnd,LoadMenu(hinstance, "MYMENU"));
//enter main event loop
while(1)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
// test whether this is a quit
if (msg.message == WM_QUIT) break; // <------ typo
//translate any accelerator keys
TranslateMessage(&msg);
// send the message to the window proc
DispatchMessage(&msg);
} // end if
// main game processing here
} // end while
return(msg.wParam);
} // end WinMain
-
Mar 1st, 2001, 01:44 PM
#2
Frenzied Member
Its kinda hard to tell from your code, but I am guessing you want your menu to be on you window so you need to change to:
This works if you have your menu as a resource.
Code:
winclass.lpszMenuName = NULL;
winclass.lpszMenuName = LoadMenu(hinstance, MAKEINTRESOURCE(IDI_YOURMENUNAME);
If not then you would have to use CreateWindowEX.
Also use:
Code:
case WM_COMMAND:
switch(LOWORD(wparam))
{
case IDR_YOURMENUCHOICE:
}
To run your code when a menu choice is made
MSVS 6, .NET & .NET 2003 Pro
I HATE MSDN with .NET & .NET 2003!!!
Check out my sites:
http://www.filthyhands.com
http://www.techno-coding.com

-
Mar 1st, 2001, 01:52 PM
#3
Thread Starter
Frenzied Member
It generates errors....
Undefined symbol 'MYMENU' in WinMain
-
Mar 1st, 2001, 01:55 PM
#4
Frenzied Member
umm yeah...........I put that so you could input your menu name.
Did you make your menu as a resource?
MSVS 6, .NET & .NET 2003 Pro
I HATE MSDN with .NET & .NET 2003!!!
Check out my sites:
http://www.filthyhands.com
http://www.techno-coding.com

-
Mar 1st, 2001, 01:57 PM
#5
Thread Starter
Frenzied Member
-
Mar 1st, 2001, 02:01 PM
#6
Frenzied Member
Ok....I see now my bad. You need to add
Code:
#include "resource.h" //Or whatever your resource file header is called
MSVS 6, .NET & .NET 2003 Pro
I HATE MSDN with .NET & .NET 2003!!!
Check out my sites:
http://www.filthyhands.com
http://www.techno-coding.com

-
Mar 1st, 2001, 02:02 PM
#7
Thread Starter
Frenzied Member
I have done that:
Code:
#include "mymenu.h"
-
Mar 1st, 2001, 02:04 PM
#8
Frenzied Member
Can you post the code in mymenu.h
MSVS 6, .NET & .NET 2003 Pro
I HATE MSDN with .NET & .NET 2003!!!
Check out my sites:
http://www.filthyhands.com
http://www.techno-coding.com

-
Mar 1st, 2001, 03:11 PM
#9
Thread Starter
Frenzied Member
Here you go! 
Code:
// MYMENU.H - header with menu id's
// Notice the clean naming I used for the id's you
// can very quickly figure out the menu, sub menu, and item
#define ID_MYMENU_FILE_OPEN 1000
#define ID_MYMENU_FILE_CLOSE 1001
#define ID_MYMENU_FILE_EXIT 1002
#define ID_MYMENU_HELP_ABOUT 2000
-
Mar 1st, 2001, 04:26 PM
#10
Frenzied Member
I dont see the define for the top level of the menu. Like my menu:
Code:
#define IDR_RCLKMENU 1
#define IDR_RCLKMENU_File_Open 100
#define IDR_RCLKMENU_File_Close 200
#define IDR_RCLKMENU_File_Exit 300
And thats what you would call:
Code:
winclass.lpszMenuName = LoadMenu(hinstance, MAKEINTRESOURCE(IDR_RCLKMENU);
MSVS 6, .NET & .NET 2003 Pro
I HATE MSDN with .NET & .NET 2003!!!
Check out my sites:
http://www.filthyhands.com
http://www.techno-coding.com

-
Mar 2nd, 2001, 04:31 AM
#11
Thread Starter
Frenzied Member
Hi again!
Now I get another error:
Function call ) missing in function WinMain.
I don't know where to place the "close" )
-
Mar 2nd, 2001, 10:54 AM
#12
Frenzied Member
Can you please post just your WinMain function
MSVS 6, .NET & .NET 2003 Pro
I HATE MSDN with .NET & .NET 2003!!!
Check out my sites:
http://www.filthyhands.com
http://www.techno-coding.com

Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|