vc.net 游戏开发 第一章 创建窗口

我写程序的时间不长也就4年但是啥都作啥都不精通,所以现在吗打算认定一个坚持下去,哪怕辞职我也愿意,现在和我们一起开始把。
游戏的分类我就不说了前人写了一大堆,我先按照我的想法往下写,有部分是别人的我学习发到这,有部分是自己的成果,呵呵成果阿
如果你对VC.NET的使用不会先去买本书看看,如果你有vc6.0的使用经验那就不成问题我觉得是大同小异,只是在机理上不一样。
以下是创建游戏窗口的代码,我注释的非常清晰,如有疑问去查MSDN。
拷贝及可运行,程序执行的结果是全屏幕红色背景,单击鼠标右键弹出消息窗口,按ESC键退出。

这是我的运行环境,不是显得晃,使有些人在知道这些后能更好的学习。
说到这了也许有人会问这不都是一样的代码吗?从哪抄来的?是啊写窗口的建立都是这样大同小异,没啥区别,再说了微软都给你订制好了你还能有多大的创造余地?只能是算法上可能不同而已。不过学习吗就是借鉴他人的思想,完成自己的理想。再次对那些前辈牛人之以崇高的敬意,后面的文章我会把一些代码的出处写上去。

在这解释一下,好多初学程序的不明白算法是啥,课本上说一段程序就是一个算法,你写的任意程序都是算法,甚至你感觉不到,如一个循环读取数据库记录的程序那也是算法,就好比万物皆对象一样,程序皆算法。

我说的只是我的理解,课本上的有些东西我也忘了,不对之处多多包涵,有啥意见只管说,这样是帮助我进步呢,呵呵。
//****************************************************************************
//说明:
//      开发环境:.NET 7.1.3091
//  操作系统:WindowsXP SP2
//      S  D   K:Microsoft DirectX 9.0 SDK
//      computer:
//      CPU::Inter 2.6C
//      内存:1G DDR400
//      显卡:FX5900 128MB
//      硬盘:120G*2 8MB 7200
//      主板:Inter865PE
//****************************************************************************
#include<windows.h>
//函数申明
BOOL InitWindow(HINSTANCE hInstance,int nCmdShow);
LRESULT CALLBACK WinProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
//变量说明
HWND hWnd;
//**********************************************************************
//函数:WinMain()
//功能:Windows 程序入口函数。创建主窗口,处理消息循环
//日期:2005.1.3 22:34
//编写人:张小斌
//**********************************************************************
int PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
//hInstance:表示该应用程序的句柄
//hPrevInstance:为了保持与16位windows应用程序的兼容性
//lpCmdLine:指向命令行参数字符串的指针
//nCmdShow:指定应用程序窗口显示方式的整数
{
 if(!InitWindow(hInstance,nCmdShow))return FALSE;
 //创建主窗口,如果创建不成功则返回FALSE并同时退出程序
 MSG msg;
 //进入消息循环
 for(;;)
 {
  if(PeekMessage(& msg,NULL,0,0,PM_REMOVE))
  {
   if(msg.message==WM_QUIT)break;
   TranslateMessage(& msg);
   DispatchMessage(& msg);
  }
 }
 return msg.wParam;
}
//*******************************************************************
//函数:InitWindow()
//功能:创建窗口
//日期:2005.1.3 22:43
//编写人:张小斌
//*******************************************************************
static BOOL InitWindow(HINSTANCE hInstance,int nCmdShow)
{
 //定义窗口风格:
 WNDCLASS wc;
 wc.style=NULL;//窗口的风格
 wc.lpfnWndProc=(WNDPROC)WinProc;//窗口消息处理函数的指针
 wc.cbClsExtra=0;//分配给窗口类结构之后的额外字节数
 wc.cbWndExtra=0;//分配给窗口实例之后的额外的字节数
 wc.hInstance=hInstance;//窗口所对应的应用程序的句柄
 wc.hIcon=NULL;//窗口图标
 wc.hbrBackground=CreateSolidBrush(RGB(100,0,0));//暗红色背景
 wc.lpszMenuName=NULL;//窗口的菜单资源名称
 wc.lpszClassName="My_Test";//窗口类的名称
 RegisterClass(&wc);//注册窗口
 //按所给参数创建窗口
 hWnd = CreateWindow("My_Test",
  "My First program",//窗口标题
  WS_POPUP|WS_MAXIMIZE,0,0,
  GetSystemMetrics(SM_CXSCREEN),//此函数返回屏幕宽度
  GetSystemMetrics(SM_CYSCREEN),//此函数返回屏幕高度
  NULL,NULL,hInstance,NULL);
 if(!hWnd)return FALSE;
 ShowWindow(hWnd,nCmdShow);//显示窗口
 UpdateWindow(hWnd);//刷新窗口
 return TRUE;
}
//*******************************************************************
//函数:WinProc()
//功能:处理窗口消息
//日期:2005.1.3 22:56
//编写人:张小斌
//*******************************************************************
LRESULT CALLBACK WinProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
 switch(message)
 {
 case WM_KEYDOWN://击键消息
  switch(wParam)
  {
  case VK_ESCAPE:
   MessageBox(hWnd,"ESC 键按下了!确定后推出!","KEYboard",MB_OK);
   PostMessage(hWnd,WM_CLOSE,0,0);//给窗口发送WM_CLOSE消息break;
  }
  return 0;//处理完一个消息后返回0

 case WM_CLOSE://准备退出
  DestroyWindow(hWnd);//释放窗口
  return 0;

 case WM_RBUTTONDOWN:
  MessageBox(hWnd,"鼠标右键按下了!","Mouse",MB_OK);
  return 0;

 case WM_DESTROY://如果窗口被释放...
  PostQuitMessage(0);//给窗口发送WM_QUIT消息
  return 0;
 }
 //调用缺省消息处理过程
 return DefWindowProc(hWnd,message,wParam,lParam);
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值