小弟正在学习windows程序设计,想自己编写一个菜单 不使用VC自己添加的
遇到一个错误  请高手指教 帮小弟指下错误  是为什么  说明下理由  这个是书上的代码错误信息
fatal error RC1004: unexpected end of file found宏定义#define IDM_ALPHA  40001
#define IDM_BETA   40002
#define IDM_EXIT   40003 //并且错误消息指向的是这一行菜单编写
#include "menu.h"
MyMenu MENU
{
    POPUP "&One"
    {
        MENUITEM "&Alpha" , IDM_ALPHA
MENUITEM "&Beta" , IDM_BETA
MENUITEM "&Exit" , IDM_EXIT
    }
}窗口代码#include <windows.h>
#include <stdio.h>
#include "menu.h"
//声明消息回调函数
LRESULT CALLBACK zy_proc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
 );
//进入函数入口
int WINAPI WinMain(
HINSTANCE hInstance,//该程序运行的实例句柄
HINSTANCE hPrevInstance,//前一个窗口实例句柄,通常都为NULL,对于第二次打开的窗口对应的第一个窗口就是前一个实例
LPSTR lpCmdLine,//指定传递给应用程序的命名行参数
int nCmdshow//显示状态,例如最大化,最小化,隐藏
  )
{
//定义窗口
WNDCLASS zy_WinClass;//声明窗口
//设置窗口样子
zy_WinClass.cbClsExtra=0;//追加字节数
zy_WinClass.cbWndExtra=0;
zy_WinClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);//背景颜色
zy_WinClass.hCursor=LoadCursor(NULL,IDC_ARROW);//光标
zy_WinClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//系统图标
zy_WinClass.hInstance=hInstance;//WinMain的参数复制过来
zy_WinClass.lpfnWndProc=zy_proc;//消息机制
zy_WinClass.lpszClassName="zy2009";//窗口名字
zy_WinClass.lpszMenuName=MAKEINTRESOURCE(MyMenu);//菜单名字
zy_WinClass.style=CS_HREDRAW | CS_VREDRAW|CS_DBLCLKS;//窗口样式,CS_VREDRAW表示垂直,CS_HREDRAW表示水平,CS_NOCLOSE表示窗口没有关闭按钮
//注册窗口
RegisterClass(&zy_WinClass);
//定义窗口句柄
HWND hwnd;
//创建窗口,句柄指向于窗口
hwnd=CreateWindow("zy2009","zy2009",WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX,
320,200,600,400,NULL,NULL,hInstance,NULL);
//显示窗口
// UINT OrgDblClickTime;
// OrgDblClickTime=GetDoubleClickTime();
ShowWindow(hwnd,SW_SHOWNORMAL);
//刷新窗口
//UpdateWindow(hwnd);
//定义消息队列
MSG msg;
//获取消息列队中消息
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);//将WM_KEYDOWN AND WM_KEYUP消息的组合转换为一条WM_CHAR消息
DispatchMessage(&msg);//将消息回传给系统
}
return 0;
}
//消息回调
char str[255]=" ";
//UINT interval;
LRESULT CALLBACK zy_proc(
HWND hwnd,//窗口句柄
UINT uMsg,//消息代码
WPARAM wParam,//最后2个是消息的附加代码
LPARAM lParam)
{

HDC hdc;
switch(uMsg)
{
case WM_PAINT:
//HDC hdc;//CD句柄
PAINTSTRUCT ps;
hdc=BeginPaint(hwnd,&ps);

TextOut(hdc,0,100,"请一直点击鼠标右键有惊喜哦!",strlen("请一直点击鼠标右键有惊喜哦!"));
EndPaint(hwnd,&ps);
break;
case WM_CHAR:
//hdc=GetDC(hwnd);
// TextOut(hdc,0,40," ",1.5);
// sprintf(str,"%c",(char)wParam);
// TextOut(hdc,0,40,str,strlen(str));
// ReleaseDC(hwnd,hdc);
break;
case WM_LBUTTONDOWN:
//MessageBox(hwnd,"嘿嘿,再点几下就出来了!","提示",0);//弹出一个消息框 参数1是窗口句柄2是显示内容3是窗口标题4=0
hdc=GetDC(hwnd);
sprintf(str,"left button is down at %d,%d",LOWORD(lParam),HIWORD(lParam));
TextOut(hdc,LOWORD(lParam),HIWORD(lParam),str,strlen(str));
ReleaseDC(hwnd,hdc);
break;
/*case WM_RBUTTONDOWN:
//MessageBox(hwnd,"嘿嘿,再点几下就出来了!","提示",0);//弹出一个消息框 参数1是窗口句柄2是显示内容3是窗口标题4=0
interval=GetDoubleClickTime();
interval+=100;
SetDoubleClickTime(interval);
hdc=GetDC(hwnd);
sprintf(str,"Right button Double_click is %millisecconds",interval);
TextOut(hdc,LOWORD(lParam),HIWORD(lParam),str,strlen(str));
ReleaseDC(hwnd,hdc);
break;*/
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"你点了XX的哈,嘿嘿...但是点XX没的用","提示",MB_YESNO))//关闭窗口如果==IDYES者销毁窗口
{
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage(0);//退出程序
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);//把没有添加的行为交给消息机制处理
}
return 0;
}