`
suiyuan0808
  • 浏览: 152426 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

网络游戏客户端从WinMain开始

    博客分类:
  • c++
阅读更多

    网络游戏客户端从WinMain开始

     各位看官,您是否看得懂以下的源码吗?如果是,恭喜您,您已经具有WINDOW网络游戏开发的一个基本基础条件,也就是您已经Window应用程序运行最基本最原始的原理。如果没有看懂,请继续听我的解释。

    记得哦,所有的window应用程序都是从WinMain开始哦(当然,游戏也不例外,它也是一种应用程序哦)。WinMain函数以及WinProc函数是window应用最基础也是最重要函数。WinProc是消息回调函数,其功能类似java swing的WindowListener监听器接口,用来处理窗口等消息。
 
 /*
while(GetMessage(&msg,NULL,0,0))//获取消息最终将转发给WinProc函数。
 {
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }
*/

建立工程以及运行工程如下:



 
 

 


 
#include <windows.h>
#include <stdio.h>
 
 //消息回调函数
LRESULT CALLBACK WinProc(
  HWND hwnd,     
  UINT message,    
  WPARAM wParam, 
  LPARAM lParam 
);
 
//主函数
int WINAPI WinMain(
  HINSTANCE hInstance,      // 应用程序当前实例句柄
  HINSTANCE hPrevInstance,  // 应用程序其他实例句柄
  LPSTR lpCmdLine,          // 指向程序命令行参数的指针
  int nCmdShow              // 应用程序开始执行时窗口显示方式的整数值标识
)
{
 WNDCLASS wd;
 wd.cbClsExtra=0;//窗口类无扩展
 wd.cbWndExtra=0;//窗口实例无扩展
 wd.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);//窗口背景为黑色
 wd.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口采用箭头光标
 wd.hIcon=LoadIcon(NULL,IDI_APPLICATION);//窗口的最小化图标为默认图标
 wd.hInstance=hInstance;//当前实例句柄
 wd.lpfnWndProc=WinProc;//定义窗口处理函数
 wd.lpszClassName="游戏窗口";//定义窗口类名称
 wd.lpszMenuName=NULL;//窗口中无菜单
 wd.style=CS_HREDRAW | CS_VREDRAW;//定义窗口类型为当窗口大小变化时窗口重画

 RegisterClass(&wd);//注册窗口类

    //创建窗口
 HWND hwnd;
 hwnd=CreateWindow("游戏窗口","我的游戏窗口",WS_OVERLAPPEDWINDOW,
  0,0,800,500,NULL,NULL,hInstance,NULL);
    //显示窗口
 ShowWindow(hwnd,SW_SHOWNORMAL);
 //更新窗口
 UpdateWindow(hwnd);
      ///消息循环
 MSG msg;
 while(GetMessage(&msg,NULL,0,0))
 {
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }
 return 0;
}

//窗口函数
LRESULT CALLBACK WinProc(
  HWND hwnd,      // handle to window
  UINT message,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
 switch(message)
 {
 case WM_LBUTTONDOWN:
  MessageBox(hwnd,"你好!","C++游戏窗口",0);
  break;
 
 case WM_CLOSE:
  if(MessageBox(hwnd,"关闭游戏窗口吗?","C++",MB_YESNO)==IDYES)
  {
       DestroyWindow(hwnd);
  }
  break;
 
 case WM_DESTROY:
    PostQuitMessage(0);
  break;
 default:
  return DefWindowProc(hwnd,message,wParam,lParam);
 }
 return 0;
}

  • 大小: 170.3 KB
  • 大小: 143.4 KB
  • 大小: 139.3 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics