游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2208|回复: 5

创建DirectX环境 wxh zt

[复制链接]

1367

主题

1993

帖子

2118

积分

金牌会员

Rank: 6Rank: 6

积分
2118
发表于 2004-11-15 21:45:00 | 显示全部楼层 |阅读模式

一、首先创建一个"Hello Word!" Win32 Application程序

二、删除WM_PAINT消息中的以下内容
// TODO: Add any drawing code here...
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);

三、修改函数
ATOM MyRegisterClass(HINSTANCE hInstance)
{
   
   WNDCLASS wc;

   //wc.cbSize = sizeof(WNDCLASS);

   wc.style         = CS_HREDRAW | CS_VREDRAW;
   wc.lpfnWndProc   = (WNDPROC)WndProc;
   wc.cbClsExtra      = 0;
   wc.cbWndExtra      = 0;
   wc.hInstance      = hInstance;
   wc.hIcon         = LoadIcon(hInstance, IDI_APPLICATION);
   wc.hCursor      = LoadCursor(NULL, IDC_ARROW);
   wc.hbrBackground   = NULL;
   wc.lpszMenuName   = NULL;
   wc.lpszClassName   = szWindowClass;

   return RegisterClass (&wc );
}

四、修改函数
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

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

   hWnd = CreateWindowEx(WS_EX_TOPMOST,szWindowClass, szTitle, WS_POPUP,
      0, 0,GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
   return TRUE;
}

五、定义DirectDraw

a) 定义全局变量
LPDIRECTDRAW  lpDD;
LPDIRECTDRAWSURFACE lpDDSPrimary;
LPDIRECTDRAWSURFACE lpDDSBack;

b)修改函数
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

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

   hWnd = CreateWindowEx(WS_EX_TOPMOST,szWindowClass, szTitle, WS_POPUP,
      0, 0,GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
  DDSURFACEDESC ddsd;
   DDSCAPS  ddscaps;
   HRESULT  ddrval;
   HDC  hdc;
   char buf[256];
ddrval=DirectDrawCreate(NULL,&lpDD,NULL);
   if (ddrval==DD_OK)
   {
      ddrval=lpDD->SetCooperativeLevel (hWnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN);
      if (ddrval==DD_OK)
      {
         ddrval=lpDD->SetDisplayMode (640,480,8);
         if (ddrval==DD_OK)
         {
            ddsd.dwSize =sizeof(ddsd);
            ddsd.dwFlags =DDSD_CAPS|DDSD_BACKBUFFERCOUNT;
            ddsd.ddsCaps.dwCaps =DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_COMPLEX;
            ddsd.dwBackBufferCount =1;
            ddrval=lpDD->CreateSurface (&ddsd,&lpDDSPrimary,NULL);
            if (ddrval==DD_OK)
            {
               ddscaps.dwCaps =DDSCAPS_BACKBUFFER;
               ddrval=lpDDSPrimary->GetAttachedSurface (&ddscaps,&lpDDSBack);
               if(ddrval==DD_OK)
               {     
                     return  TRUE;
               }
            }
         }
      }
   }
   DestroyDirectDrawObjects();
   DestroyWindow(hWnd);
   return FALSE;
}

c)添加头文件
#include<ddraw.h>
d)在project|setting|link添加ddraw.lib

e)添加函数声明及函数体
static  void DestroyDirectDrawObjects(void);
static  void DestroyDirectDrawObjects(void)
{
   if(lpDD!=NULL)
   {
      lpDD->RestoreDisplayMode ();
      if(lpDDSPrimary!=NULL)

      {
         lpDDSPrimary->Release ();
         lpDDSPrimary=NULL;
      }
      lpDD->Release ();
      lpDD=NULL;
   }
}

六、添加
case  WM_KEYDOWN:
switch(wParam)
{
         
case  VK_ESCAPE:
case VK_F12:
DestroyDirectDrawObjects();
PostMessage(hWnd,WM_CLOSE,0,0);
break;
}
break;

4

主题

32

帖子

32

积分

注册会员

Rank: 2

积分
32
发表于 2004-11-16 23:20:00 | 显示全部楼层

Re:创建DirectX环境 wxh zt

无聊

17

主题

159

帖子

159

积分

注册会员

Rank: 2

积分
159
QQ
发表于 2004-11-17 07:16:00 | 显示全部楼层

Re:创建DirectX环境 wxh zt

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-11-17 08:21:00 | 显示全部楼层

Re:创建DirectX环境 wxh zt

果真无聊

7

主题

88

帖子

88

积分

注册会员

Rank: 2

积分
88
QQ
发表于 2004-11-17 08:47:00 | 显示全部楼层

Re:创建DirectX环境 wxh zt

?????

69

主题

450

帖子

473

积分

中级会员

战魂缔造者

Rank: 3Rank: 3

积分
473
QQ
发表于 2004-11-17 22:39:00 | 显示全部楼层

Re:创建DirectX环境 wxh zt

对于初学者来说这些东西难说还不懂呢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-23 09:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表