`
suiyuan0808
  • 浏览: 154425 次
  • 性别: 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
分享到:
评论

相关推荐

    WinMain

    在Windows编程领域,`WinMain`函数是应用程序的入口点,尤其在开发基于Windows操作系统的桌面应用程序时。它类似于C/C++中的`main`函数,但具有特定于Windows的上下文,提供了与操作系统更深入的集成。让我们深入...

    WInmain学习用于理解

    在MFC中,这可以通过`InitInstance`和`ExitInstance`两个成员函数实现,它们分别在`WinMain`的开始和结束时被调用。 5. **命令行参数处理:** 虽然`WinMain`接收`lpCmdLine`参数,但在MFC中,命令行参数的处理...

    入口函数( main、WinMain)

    然而,当开发Windows应用程序时,我们通常会使用Windows API提供的`WinMain`函数作为入口点,这是因为Windows系统有自己的应用程序模型。`WinMain`函数的定义如下: ```cpp int APIENTRY WinMain( HINSTANCE ...

    VC++中的WinMain函数

    在VC++编程环境中,WinMain函数是Windows应用程序的入口点,与C++标准库中的main函数有所不同。在创建Windows桌面应用程序时,我们通常会用到WinMain而不是main,因为它是Windows API的核心部分,用于初始化窗口类、...

    winmain函数的用法

    vc中的winmain函数的用法与理解 int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // command line int ...

    WinMain的编写

    WinMain的编写

    WinMain简单窗口实现函数

    在Windows编程中,`WinMain`函数是应用程序的入口点,尤其在开发基于Windows操作系统的桌面应用程序时。这个函数替代了通常在其他操作系统或库中常见的`main`函数。`WinMain`函数提供了与Windows消息循环和窗口过程...

    WinMain 超常用模板

    常用的WinMain写法: 只创建窗口 无多余注释 代码90行 VS2010直接用

    VC++ 使用WinMain建立窗口

    `WinMain`函数是Windows API中的一个入口点,用于替代传统的`main`函数,主要用于创建具有窗口的Windows应用程序。在本教程中,我们将深入探讨如何使用VC++通过`WinMain`来建立窗口。 首先,了解`WinMain`函数。`...

    vc++编程最简单的winmain程序

    最简单的winmain程序 #include #include LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { HDC hdc; switch(uMsg) { case WM_CHAR: char szChar[20]; sprintf(szChar,...

    windows框架,WinMain

    在Windows环境下,GUI应用程序通常从`WinMain`函数开始执行,这是微软提供的一个特定的入口点。`WinMain`函数由操作系统调用,用于初始化应用程序并启动消息循环,确保程序能够正确地响应用户交互和系统事件。 `...

    关于VC6.0中 运行错误 unresolved external symbol _WinMain@16的解决

    解决 VC6.0 中运行错误 unresolved external symbol _WinMain@16 在使用 VC6.0 进行编程时,可能会遇到一个常见的错误:unresolved external symbol _WinMain@16。这是一个链接错误,出现这种错误的原因是因为 VC...

    基于MFC的Sockets程序的设计和实现 客户端代码

    总结起来,基于MFC的Sockets客户端程序设计与实现涉及了MFC框架的使用、Winsock的初始化、`CSocket`类的运用以及网络通信的基本操作。通过理解和实践这些知识点,我们可以创建出功能完善的网络客户端应用程序。

    WinMain.rar

    在Windows环境下,一个C++应用程序的入口点不是我们常见的`main()`函数,而是`WinMain()`函数。这个特殊的功能点是"WinMain.rar"文件所涵盖的核心知识。 `WinMain()`函数在Windows程序设计中起着至关重要的角色,它...

    WinMain程序

    此外,Windows程序还需要实现一些基本的生命周期管理,例如初始化、清理工作,这通常在`WinMain`的开始和结束部分完成。 在实际的开发过程中,WinMain程序可以用于创建各种类型的Windows应用程序,如控制台程序、...

    SDK模拟MFC隐藏WinMain,CWinApp,CDialog

    程序中隐藏WinMain函数,当成是头文件包含进来,我们开发就不需要改动WinMain函数, CWinApp 和CDialog类在SDK中模拟实现,程序会进入我写的InitInstance,该函数里面负责显示窗口,窗口类里面有窗口过程...

    梁健雄游戏制作方案.doc

    梁健雄的游戏制作方案主要涵盖了从基础的射击游戏到复杂的3D在线游戏的开发过程,通过逐步...梁健雄的方案展示了一个从零开始学习游戏编程并逐步进阶的过程,对于有志于游戏开发的人来说,这是一个很好的学习路径示例。

    自己写的带有菜单的WinMain函数

    在Windows编程中,WinMain函数是程序的入口点,它替代了C/C++中的main函数。这个标题"自己写的带有菜单的WinMain函数"表明我们要讨论的是如何在WIN32应用程序中创建一个具有用户界面(UI)的程序,具体来说,就是...

    用VC++编写的WinMain函数

    inMain在MFC程序中是如何从源程序中被隐藏的,theApp全局变量是如何被分配的,MFC框架中的几个类的作用与相互关系,MFC框架窗口是如何产生和销毁的,对窗口类的PreCreateWidow和OnCreate两个函数的着重分析,Windows...

    小游戏制作具体实现方案

    这通常涉及Winmain()和Winproc()函数作为窗口管理,以及Gamemain()函数作为游戏的主要循环。 以简单的射击游戏为例,我们可以仅使用DirectDraw和DirectAudio来实现。这类游戏的重点在于图像绘制和音效播放,无需...

Global site tag (gtag.js) - Google Analytics