中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 游戏开发 > DirectX
DirectX8.1的DirectDraw7研究手记(二)下
作者:Timesking 时间:2001-12-19 11:37 出处:互联网 责编:chinaitpower
              摘要:DirectX8.1的DirectDraw7研究手记(二)下

//下面主要是消息循环,根普通程序不一样

int APIENTRY WinMain(HINSTANCE hInstance,

                     HINSTANCE hPrevInstance,

                     LPSTR     lpCmdLine,

                     int       nCmdShow)

{

  // TODO: Place code here.

  MSG msg;

  HACCEL hAccelTable;

 

  // Initialize global strings

  LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);

  LoadString(hInstance, IDC_DIRECTX, szWindowClass, MAX_LOADSTRING);

  MyRegisterClass(hInstance);

 

  // Perform application initialization:

  if (!InitInstance (hInstance, nCmdShow))

  {

           return FALSE;

  }

  hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_DIRECTX);

           //初始化DirectDraw环境,并实现DirectDraw功能

  if (FAILED(initDirectDraw(hInstance))){

           MessageBox ( GetActiveWindow(), "初始化DirectDraw过程中出错!", "Error", MB_OK ) ;

           FreeDraw() ;

           DestroyWindow ( GetActiveWindow() ) ;

           return FALSE ;

  }

  // Main message loop:

  while (1)

  {

           if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))

           {

                    if(!GetMessage(&msg, NULL, 0, 0))

                    {

                             return msg.wParam ;

                    }

                    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))

                    {

                             TranslateMessage(&msg);

                             DispatchMessage(&msg);

                    }

           }

           else if(g_bActive)

           {

                    if(FAILED(MainLoop()))

                    {

                             FreeDraw();

                MessageBox( GetActiveWindow(), TEXT("Displaying the next frame failed. ")

                            TEXT("The sample will now exit. "), TEXT("DirectDraw Sample"),

                            MB_ICONERROR | MB_OK );

                                 PostQuitMessage(0);

 

                    }

           }

           else

                    WaitMessage();

  }

 

  return msg.wParam;

}

 

//  FUNCTION: MyRegisterClass()

//  PURPOSE: Registers the window class.

ATOM MyRegisterClass(HINSTANCE hInstance)

{

  WNDCLASSEX wcex;

  wcex.cbSize = sizeof(WNDCLASSEX);

  wcex.style                    = CS_HREDRAW | CS_VREDRAW;

  wcex.lpfnWndProc         = (WNDPROC)WndProc;

  wcex.cbClsExtra              = 0;

  wcex.cbWndExtra          = 0;

  wcex.hInstance              = hInstance;

  wcex.hIcon                          = LoadIcon(hInstance, (LPCTSTR)IDI_DIRECTX);

  wcex.hCursor                  = LoadCursor(NULL, IDC_ARROW);

  wcex.hbrBackground      = (HBRUSH )GetStockObject(BLACK_BRUSH);

  wcex.lpszMenuName       = NULL;

  wcex.lpszClassName       = szWindowClass;

  wcex.hIconSm               = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);

 

  return RegisterClassEx(&wcex);

}

 

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

  HWND hWnd;

  hInst = hInstance; // Store instance handle in our global variable

  hWnd = CreateWindow(szWindowClass, szTitle, WS_POPUP,

      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

   if (!hWnd)

   {

      return FALSE;

   }

   ShowWindow(hWnd, nCmdShow);

   UpdateWindow(hWnd);

   return TRUE;

}

 

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

 

  switch (message)

  {

     case WM_ACTIVATEAPP:

                    g_bActive=wParam;

                    break;

     case WM_KEYDOWN:

              if(wParam == VK_ESCAPE)

              {

                             PostQuitMessage(0);

                             return 0;

              }

              break;

           case WM_DESTROY:

                    FreeDraw();

                    PostQuitMessage(0);

                    break;

           default:

                    return DefWindowProc(hWnd, message, wParam, lParam);

   }

   return 0;

}

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有