Direct3D编程第一个程序框架
来源:互联网 发布:医院网络部提成方案 编辑:程序博客网 时间:2024/05/27 20:49
2014.04.21.
这是第一篇~~ 纪念下,今天与一位学者聊了聊天,他让我把每天自己写的代码心得之类的传到网上,这样有蛮多好处的。于是就有了流水账之编程路上~~
下面的代码是在学习浅墨的《Windows游戏编程之从零开始》之后的一些代码。虽然代码没有改动,我希望能写点心得上去(后补)
喜欢浅墨老大的那句话,ForTheDreamOfGameDevelop!
//------程序说明
//-----2014.04.21//-----头文件部分
//-----------------------
#include <d3d9.h>
//--------库文件包含部分
#pragma comment(lib,"winmm.lib")//调用palysound函数
//------宏定义部分
#define WINDOW_WIDTH 800
#define WINDOW_HEIGHT 600
#define WINDOW_TITLE L"[指我们用不熄灭的游戏开发梦想]Direct3D程序的核心框架"
#define SAFE_RELEASE(p) { if(p) { (p) ->Relase();(p)=NULL;}}//定义一个安全释放宏,便于后面COM借口指针的释放
//------------全局变量声明
//------------描述:全局变量的声明
//------------全局函数声明部分
//--------描述:全局函数声明,防止“未声明的标识”系列的错误
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wPrama, LPARAM lParam);//窗口过程函数
HRESULT Direct3D_Init(HWND hwnd );//在这个函数中进行DIrect3D的初始化
HRESULT Objects_Init(HWND hwnd);//在这个函数中进行要绘制的物体的初始化
VOID Direct3D_Render(HWND hwnd);//在这个函数中进行DIrect3D渲染代码的书写
VOID Direct3D_CleanUp();//在这个函数中清理COM资源以及其他资源
//----------------------WinMain函数
//----------------------描述:Windows应用程序入口函数
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nShowCmd)
{
//----------------设计一个完整窗口类
WNDCLASSEX wndClass ={0};//用WINDCLASSEX定义了一个类
wndClass.cbSize=sizeof(WNDCLASSEX ); //设置结构体的字节数大小
wndClass.style=CS_HREDRAW|CS_VREDRAW;//设置窗口样式
wndClass.lpfnWndProc =WndProc;
wndClass.cbClsExtra=0;
wndClass.cbWndExtra=0;
wndClass.hIcon=(HICON)::LoadImage(NULL,L"icon.ico",IMAGE_ICON,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);//本地加载自定义ico图标
wndClass.hCursor = LoadCursor (NULL,IDC_ARROW); //制定窗口类的光标句柄
wndClass.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH);//制定白色画刷句柄
wndClass.lpszMenuName=NULL;
wndClass.lpszClassName=L"ForTheDreamOfDevelop";
//----------注册窗口类
if(!RegisterClassEx(&wndClass))
return -1;
//--正式创建窗口
HWND hwnd =CreateWindow(L"ForTheDreamOfDevelop",WINDOW_TITLE,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,WINDOW_WIDTH,WINDOW_HEIGHT,NULL,NULL,hInstance,NULL);
//Direct3D资源初始化
Direct3D_Init(hwnd);
//------------窗口的移动与更新
MoveWindow(hwnd,250,80,WINDOW_WIDTH,WINDOW_HEIGHT,true);//调整窗口显示时的位置,窗口左上角位于(250,80)处
ShowWindow(hwnd,nShowCmd);
PlaySound(L"War3XMainScreen.wav",NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);
MessageBox(hwnd,L"DirectX,等着瞧吧,我们来征服你了",L"我的消息窗口",0);
//---------消息循环过程
MSG msg={0};
while(msg.message!= WM_QUIT)
{
if(PeekMessage(&msg,0,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
Direct3D_Render(hwnd);
}
}
//窗口类的注销
UnregisterClass(L"ForTheDreamOfDevelop",wndClass.hInstance);//程序准备结束,注销窗口类
return 0;
}
//--------------WndProc函数
//-------------------------------------------------------
LRESULT CALLBACK WndProc(HWND hwnd,UINT message ,WPARAM wParam,LPARAM lParam )
{
switch (message)
{
case WM_PAINT:
Direct3D_Render(hwnd);
ValidateRect(hwnd,NULL);
break;
case WM_KEYDOWN:
if(wParam==VK_ESCAPE)
DestroyWindow(hwnd);
break;
case WM_DESTROY:
Direct3D_CleanUp();
PostQuitMessage(0);//向系统表明有个线程有终止请求。用来响应WM_DESTROY消息
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);//调用默认的窗口过程
}
return 0;// 正常退出
}
//--------------------------Direct3D_Init
HRESULT Direct3D_Init(HWND hwnd )
{
if (!S_OK==Objects_Init(hwnd))return E_FAIL;
return S_OK;
}
//----------------Object_Init
HRESULT Objects_Init(HWND hwnd)
{
return S_OK;
}
//-------------------Direct3D_Render()函数
void Direct3D_Render(HWND hwnd )
{
//暂时为空
}
//--------------Direct3D_CheanUp函数
void Direct3D_CleanUp()
{
//暂时为空
}
0 0
- Direct3D编程第一个程序框架
- Win7下面用VS2010编写第一个Direct3D程序
- 走进Zend Framework框架编程(三):运行第一个程序
- 走进Zend Framework框架编程(三):运行第一个程序
- 走进Zend Framework框架编程--运行第一个程序
- 我的第一个Direct3D程序——第一个三角形
- windows编程第一个程序
- 编程第一课 第一个程序
- 我的Direct3D之路2:学习第一个三角形绘制程序以及一些注意点
- 我的Direct3D学习之路3:第一个3D绘图程序
- 搭建第一个struts2框架web程序
- 走进Zend Framework框架编程(三):运行第一个程序 【转】
- Direct3D学习手记一:实现Direct3D程序框架
- 第一个c++程序编程总结(一)
- windows编程--第一个WinMain程序
- Unix网络编程第一个程序
- QT编程,第一个小程序
- WinPcap编程0x0200 第一个程序
- linux块设备驱动
- Fragment error:The specified child already has a parent.
- 微务宝开发“微活动”功能助推企业活动营销
- 关于MFC程序不能定位输入点
- 字符数组与字符串常量
- Direct3D编程第一个程序框架
- oracle to_date函数的用法
- IE浏览器不能显示所有图片
- google hacker技术
- 花开花落
- 常用的rfc规范
- Oracle 11g ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务 .
- 加水印
- VC通过ADO打开SQL SERVER数据库,并将其中的表、字段、数据显示出来的小程序