首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > windows >

为什么找不到resource.h文件,该如何解决

2014-04-20 
为什么找不到resource.h文件大虾好! 我是根据windows程序设计自学API的,学到资源这卡住了,以下是代码:#inc

为什么找不到resource.h文件
          大虾好! 我是根据windows程序设计自学API的,学到资源这卡住了,以下是代码:
#include <windows.h> 
#include "resource.h" 
#define ID_TIMER 1 
 
LRESULT 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) ; 
}

      
运行这边说
    static int iSelection = IDM_BKGND_WHITE ; 这行开始报错
         说这个 IDM_BKGND_WHITE  没有定义;

我也建了.RC文件,项目组也有显示.rc文件,可我进资源10个分类都看了,就是没有这
IDM_BKGND_WHITE  这个定义;而且 项目那边也没有显示resource.h 这个头文件;
这要怎么办?是要自己建一个resource.h头文件?这个教程说可以用笔记本打开这个头文件;
可是连头文件都没看到;本人新手自学,请大虾不要见笑,不吝赐教!谢谢!
[解决办法]
IDM_BKGND_WHITE 应该是 .rc 文件里使用到的个菜单项的 id 吧,是自己定义的,就如 IDM_FILE_* 及 IDM_EDIT_* 一样,和 resource.h 没有关系的;resource.h 文件是编程环境自带的,无须自建。

热点排行