为什么windows程序这本书从第十章开始,程序可以编译,但显示出来的界面确什么都没有呢,这是什么情况啊,就只是显示一个空白的界面而已,希望学过这本书的人指教,我用的是vc++6.0

解决方案 »

  1.   

    因为俺没看过也不知道《windows程序》是啥书,不明觉厉
      

  2.   

    就是《windows程序设计》嘛,帮个忙啊,解决下嘛
      

  3.   

    万一火了呢
    no code u c a j8
      

  4.   

    为啥VC6的问题要到Delphi区来问?
      

  5.   

    #include <windows.h>
    #include "resource.h"#define ID_TIMER 1LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;TCHAR szAppName[] = TEXT ("MenuDemo") ;int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)
    {
         HWND     hwnd ;
         MSG      msg ;
         WNDCLASS wndclass ;
         
         wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
         wndclass.lpfnWndProc   = WndProc ;
         wndclass.cbClsExtra    = 0 ;
         wndclass.cbWndExtra    = 0 ;
         wndclass.hInstance     = hInstance ;
         wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
         wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
         wndclass.lpszMenuName  = szAppName ;
         wndclass.lpszClassName = szAppName ;
         
         if (!RegisterClass (&wndclass))
         {
              MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                          szAppName, MB_ICONERROR) ;
              return 0 ;
         }
         
         hwnd = CreateWindow (szAppName, TEXT ("Menu Demonstration"),
                              WS_OVERLAPPEDWINDOW,
                              CW_USEDEFAULT, CW_USEDEFAULT,
                              CW_USEDEFAULT, CW_USEDEFAULT,
                              NULL, NULL, hInstance, NULL) ;
         
         ShowWindow (hwnd, iCmdShow) ;
         UpdateWindow (hwnd) ;
         
         while (GetMessage (&msg, NULL, 0, 0))
         {
              TranslateMessage (&msg) ;
              DispatchMessage (&msg) ;
         }
         return msg.wParam ;
    }LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
         static int idColor [5] = { WHITE_BRUSH,  LTGRAY_BRUSH, GRAY_BRUSH,
                                    DKGRAY_BRUSH, BLACK_BRUSH } ;
         static int iSelection = IDM_BKGND_WHITE ;
         HMENU      hMenu ;
         
         switch (message)
         {
         case WM_COMMAND:
              hMenu = GetMenu (hwnd) ;
              
              switch (LOWORD (wParam))
              {
              case IDM_FILE_NEW:
              case IDM_FILE_OPEN:
              case IDM_FILE_SAVE:
              case IDM_FILE_SAVE_AS:
                   MessageBeep (0) ;
                   return 0 ;
                   
              case IDM_APP_EXIT:
                   SendMessage (hwnd, WM_CLOSE, 0, 0) ;
                   return 0 ;
                   
              case IDM_EDIT_UNDO:
              case IDM_EDIT_CUT:
              case IDM_EDIT_COPY:
              case IDM_EDIT_PASTE:
              case IDM_EDIT_CLEAR:
                   MessageBeep (0) ;
                   return 0 ;
                   
              case IDM_BKGND_WHITE:         // Note: Logic below
              case IDM_BKGND_LTGRAY:        //   assumes that IDM_WHITE
              case IDM_BKGND_GRAY:          //   through IDM_BLACK are
              case IDM_BKGND_DKGRAY:        //   consecutive numbers in
              case IDM_BKGND_BLACK:         //   the order shown here.
                   
                   CheckMenuItem (hMenu, iSelection, MF_UNCHECKED) ;
                   iSelection = LOWORD (wParAM);
       CheckMenuItem (hMenu, iSelection, MF_CHECKED) ;
                   
                   SetClassLong (hwnd, GCL_HBRBACKGROUND, (LONG) 
                        GetStockObject 
                                 (idColor [LOWORD (wParam) - IDM_BKGND_WHITE])) ;
                   
                   InvalidateRect (hwnd, NULL, TRUE) ;
                   return 0 ;
                   
              case IDM_TIMER_START:
                   if (SetTimer (hwnd, ID_TIMER, 1000, NULL))
                   {
                        EnableMenuItem (hMenu, IDM_TIMER_START, MF_GRAYED) ;
                        EnableMenuItem (hMenu, IDM_TIMER_STOP,  MF_ENABLED) ;
                   }
                   return 0 ;
                   
              case IDM_TIMER_STOP:
                   KillTimer (hwnd, ID_TIMER) ;
                   EnableMenuItem (hMenu, IDM_TIMER_START, MF_ENABLED) ;
                   EnableMenuItem (hMenu, IDM_TIMER_STOP,  MF_GRAYED) ;
                   return 0 ;
                   
              case IDM_APP_HELP:
                   MessageBox (hwnd, TEXT ("Help not yet implemented!"),
                               szAppName, MB_ICONEXCLAMATION | MB_OK) ;
                   return 0 ;
                   
              case IDM_APP_ABOUT:
                   MessageBox (hwnd, TEXT ("Menu Demonstration Program\n")
                                     TEXT ("(c) Charles Petzold, 1998"),
                               szAppName, MB_ICONINFORMATION | MB_OK) ;
                   return 0 ;
              }
              break ;
              
         case WM_TIMER:
              MessageBeep (0) ;
              return 0 ;
                   
         case WM_DESTROY:
              PostQuitMessage (0) ;
              return 0 ;
         }
         return DefWindowProc (hwnd, message, wParam, lParam) ;
    }
    resource.h:
    //{{NO_DEPENDENCIES}}
    // Microsoft Developer Studio generated include file.
    // Used by MenuDemo.rc
    //
    #define IDM_FILE_NEW                    40001
    #define IDM_FILE_OPEN                   40002
    #define IDM_FILE_SAVE                   40003
    #define IDM_FILE_SAVE_AS                40004
    #define IDM_APP_EXIT                    40005
    #define IDM_EDIT_UNDO                   40006
    #define IDM_EDIT_CUT                    40007
    #define IDM_EDIT_COPY                   40008
    #define IDM_EDIT_PASTE                  40009
    #define IDM_EDIT_CLEAR                  40010
    #define IDM_BKGND_WHITE                 40011
    #define IDM_BKGND_LTGRAY                40012
    #define IDM_BKGND_GRAY                  40013
    #define IDM_BKGND_DKGRAY                40014
    #define IDM_BKGND_BLACK                 40015
    #define IDM_TIMER_START                 40016
    #define IDM_TIMER_STOP                  40017
    #define IDM_APP_HELP                    40018
    #define IDM_APP_ABOUT                   40019
    #define ID_MENUITEM40020                40020// Next default values for new objects
    // 
    #ifdef APSTUDIO_INVOKED
    #ifndef APSTUDIO_READONLY_SYMBOLS
    #define _APS_NEXT_RESOURCE_VALUE        102
    #define _APS_NEXT_COMMAND_VALUE         40021
    #define _APS_NEXT_CONTROL_VALUE         1000
    #define _APS_NEXT_SYMED_VALUE           101
    #endif
    #endif例如这个就用vc++6.0编译后一直能成功,但结果却是跟上面显示的窗口那样,都不是真正的菜单窗口,这是什么原因啊?????
      

  6.   

    windows程序设计 这书俺没有也没看过
      

  7.   

    wndclass.lpszMenuName  = szAppName ;这一句,如果从菜单资源里加载应当可以显示菜单吧一般情况下VC里会有RC资源文件,可以在里边配置一些东西,当然,你应当可以完全动态的创建菜单,但从你的代码里似乎没有看到动态创建菜单的代码