DirectX8.1的DirectDraw7研究手记(二) 下

原创 2003年02月17日 10:34:00

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

int APIENTRY WinMain(HINSTANCE hInstance,<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

                     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;

}

记录计算机专业研究生小论文从选题到投稿全过程<二> 选题

既然是讲论文选题,那就从实际情况说起吧,但是在讲如何选题之前,先说明一下,这里的选题并不是选择论文的题目,而是选择研究的问题,也就是说你的研究要解决什么问题。一般来讲,一篇小论文是按照一定的章节顺序展...
  • songhaoaa
  • songhaoaa
  • 2016年12月29日 11:27
  • 1230

做课题与科研项目常用的研究方法

研究方法不出“硬伤” 1、常用的研究方法有文献研究法、教育观察法、经验总结法、个案研究法、行动研究法、实验研究法、历史研究法、调查研究法、比较研究法、叙事研究法等。 2、研究类型或途径、或...
  • neilol
  • neilol
  • 2015年06月18日 15:28
  • 3063

《学术研究--你的成功之道》读书笔记

本书封皮如下: 上周三的时候凌晓峰教授来我们学校做“如何写好学术论文”的学术报告,汇报完毕后他现场签名售书,虽然我当时没有买一本,不过好在还是有人买的,今天晚上把这本书大致过...
  • jj12345jj198999
  • jj12345jj198999
  • 2013年05月20日 22:45
  • 2345

DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之7: Chap9: Color

这一章先是讲了DirectX中的颜色的各种相关知识。其实专门为颜色这一块内容开辟单独的一章没有太大的必要,所以作者扯了点其他话题,让我们能够画出“机械波”。并且这块“离题”讲述的知识在后面还会以各种姿...
  • u011873969
  • u011873969
  • 2014年09月07日 06:04
  • 787

DirectX 9.0c游戏开发手记之“龙书”第二版学习笔记之5: Chap7: Drawing in Direct3D ---- Part I

这一章终于开始讲绘制3D图形的内容了!这一章讲的是非shader方法,也是“龙书”第一版大部分时候所用的方法。 但是值得注意的是,这里的顶点声明是用D3DVERTEXELEMENT9数组实现的,而不...
  • u011873969
  • u011873969
  • 2014年09月05日 21:16
  • 758

DelphiX D7 For DirectX8.1

  • 2006年02月23日 09:05
  • 2.97MB
  • 下载

DirectX 之 DirectDraw 窗口模式

在窗口模式下使用 DirectDraw , 最大的痛苦是不能使用换页操作(Flip). 但是有许多人还是喜欢在窗口模式下进行游戏.     首先, 窗口模式下创建一个 IDirectDraw 接口对象...
  • bytxl
  • bytxl
  • 2011年03月29日 14:44
  • 1187

【DirectX学习】使用DirectDraw在windows窗口上显示位图

需要的知识:Windows编程基础。DirectX基础类:DirectDraw。 Windows编程基础在这不做说明,Windows程序的基本框架可以参照末尾的代码。 DirectDraw是控制视频显...
  • nzyhewai
  • nzyhewai
  • 2016年11月18日 13:59
  • 1507

DirectX从入门到精通之DirectDraw-part3

  • 2009年03月11日 09:11
  • 3.06MB
  • 下载

DirectX从入门到精通之DirectDraw-part1

  • 2009年03月11日 09:06
  • 3.06MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DirectX8.1的DirectDraw7研究手记(二) 下
举报原因:
原因补充:

(最多只允许输入30个字)