注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

刘邓

每天收获一点点-目标:富足

 
 
 

日志

 
 

每天翻译一点点——Direct3D 10系列(0)  

2012-03-24 20:36:47|  分类: 翻译类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

指南0Win32基础

提纲:

在这个预备的(preliminary)指南中,我们将大致的过一遍创建一个Win32应用所需要的步骤。我们将Direct3D 10创建一个空的窗口。

创建窗口:

每一个窗口应用程序至少需要一个窗口对象。在获取Direct3D 10对象细节前,我们的应用程序必须有一个活动的窗口对象。创建一个活动的窗口对象需要三个环节:

1.注册一个窗口类(这里的类和C++中的类完全不是一个概念,仅仅是之前的命名方式,和现有的C++类有命名上的冲突)在Windows中一个窗口类由一个名为tagWNDCLASSEXW的结构体来描述下面是这个结构体的具体定义:

typedef struct tagWNDCLASSEXW {

    UINT        cbSize;

    /* Win 3.x */

    UINT        style;

    WNDPROC     lpfnWndProc;

    int         cbClsExtra;

    int         cbWndExtra;

    HINSTANCE   hInstance;

    HICON       hIcon;

    HCURSOR     hCursor;

    HBRUSH      hbrBackground;

    LPCWSTR     lpszMenuName;

    LPCWSTR     lpszClassName;

    /* Win 4.0 */

    HICON       hIconSm;

} WNDCLASSEXW, *PWNDCLASSEXW, NEAR *NPWNDCLASSEXW, FAR *LPWNDCLASSEXW;

而我们要做的就是依据我们的自身需求来填充这个结构体具体的代码如下:

// Register class

    //

    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);

    wcex.style          = CS_HREDRAW | CS_VREDRAW;

    wcex.lpfnWndProc    = WndProc;

    wcex.cbClsExtra     = 0;

    wcex.cbWndExtra     = 0;

    wcex.hInstance      = hInstance;

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

    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);

    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);

    wcex.lpszMenuName   = NULL;

    wcex.lpszClassName  = szWindowClass;

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

    if( !RegisterClassEx(&wcex) )

    return FALSE;

2.创建一个窗口对象

   //

    // Create window

    //

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

    RECT rc = { 0, 0, 640, 480 };

    AdjustWindowRect( &rc, WS_OVERLAPPEDWINDOW, FALSE );

    g_hWnd = CreateWindow( szWindowClass, L"Direct3D 10 Tutorial 0: Setting Up Window", WS_OVERLAPPEDWINDOW,

                           CW_USEDEFAULT, CW_USEDEFAULT, rc.right - rc.left, rc.bottom - rc.top, NULL, NULL,

                           hInstance, NULL);

    if( !g_hWnd )

        return FALSE;

    ShowWindow( g_hWnd, nCmdShow );

2.为窗口检索和传递消息

//

    // Main message loop

    //

MSG msg = {0};

    while( GetMessage( &msg, NULL, 0, 0 ) )

    {

        TranslateMessage( &msg );

        DispatchMessage( &msg );

    }

  

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

{

PAINTSTRUCT ps;

HDC hdc;

switch (message) 

{

case WM_PAINT:

hdc = BeginPaint(hWnd, &ps);

EndPaint(hWnd, &ps);

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

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

}

return 0;

}

每天翻译一点点——Direct3D 10系列(1) - 刘邓 - 刘邓

这是创建一个Win32窗口程序所需要的最少的步骤,如果我们编译运行这些代码将看到一个空白背景的窗口。

 

  评论这张
 
阅读(121)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017