设为首页 加入收藏

TOP

(Visual C++)游戏开发笔记二十六 DirectX 11各组件的介绍&第一个DirectX 11 Demo的创建 (七)
2014-11-23 19:33:38 】 浏览:798
Tags:Visual 游戏 开发 笔记 二十六 DirectX 组件 介绍 一个 Demo 创建

{
case WM_PAINT:
hDC = BeginPaint( hwnd, &paintStruct );
EndPaint( hwnd, &paintStruct );
break;
case WM_DESTROY:
PostQuitMessage( 0 );
break;
default:
return DefWindowProc( hwnd, message, wParam, lParam );
}
return 0;
}


窗口过程函数返回了LRESULT类型,运用了CALLBACK类型。函数本身可以被随意命名,我们在这里采用WndProc。

代码讲解之四:完整的源代码

将以上几个部分的讲解串联起来,加之细节上的修改,就得到了Blank Win32 Window Demo的完整源代码:

cpp]
#include

//函数声明
LRESULTCALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );


//****wWinMain函数,程序入口点函数**************************************
intWINAPI wWinMain( HINSTANCE hInstance, HINSTANCE prevInstance, LPWSTR cmdLine,int cmdShow )
{
UNREFERENCED_PARAMETER( prevInstance );
UNREFERENCED_PARAMETER( cmdLine );

WNDCLASSEX wndClass = { 0 };
wndClass.cbSize = sizeof( WNDCLASSEX ) ;
wndClass.style = CS_HREDRAW | CS_VREDRAW;
wndClass.lpfnWndProc = WndProc;
wndClass.hInstance = hInstance;
wndClass.hCursor = LoadCursor( NULL, IDC_ARROW);
wndClass.hbrBackground = ( HBRUSH )(COLOR_WINDOW + 1 );
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = "DIRECTX11BookWindowClass";

if( !RegisterClassEx( &wndClass ) )
return -1;

RECT rc = { 0, 0, 640, 480 };
AdjustWindowRect( &rc,WS_OVERLAPPEDWINDOW, FALSE );

HWND hwnd = CreateWindowA( "DIRECTX11BookWindowClass","Blank Win32 Window",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT, rc.right - rc.left,
rc.bottom - rc.top, NULL, NULL,hInstance, NULL );

if( !hwnd )
return -1;

ShowWindow( hwnd, cmdShow );



// 初始化
MSG msg = { 0 };

while( msg.message != WM_QUIT )
{
if( PeekMessage( &msg, 0, 0, 0,PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
{
// 进行更新
// 进行绘图操作
}
}

// 收尾工作

return static_cast( msg.wParam);
}




//****消息处理函数***********************************
LRESULTCALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
{
PAINTSTRUCT paintStruct;
HDC hDC;

switch( message )
{
case WM_PAINT:
hDC = BeginPaint( hwnd,&paintStruct );
EndPaint( hwnd, &paintStruct);
break;

case WM_DESTROY:
PostQuitMessage( 0 );
break;

default:
return DefWindowProc( hwnd,message, wParam, lParam );
}

return 0;
}
#include

//函数声明
LRESULTCALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam );


//****wWinMain函数,程序入口点函数**************************************
intWINAPI wWinMain( HINSTANCE hInstance, HINSTANCE prevInstance, LPWSTR cmdLine,int cmdShow )
{
UNREFERENCED_PARAMETER( prevInstance );
UNREFERENCED_PARAMETER( cmdLine );

WNDCLASSEX wndClass = { 0 };
wndClass.cbSize = sizeof( WNDCLASSEX ) ;
wndClass.style = CS_HREDRAW | CS_VREDRAW;
wndClass.lpfnWndProc = WndProc;
wndClass.hInstance = hInstance;
wndClass.hCursor = LoadCursor( NULL, IDC_ARROW);
wndClass.hbrBackground = ( HBRUSH )(COLOR_WINDOW + 1 );
wndClass.lpszMenuName = NULL;
wndClass.lpszClassName = "DIRECTX11BookWindowClass";

if( !Registe

首页 上一页 4 5 6 7 下一页 尾页 7/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇(Visual C++)游戏开发笔记二十.. 下一篇int 和 LPCWSTR 的转换

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目