我写程序的时间不长也就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); }

|