CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  游戏开发

我在编译nehe教程的源代码时出现的问题,请高手指点

楼主ghfboy_2004(黑火)2004-09-02 19:41:28 在 专题开发/技术/项目 / 游戏开发 提问

在我以前的机子上(WIN98)编译nehe的源代码完全没有问题。新买了一台,用的是WIN2000,VC6.0,编译任何一个源码都出这样的错误:  
      --------------------Configuration:   Lesson1   -   Win32   Debug--------------------  
  Linking...  
  libcd.lib(crt0.obj)   :   error   LNK2001:   unresolved   external   symbol   _main  
  Debug/Lesson1.exe   :   fatal   error   LNK1120:   1   unresolved   externals  
  Error   executing   link.exe.  
   
  Lesson1.exe   -   2   error(s),   0   warning(s)  
      查MSDN,好象是头文件链接错误,可是我已经按照教程设置好了链接了啊。(添加   "opengl32.lib   glu32.lib   glaux.lib"   到project>settings>link)我对VC一点都不了解。请个位高手指点  
  问题点数:20、回复次数:16Top

1 楼chunhai12(小海)回复于 2004-09-02 19:43:28 得分 3

建win32工程,不是win32   consoleTop

2 楼ghfboy_2004(黑火)回复于 2004-09-03 10:33:05 得分 0

我建了一个空的win32   Application   ,然后把nehe的源代码烤过去,依然解决不了。还是类似的错误。  
   
  --------------------Configuration:   nehe_copy_to_win32_Application   -   Win32   Debug--------------------  
  Compiling...  
  StdAfx.cpp  
  Compiling...  
  nehe_copy_to_win32_Application.cpp  
  e:\vc++6\msdev98\myprojects\nehe_copy_to_win32_application\nehe_copy_to_win32_application.cpp(404)   :   fatal   error   C1010:   unexpected   end   of   file   while   looking   for   precompiled   header   directive  
  Error   executing   cl.exe.  
   
  nehe_copy_to_win32_Application.exe   -   1   error(s),   0   warning(s)  
  求大侠进一步指点Top

3 楼ghfboy_2004(黑火)回复于 2004-09-05 13:23:46 得分 0

这个问题已经困扰了我两个星期了,还解决不了!!求各位高手指点Top

4 楼chena224503(暴雪是这个世界上最NB的游戏公司。)回复于 2004-09-05 13:43:43 得分 3

第一个:工程属性-》Linker-》System-》SubSystem选成Not   Set.  
  第二个:没有预编译头。在nehe_copy_to_win32_application.cpp前面加上#include   "stdafx.h"。Top

5 楼nobounded(风)回复于 2004-09-06 18:14:52 得分 3

按chena224503(暴雪是这个世界上最NB的游戏公司。)   说的解决,要不装VS。NET,用好象VC7没有这个问题。Top

6 楼ghfboy_2004(黑火)回复于 2004-09-10 10:52:48 得分 0

小弟找不到工程属性啊!!   是不是非常菜!Top

7 楼Iforgot(清风雨)回复于 2004-09-11 17:03:44 得分 4

external   symbol   _main  
   
  ???????  
   
  是不是上面哪位说的你应该选择win32项目(VC编译会用winmain)  
   
  而你选择的win   console程序。所以VC会找main作为程序入口(记得学C程序吧),而你的nehe的代码给的是winmain入口(windows程序的入口),所以编译器提示找不到main。  
   
  nehe的有直接工程可以下载编译。  
   
  好像你最好先找人教教你VC6,会很快就适应了。否则,会不懂那些windows程序的东西的。Top

8 楼ghfboy_2004(黑火)回复于 2004-09-11 18:19:32 得分 0

先谢谢各位的慷慨!  
  小弟新学VC,只是照着书上说的编写程序。我把编译例子的详细过程说一下:  
  首先新建立一个   Win32   Application.然后把例子中的代码复制过去,然后在工程—》设置—》Link   中的对象/库模块中添加   opengl32.lib   glu32.lib   glaux.lib   ,最后编译程序。  
  错误提示是:  
  --------------------Configuration:   nehestudylesson1   -   Win32   Debug--------------------  
  Compiling...  
  nehestudylesson1.cpp  
  d:\microsoft   visual   studio\myprojects\nehestudylesson1\nehestudylesson1.cpp(405)   :   fatal   error   C1010:   unexpected   end   of   file   while   looking   for   precompiled   header   directive  
  Error   executing   cl.exe.  
   
  nehestudylesson1.obj   -   1   error(s),   0   warning(s)  
  按照chena224503(暴雪是这个世界上最NB的游戏公司。)   的提示,我在前面加了  
  #include   "stdafx.h",我找不到他所说的第一个:工程属性-》Linker-》System-》SubSystem选成Not   Set  
  错误提示是:  
  --------------------Configuration:   nehestudylesson1   -   Win32   Debug   --------    
  Compiling...  
  nehestudylesson1.cpp  
  d:\microsoft   visual   studio\myprojects\nehestudylesson1\nehestudylesson1.cpp(405)   :   fatal   error   C1010:   unexpected   end   of   file   while   looking   for   precompiled   header   directive  
  Error   executing   cl.exe.  
   
  nehestudylesson1.obj   -   1   error(s),   0   warning(s)  
  错误依然是类似的!  
   
  Top

9 楼ghfboy_2004(黑火)回复于 2004-09-11 18:25:41 得分 0

以下几块是Nehe第一棵的代码:  
  /*  
    * This   Code   Was   Created   By   Jeff   Molofee   2000  
    * A   HUGE   Thanks   To   Fredric   Echols   For   Cleaning   Up  
    * And   Optimizing   This   Code,   Making   It   More   Flexible!  
    * If   You've   Found   This   Code   Useful,   Please   Let   Me   Know.  
    * Visit   My   Site   At   nehe.gamedev.net  
    */  
   
  #include   <windows.h> //   Header   File   For   Windows  
  #include   <gl\gl.h> //   Header   File   For   The   OpenGL32   Library  
  #include   <gl\glu.h> //   Header   File   For   The   GLu32   Library  
  #include   <gl\glaux.h> //   Header   File   For   The   Glaux   Library  
  #include   "stdafx.h"  
  HDC hDC=NULL; //   Private   GDI   Device   Context  
  HGLRC hRC=NULL; //   Permanent   Rendering   Context  
  HWND hWnd=NULL; //   Holds   Our   Window   Handle  
  HINSTANCE hInstance; //   Holds   The   Instance   Of   The   Application  
   
  bool keys[256]; //   Array   Used   For   The   Keyboard   Routine  
  bool active=TRUE; //   Window   Active   Flag   Set   To   TRUE   By   Default  
  bool fullscreen=TRUE; //   Fullscreen   Flag   Set   To   Fullscreen   Mode   By   Default  
   
  LRESULT CALLBACK   WndProc(HWND,   UINT,   WPARAM,   LPARAM); //   Declaration   For   WndProc  
   
  GLvoid   ReSizeGLScene(GLsizei   width,   GLsizei   height) //   Resize   And   Initialize   The   GL   Window  
  {  
  if   (height==0) //   Prevent   A   Divide   By   Zero   By  
  {  
  height=1; //   Making   Height   Equal   One  
  }  
   
  glViewport(0,0,width,height); //   Reset   The   Current   Viewport  
   
  glMatrixMode(GL_PROJECTION); //   Select   The   Projection   Matrix  
  glLoadIdentity(); //   Reset   The   Projection   Matrix  
   
  //   Calculate   The   Aspect   Ratio   Of   The   Window  
  gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);  
   
  glMatrixMode(GL_MODELVIEW); //   Select   The   Modelview   Matrix  
  glLoadIdentity(); //   Reset   The   Modelview   Matrix  
  }  
   
  int   InitGL(GLvoid) //   All   Setup   For   OpenGL   Goes   Here  
  {  
  glShadeModel(GL_SMOOTH); //   Enable   Smooth   Shading  
  glClearColor(0.0f,   0.0f,   0.0f,   0.5f); //   Black   Background  
  glClearDepth(1.0f); //   Depth   Buffer   Setup  
  glEnable(GL_DEPTH_TEST); //   Enables   Depth   Testing  
  glDepthFunc(GL_LEQUAL); //   The   Type   Of   Depth   Testing   To   Do  
  glHint(GL_PERSPECTIVE_CORRECTION_HINT,   GL_NICEST); //   Really   Nice   Perspective   Calculations  
  return   TRUE; //   Initialization   Went   OK  
  }  
   
  int   DrawGLScene(GLvoid) //   Here's   Where   We   Do   All   The   Drawing  
  {  
  glClear(GL_COLOR_BUFFER_BIT   |   GL_DEPTH_BUFFER_BIT); //   Clear   Screen   And   Depth   Buffer  
  glLoadIdentity(); //   Reset   The   Current   Modelview   Matrix  
  return   TRUE; //   Everything   Went   OK  
  }  
   
  GLvoid   KillGLWindow(GLvoid) //   Properly   Kill   The   Window  
  {  
  if   (fullscreen) //   Are   We   In   Fullscreen   Mode?  
  {  
  ChangeDisplaySettings(NULL,0); //   If   So   Switch   Back   To   The   Desktop  
  ShowCursor(TRUE); //   Show   Mouse   Pointer  
  }  
   
  if   (hRC) //   Do   We   Have   A   Rendering   Context?  
  {  
  if   (!wglMakeCurrent(NULL,NULL)) //   Are   We   Able   To   Release   The   DC   And   RC   Contexts?  
  {  
  MessageBox(NULL,"Release   Of   DC   And   RC   Failed.","SHUTDOWN   ERROR",MB_OK   |   MB_ICONINFORMATION);  
  }  
   
  if   (!wglDeleteContext(hRC)) //   Are   We   Able   To   Delete   The   RC?  
  {  
  MessageBox(NULL,"Release   Rendering   Context   Failed.","SHUTDOWN   ERROR",MB_OK   |   MB_ICONINFORMATION);  
  }  
  hRC=NULL; //   Set   RC   To   NULL  
  }  
   
  if   (hDC   &&   !ReleaseDC(hWnd,hDC)) //   Are   We   Able   To   Release   The   DC  
  {  
  MessageBox(NULL,"Release   Device   Context   Failed.","SHUTDOWN   ERROR",MB_OK   |   MB_ICONINFORMATION);  
  hDC=NULL; //   Set   DC   To   NULL  
  }  
   
  if   (hWnd   &&   !DestroyWindow(hWnd)) //   Are   We   Able   To   Destroy   The   Window?  
  {  
  MessageBox(NULL,"Could   Not   Release   hWnd.","SHUTDOWN   ERROR",MB_OK   |   MB_ICONINFORMATION);  
  hWnd=NULL; //   Set   hWnd   To   NULL  
  }  
   
  if   (!UnregisterClass("OpenGL",hInstance)) //   Are   We   Able   To   Unregister   Class  
  {  
  MessageBox(NULL,"Could   Not   Unregister   Class.","SHUTDOWN   ERROR",MB_OK   |   MB_ICONINFORMATION);  
  hInstance=NULL; //   Set   hInstance   To   NULL  
  }  
  }  
   
  Top

10 楼ghfboy_2004(黑火)回复于 2004-09-11 18:26:25 得分 0

/* This   Code   Creates   Our   OpenGL   Window.     Parameters   Are: *  
    * title -   Title   To   Appear   At   The   Top   Of   The   Window *  
    * width -   Width   Of   The   GL   Window   Or   Fullscreen   Mode *  
    * height -   Height   Of   The   GL   Window   Or   Fullscreen   Mode *  
    * bits -   Number   Of   Bits   To   Use   For   Color   (8/16/24/32) *  
    * fullscreenflag -   Use   Fullscreen   Mode   (TRUE)   Or   Windowed   Mode   (FALSE) */  
     
  BOOL   CreateGLWindow(char*   title,   int   width,   int   height,   int   bits,   bool   fullscreenflag)  
  {  
  GLuint PixelFormat; //   Holds   The   Results   After   Searching   For   A   Match  
  WNDCLASS wc; //   Windows   Class   Structure  
  DWORD dwExStyle; //   Window   Extended   Style  
  DWORD dwStyle; //   Window   Style  
  RECT WindowRect; //   Grabs   Rectangle   Upper   Left   /   Lower   Right   Values  
  WindowRect.left=(long)0; //   Set   Left   Value   To   0  
  WindowRect.right=(long)width; //   Set   Right   Value   To   Requested   Width  
  WindowRect.top=(long)0; //   Set   Top   Value   To   0  
  WindowRect.bottom=(long)height; //   Set   Bottom   Value   To   Requested   Height  
   
  fullscreen=fullscreenflag; //   Set   The   Global   Fullscreen   Flag  
   
  hInstance =   GetModuleHandle(NULL); //   Grab   An   Instance   For   Our   Window  
  wc.style =   CS_HREDRAW   |   CS_VREDRAW   |   CS_OWNDC; //   Redraw   On   Size,   And   Own   DC   For   Window.  
  wc.lpfnWndProc =   (WNDPROC)   WndProc; //   WndProc   Handles   Messages  
  wc.cbClsExtra =   0; //   No   Extra   Window   Data  
  wc.cbWndExtra =   0; //   No   Extra   Window   Data  
  wc.hInstance =   hInstance; //   Set   The   Instance  
  wc.hIcon =   LoadIcon(NULL,   IDI_WINLOGO); //   Load   The   Default   Icon  
  wc.hCursor =   LoadCursor(NULL,   IDC_ARROW); //   Load   The   Arrow   Pointer  
  wc.hbrBackground =   NULL; //   No   Background   Required   For   GL  
  wc.lpszMenuName =   NULL; //   We   Don't   Want   A   Menu  
  wc.lpszClassName =   "OpenGL"; //   Set   The   Class   Name  
   
  if   (!RegisterClass(&wc)) //   Attempt   To   Register   The   Window   Class  
  {  
  MessageBox(NULL,"Failed   To   Register   The   Window   Class.","ERROR",MB_OK|MB_ICONEXCLAMATION);  
  return   FALSE; //   Return   FALSE  
  }  
   
  if   (fullscreen) //   Attempt   Fullscreen   Mode?  
  {  
  DEVMODE   dmScreenSettings; //   Device   Mode  
  memset(&dmScreenSettings,0,sizeof(dmScreenSettings)); //   Makes   Sure   Memory's   Cleared  
  dmScreenSettings.dmSize=sizeof(dmScreenSettings); //   Size   Of   The   Devmode   Structure  
  dmScreenSettings.dmPelsWidth =   width; //   Selected   Screen   Width  
  dmScreenSettings.dmPelsHeight =   height; //   Selected   Screen   Height  
  dmScreenSettings.dmBitsPerPel =   bits; //   Selected   Bits   Per   Pixel  
  dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;  
   
  //   Try   To   Set   Selected   Mode   And   Get   Results.     NOTE:   CDS_FULLSCREEN   Gets   Rid   Of   Start   Bar.  
  if   (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)  
  {  
  //   If   The   Mode   Fails,   Offer   Two   Options.     Quit   Or   Use   Windowed   Mode.  
  if   (MessageBox(NULL,"The   Requested   Fullscreen   Mode   Is   Not   Supported   By\nYour   Video   Card.   Use   Windowed   Mode   Instead?","NeHe   GL",MB_YESNO|MB_ICONEXCLAMATION)==IDYES)  
  {  
  fullscreen=FALSE; //   Windowed   Mode   Selected.     Fullscreen   =   FALSE  
  }  
  else  
  {  
  //   Pop   Up   A   Message   Box   Letting   User   Know   The   Program   Is   Closing.  
  MessageBox(NULL,"Program   Will   Now   Close.","ERROR",MB_OK|MB_ICONSTOP);  
  return   FALSE; //   Return   FALSE  
  }  
  }  
  }  
   
  if   (fullscreen) //   Are   We   Still   In   Fullscreen   Mode?  
  {  
  dwExStyle=WS_EX_APPWINDOW; //   Window   Extended   Style  
  dwStyle=WS_POPUP; //   Windows   Style  
  ShowCursor(FALSE); //   Hide   Mouse   Pointer  
  }  
  else  
  {  
  dwExStyle=WS_EX_APPWINDOW   |   WS_EX_WINDOWEDGE; //   Window   Extended   Style  
  dwStyle=WS_OVERLAPPEDWINDOW; //   Windows   Style  
  }  
   
  AdjustWindowRectEx(&WindowRect,   dwStyle,   FALSE,   dwExStyle); //   Adjust   Window   To   True   Requested   Size  
   
  //   Create   The   Window  
  if   (!(hWnd=CreateWindowEx( dwExStyle, //   Extended   Style   For   The   Window  
  "OpenGL", //   Class   Name  
  title, //   Window   Title  
  dwStyle   | //   Defined   Window   Style  
  WS_CLIPSIBLINGS   | //   Required   Window   Style  
  WS_CLIPCHILDREN, //   Required   Window   Style  
  0,   0, //   Window   Position  
  WindowRect.right-WindowRect.left, //   Calculate   Window   Width  
  WindowRect.bottom-WindowRect.top, //   Calculate   Window   Height  
  NULL, //   No   Parent   Window  
  NULL, //   No   Menu  
  hInstance, //   Instance  
  NULL))) //   Dont   Pass   Anything   To   WM_CREATE  
  {  
  KillGLWindow(); //   Reset   The   Display  
  MessageBox(NULL,"Window   Creation   Error.","ERROR",MB_OK|MB_ICONEXCLAMATION);  
  return   FALSE; //   Return   FALSE  
  }  
   
  static PIXELFORMATDESCRIPTOR   pfd= //   pfd   Tells   Windows   How   We   Want   Things   To   Be  
  {  
  sizeof(PIXELFORMATDESCRIPTOR), //   Size   Of   This   Pixel   Format   Descriptor  
  1, //   Version   Number  
  PFD_DRAW_TO_WINDOW   | //   Format   Must   Support   Window  
  PFD_SUPPORT_OPENGL   | //   Format   Must   Support   OpenGL  
  PFD_DOUBLEBUFFER, //   Must   Support   Double   Buffering  
  PFD_TYPE_RGBA, //   Request   An   RGBA   Format  
  bits, //   Select   Our   Color   Depth  
  0,   0,   0,   0,   0,   0, //   Color   Bits   Ignored  
  0, //   No   Alpha   Buffer  
  0, //   Shift   Bit   Ignored  
  0, //   No   Accumulation   Buffer  
  0,   0,   0,   0, //   Accumulation   Bits   Ignored  
  16, //   16Bit   Z-Buffer   (Depth   Buffer)      
  0, //   No   Stencil   Buffer  
  0, //   No   Auxiliary   Buffer  
  PFD_MAIN_PLANE, //   Main   Drawing   Layer  
  0, //   Reserved  
  0,   0,   0 //   Layer   Masks   Ignored  
  };  
   
  if   (!(hDC=GetDC(hWnd))) //   Did   We   Get   A   Device   Context?  
  {  
  KillGLWindow(); //   Reset   The   Display  
  MessageBox(NULL,"Can't   Create   A   GL   Device   Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);  
  return   FALSE; //   Return   FALSE  
  }  
   
  if   (!(PixelFormat=ChoosePixelFormat(hDC,&pfd))) //   Did   Windows   Find   A   Matching   Pixel   Format?  
  {  
  KillGLWindow(); //   Reset   The   Display  
  MessageBox(NULL,"Can't   Find   A   Suitable   PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);  
  return   FALSE; //   Return   FALSE  
  }  
   
  if(!SetPixelFormat(hDC,PixelFormat,&pfd)) //   Are   We   Able   To   Set   The   Pixel   Format?  
  {  
  KillGLWindow(); //   Reset   The   Display  
  MessageBox(NULL,"Can't   Set   The   PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);  
  return   FALSE; //   Return   FALSE  
  }  
   
  if   (!(hRC=wglCreateContext(hDC))) //   Are   We   Able   To   Get   A   Rendering   Context?  
  {  
  KillGLWindow(); //   Reset   The   Display  
  MessageBox(NULL,"Can't   Create   A   GL   Rendering   Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);  
  return   FALSE; //   Return   FALSE  
  }  
   
  if(!wglMakeCurrent(hDC,hRC)) //   Try   To   Activate   The   Rendering   Context  
  {  
  KillGLWindow(); //   Reset   The   Display  
  MessageBox(NULL,"Can't   Activate   The   GL   Rendering   Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);  
  return   FALSE; //   Return   FALSE  
  }  
   
  ShowWindow(hWnd,SW_SHOW); //   Show   The   Window  
  SetForegroundWindow(hWnd); //   Slightly   Higher   Priority  
  SetFocus(hWnd); //   Sets   Keyboard   Focus   To   The   Window  
  ReSizeGLScene(width,   height); //   Set   Up   Our   Perspective   GL   Screen  
   
  if   (!InitGL()) //   Initialize   Our   Newly   Created   GL   Window  
  {  
  KillGLWindow(); //   Reset   The   Display  
  MessageBox(NULL,"Initialization   Failed.","ERROR",MB_OK|MB_ICONEXCLAMATION);  
  return   FALSE; //   Return   FALSE  
  }  
   
  return   TRUE; //   Success  
  }Top

11 楼comet007()回复于 2004-09-11 18:46:44 得分 3

从头到尾都没看见你的main函数或WinMain函数,有问题把。Top

12 楼ghfboy_2004(黑火)回复于 2004-09-11 20:27:25 得分 0

/*不好意思。csdn不让我连续回复三次,所以没发上去。下面是最后一部分:*/  
  LRESULT   CALLBACK   WndProc( HWND hWnd, //   Handle   For   This   Window  
  UINT uMsg, //   Message   For   This   Window  
  WPARAM wParam, //   Additional   Message   Information  
  LPARAM lParam) //   Additional   Message   Information  
  {  
  switch   (uMsg) //   Check   For   Windows   Messages  
  {  
  case   WM_ACTIVATE: //   Watch   For   Window   Activate   Message  
  {  
  if   (!HIWORD(wParam)) //   Check   Minimization   State  
  {  
  active=TRUE; //   Program   Is   Active  
  }  
  else  
  {  
  active=FALSE; //   Program   Is   No   Longer   Active  
  }  
   
  return   0; //   Return   To   The   Message   Loop  
  }  
   
  case   WM_SYSCOMMAND: //   Intercept   System   Commands  
  {  
  switch   (wParam) //   Check   System   Calls  
  {  
  case   SC_SCREENSAVE: //   Screensaver   Trying   To   Start?  
  case   SC_MONITORPOWER: //   Monitor   Trying   To   Enter   Powersave?  
  return   0; //   Prevent   From   Happening  
  }  
  break; //   Exit  
  }  
   
  case   WM_CLOSE: //   Did   We   Receive   A   Close   Message?  
  {  
  PostQuitMessage(0); //   Send   A   Quit   Message  
  return   0; //   Jump   Back  
  }  
   
  case   WM_KEYDOWN: //   Is   A   Key   Being   Held   Down?  
  {  
  keys[wParam]   =   TRUE; //   If   So,   Mark   It   As   TRUE  
  return   0; //   Jump   Back  
  }  
   
  case   WM_KEYUP: //   Has   A   Key   Been   Released?  
  {  
  keys[wParam]   =   FALSE; //   If   So,   Mark   It   As   FALSE  
  return   0; //   Jump   Back  
  }  
   
  case   WM_SIZE: //   Resize   The   OpenGL   Window  
  {  
  ReSizeGLScene(LOWORD(lParam),HIWORD(lParam));     //   LoWord=Width,   HiWord=Height  
  return   0; //   Jump   Back  
  }  
  }  
   
  //   Pass   All   Unhandled   Messages   To   DefWindowProc  
  return   DefWindowProc(hWnd,uMsg,wParam,lParam);  
  }  
   
  int   WINAPI   WinMain( HINSTANCE hInstance, //   Instance  
  HINSTANCE hPrevInstance, //   Previous   Instance  
  LPSTR lpCmdLine, //   Command   Line   Parameters  
  int nCmdShow) //   Window   Show   State  
  {  
  MSG msg; //   Windows   Message   Structure  
  BOOL done=FALSE; //   Bool   Variable   To   Exit   Loop  
   
  //   Ask   The   User   Which   Screen   Mode   They   Prefer  
  if   (MessageBox(NULL,"Would   You   Like   To   Run   In   Fullscreen   Mode?",   "Start   FullScreen?",MB_YESNO|MB_ICONQUESTION)==IDNO)  
  {  
  fullscreen=FALSE; //   Windowed   Mode  
  }  
   
  //   Create   Our   OpenGL   Window  
  if   (!CreateGLWindow("NeHe's   OpenGL   Framework",640,480,16,fullscreen))  
  {  
  return   0; //   Quit   If   Window   Was   Not   Created  
  }  
   
  while(!done) //   Loop   That   Runs   While   done=FALSE  
  {  
  if   (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) //   Is   There   A   Message   Waiting?  
  {  
  if   (msg.message==WM_QUIT) //   Have   We   Received   A   Quit   Message?  
  {  
  done=TRUE; //   If   So   done=TRUE  
  }  
  else //   If   Not,   Deal   With   Window   Messages  
  {  
  TranslateMessage(&msg); //   Translate   The   Message  
  DispatchMessage(&msg); //   Dispatch   The   Message  
  }  
  }  
  else //   If   There   Are   No   Messages  
  {  
  //   Draw   The   Scene.     Watch   For   ESC   Key   And   Quit   Messages   From   DrawGLScene()  
  if   (active) //   Program   Active?  
  {  
  if   (keys[VK_ESCAPE]) //   Was   ESC   Pressed?  
  {  
  done=TRUE; //   ESC   Signalled   A   Quit  
  }  
  else //   Not   Time   To   Quit,   Update   Screen  
  {  
  DrawGLScene(); //   Draw   The   Scene  
  SwapBuffers(hDC); //   Swap   Buffers   (Double   Buffering)  
  }  
  }  
   
  if   (keys[VK_F1]) //   Is   F1   Being   Pressed?  
  {  
  keys[VK_F1]=FALSE; //   If   So   Make   Key   FALSE  
  KillGLWindow(); //   Kill   Our   Current   Window  
  fullscreen=!fullscreen; //   Toggle   Fullscreen   /   Windowed   Mode  
  //   Recreate   Our   OpenGL   Window  
  if   (!CreateGLWindow("NeHe's   OpenGL   Framework",640,480,16,fullscreen))  
  {  
  return   0; //   Quit   If   Window   Was   Not   Created  
  }  
  }  
  }  
  }  
   
  //   Shutdown  
  KillGLWindow(); //   Kill   The   Window  
  return   (msg.wParam); //   Exit   The   Program  
  }  
  Top

13 楼ghfboy_2004(黑火)回复于 2004-09-11 20:29:45 得分 0

我的QQ是68266780  
  我的MSN是ghfboy_2004@hotmail.com  
  志同道合的兄弟们和我联系Top

14 楼myling(不理你)回复于 2004-09-13 22:23:01 得分 4

nehe的代码不用贴,一点问题都没有  
   
  还是你设置的问题吧  
   
  如果实在找不到哪里不对  
   
  你先建个空项目编译一下  
   
  看看是不是你的VC没装好:)Top

15 楼ghfboy_2004(黑火)回复于 2004-09-14 10:57:15 得分 0

这个方法不错。谢谢了Top

16 楼ghfboy_2004(黑火)回复于 2004-09-16 09:57:44 得分 0

VC还没设置好,估计是我的D版VC坏了。换了个dev-c++,很好用。  
  初来CSDN,能得到这么多人的帮助,不胜感激。Top

相关问题

  • bcb能不能编译c++源代码。
  • 送分!编译器的源代码!
  • 求JAVA编译器的源代码!
  • 如何将源代码编译成DLL?
  • MYSQL源代码如何编译?
  • 怎么编译这些源代码?
  • halflife 谁有能编译的源代码
  • ping的源代码怎么编译
  • 为什摸编译总是失败??请看源代码:
  • 怎样将DLL文件反编译成源代码??

关键词

  • win32
  • 源代码
  • 编译
  • active
  • 代码
  • vc
  • opengl
  • cpp
  • nehe
  • nehestudylesson

得分解答快速导航

  • 帖主:ghfboy_2004
  • chunhai12
  • chena224503
  • nobounded
  • Iforgot
  • comet007
  • myling

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo