首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

无效定义,编译过了,界面就是不出来?该如何处理

2012-02-27 
无效定义,编译过了,界面就是不出来?在C中建立一个菜单,但是就显示时里的项目是无效的定义,此问题1,问题了,

无效定义,编译过了,界面就是不出来?
在C中建立一个菜单,但是就显示时里的项目是无效的定义,此问题1,问题了,就是将这些问题//取消掉,单单只是窗口一运行就退出,怎么也看不出那里错,报错是:The   thread   0xD5C   has   exited   with   code   10   (0xA).  
Menu.exe '   has   exited   with   code   0   (0x0).

全部的程序如下:第一个问题的报错如下:
#   include   <windows.h>
#   include   <string.h>
#   include   "menu.h "
#   include   "resource.h "

HWND   hWndMain;
HINSTANCE   hInst;

int   APIENTRY   WinMain(
  HINSTANCE     hInstance,HINSTANCE     hPrevInstace,
  LPSTR     lpCmdline,   int   nCmdShow)
{
MSG   msg;
HACCEL   hAccel;

if   (!InitApplication(hInstance))
    return(FALSE);
if   (!InitInstance(hInstance,nCmdShow))
    return(FALSE);
//装入快捷表资源
hAccel   =   LoadAccelerators(hInstance, "MenuAppAccel ");
    while(GetMessage(&msg,NULL,0,0))
    {
    //依据快捷方式,把键盘消息转译为菜单命令消息。
    if   (!TranslateAccelerator(hWndMain,hAccel,&msg))
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
    }
    return(msg.wParam);
}

BOOL   InitApplication(HINSTANCE   hInstance)
{
WNDCLASSEX   wcexMenuApp;
            wcexMenuApp.cbSize   =   sizeof(WNDCLASSEX);
    wcexMenuApp.style   =0;
    wcexMenuApp.lpfnWndProc   =(WNDPROC)MainWndProc;
    wcexMenuApp.cbClsExtra   =   0;
    wcexMenuApp.hInstance   =   hInstance;
    wcexMenuApp.hIcon   =LoadIcon(hInstance, "MenuAppIcon ");
    wcexMenuApp.hCursor   =   LoadCursor(NULL,IDC_ARROW);
    wcexMenuApp.hbrBackground   =   (HBRUSH)GetStockObject(WHITE_BRUSH);
    wcexMenuApp.lpszMenuName=   "MenuAppMenu ";
    wcexMenuApp.lpszClassName   =     "MenuAppWClass ";
    wcexMenuApp.hIconSm     =   NULL;//LoadIcon(hInstance. "SMALLICON ");

    return   (RegisterClassEx(&wcexMenuApp));

}

BOOL   InitInstance   (HINSTANCE   hInstance,   int   nCmdShow)
{
HWND   hWnd;
hInst   =   hInstance;
hWnd   =   CreateWindow( "MenuAppWClass ", "菜单示范程序 ",
                              WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT,   CW_USEDEFAULT,   CW_USEDEFAULT,   CW_USEDEFAULT,
      NULL,NULL,hInstance,NULL);
if   (!hWnd)
return   (FALSE);
hWndMain   =   hWnd;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return(TRUE);
}
LRESULT   APIENTRY   MainWndProc(
  HWND   hWnd,UINT   message,WPARAM   wParam,LPARAM   lParam)
{
static   CHAR   szbuf[128];
HDC   hdc;
PAINTSTRUCT   ps;
RECT   rel   =   {0,0,100,30};
UINT   idCommand;
static   BOOL   bFontStyle[4];

          switch(message)


  {
  case   WM_CREATE:
  InitAlignMenu(hWnd);

    //对菜单项的状态进行初始化
  CheckMenuRadioItem(GetMenu(hWnd),IDM_ALIGNLEFT,IDM_ALIGNRIGHT,IDM_ALIGNLEFT,
                                MF_BYCOMMAND);
  CheckMenuRadioItem(GetMenu(hWnd),IDM_SMALLFONTSIZE,IDM_LARGEFONTSIZE,IDM_SMALLFONTSIZE,
                                MF_BYCOMMAND);
  EnableMenuItem(GetMenu(hWnd),IDM_EDITPASTE,MF_BYCOMMAND   |   MF_GRAYED);
  bFontStyle[0]   =   bFontStyle[1]   =   bFontStyle[2]   =   bFontStyle[3]   =   FALSE;
  CheckMenuItem(GetMenu(hWnd),IDM_BOLD,MF_BYCOMMAND|MF_UNCHECKED);
  CheckMenuItem(GetMenu(hWnd),IDM_ITALIC,MF_BYCOMMAND|MF_UNCHECKED);
  CheckMenuItem(GetMenu(hWnd),IDM_UNDERLINE,MF_BYCOMMAND   |   MF_UNCHECKED);
          CheckMenuItem(GetMenu(hWnd),IDM_STRIKEOUT,MF_BYCOMMAND   |   MF_UNCHECKED);
      break;
      case   WM_PAINT:
      {
      CHAR   szText[]   =   "请选择菜单项,或使用菜单快捷键: ";
      hdc   =   BeginPaint(hWnd,&ps);
      TextOut(hdc,20,20,szText,lstrlen(szText));
      EndPaint(hWnd,&ps);
      }
      break;
      case     WM_SIZE:
      break;
      case   WM_COMMAND:
      idCommand=LOWORD(wParam);

      switch(idCommand)
      {
      case   IDM_BOLD:
      case   IDM_ITALIC:
      case   IDM_UNDERLINE:
      case   IDM_STRIKEOUT:
      bFontStyle[idCommand   -   IDM_BOLD]=!bFontStyle[idCommand   -   IDM_BOLD];
      CheckMenuItem(GetMenu(hWnd),idCommand,MF_BYCOMMAND   |   bFontStyle
      [idCommand   -   IDM_BOLD]?   MF_CHECKED:MF_UNCHECKED);
      break;
      case   IDM_SHOWTOOLBAR:
      case   IDM_SHOWSTATUSBAR:
      if   (GetMenuState(GetMenu(hWnd),idCommand,MF_BYCOMMAND&MF_CHECKED))
      CheckMenuItem(GetMenu(hWnd),idCommand,MF_BYCOMMAND   |   MF_UNCHECKED);
      else
      CheckMenuItem(GetMenu(hWnd),idCommand,MF_BYCOMMAND   |   MF_CHECKED);
      break;
     
      case   IDM_ALIGENLEFT:
      case   IDM_ALIGENCENTER:
                              case   IDM_ALIGNRIGHT:
      CheckMenuRadioItem(GetMenu(hWnd),IDM_ALIGNLEFT,IDM_ALIGNRIGHT,idCommand,
                                      MF_BYCOMMAND);
      break;
      case   IDM_SMALLFONTSIZE:
                              case   IDM_NORMALFONTSIZE:


                              case   IDM_LARGEFONTSIZE:
      CheckMenuRadioItem(GetMenu(hWnd),
        IDM_SMALLFONTSIZE,IDM_LARGEFONTSIZE,idCommand,MF_BYCOMMAND);
      break;
      case   IDM_EDITUNDO:
      EnableMenuItem(GetMenu(hWnd),IDM_EDITUNDO,MF_BYCOMMAND   |   MF_GRAYED);
      break;
      case   IDM_EDITCOPY:
      case   IDM_EDITCUT:
                EnableMenuItem(GetMenu(hWnd),
  IDM_EDITPASTE,MF_BYCOMMAND   |   MF_ENABLED);
break;
      case   IDM_EDITDELETE:
      EnableMenuItem(GetMenu(hWnd),IDM_EDITPASTE,MF_BYCOMMAND   |   MF_GRAYED);
      EnableMenuItem(GetMenu(hWnd),IDM_EDITUNDO,MF_BYCOMMAND   |   MF_ENABLED);
      break;
      case   IDM_ABOUT:
      MessageBox(hWnd, "这是菜单示范程序!\n\n张波编写 ", "关于 ",   MB_OK   |   MB_ICONINFORMATION);
      break;
      case   IDM_EXIT:
      PostQuitMessage(0);
      break;
      default:
        return   (DefWindowProc(hWnd,message,wParam,lParam));
      }
      break;
      case   WM_DESTROY:
      PostQuitMessage(0);
      break;
      default:
      return   (DefWindowProc(hWnd,message,wParam,lParam));
  }
  return   0;
}
/***************************************************************************
*       函数:InitAlignMenu(HWND)                                                                                             *
*       用途:在主菜单中插入[格式]下拉式菜单,并追加菜单项                                           *
***************************************************************************/
VOID   InitAlignMenu(HWND   hWnd)
{
HMENU   hMenuMain;                                                     /*主菜单句柄*/
        HMENU   hMenuAlign;                                                 /*[格式]下拉式菜单句柄*/

    /*检取主菜单句柄   。*/
    hMenuMain   =   GetMenu(hWnd);
    /*创建一个初始为空的下拉式主菜单*/
    hMenuAlign   =   CreatePopupMenu();
    /*把新的下拉式菜单插入到主菜单的第四个位置,并加上字符串。*/
    InsertMenu(hMenuMain,(UINT)3,MF_BYPOSITION   |   MF_STRING   |MF_POPUP,(UINT)hMenuAlign, "格式(&M) ");
    /*把三种对齐方式的菜单项分别追加到[格式]菜单中。*/


    AppendMenu(hMenuAlign,MF_STRING,IDM_ALIGNLEFT,(LPCTSTR) "左对齐 ");
    AppendMenu(hMenuAlign,MF_STRING,IDM_ALIGNCENTER,(LPCTSTR) "居中对齐 ");
    AppendMenu(hMenuAlign,MF_STRING,IDM_ALIGNRIGHT,(LPCTSTR) "右对齐 ");
    return;
}

报错如下:
Menu.cpp
D:\chess\C++\menu\Menu.cpp(84)   :   error   C2065:   'IDM_ALIGNLEFT '   :   undeclared   identifier
D:\chess\C++\menu\Menu.cpp(84)   :   error   C2065:   'IDM_ALIGNRIGHT '   :   undeclared   identifier
D:\chess\C++\menu\Menu.cpp(126)   :   error   C2065:   'IDM_ALIGENLEFT '   :   undeclared   identifier
D:\chess\C++\menu\Menu.cpp(126)   :   error   C2051:   case   expression   not   constant
D:\chess\C++\menu\Menu.cpp(127)   :   error   C2065:   'IDM_ALIGENCENTER '   :   undeclared   identifier
D:\chess\C++\menu\Menu.cpp(127)   :   error   C2051:   case   expression   not   constant
D:\chess\C++\menu\Menu.cpp(128)   :   error   C2051:   case   expression   not   constant
D:\chess\C++\menu\Menu.cpp(185)   :   error   C2065:   'IDM_ALIGNCENTER '   :   undeclared   identifier
Error   executing   cl.exe.

[解决办法]
界面不出来可能原因很多,DEBUG一下,看看HWND的值。

热点排行