网络游戏客户端从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
分享到:
相关推荐
在Windows编程领域,`WinMain`函数是应用程序的入口点,尤其在开发基于Windows操作系统的桌面应用程序时。它类似于C/C++中的`main`函数,但具有特定于Windows的上下文,提供了与操作系统更深入的集成。让我们深入...
在MFC中,这可以通过`InitInstance`和`ExitInstance`两个成员函数实现,它们分别在`WinMain`的开始和结束时被调用。 5. **命令行参数处理:** 虽然`WinMain`接收`lpCmdLine`参数,但在MFC中,命令行参数的处理...
然而,当开发Windows应用程序时,我们通常会使用Windows API提供的`WinMain`函数作为入口点,这是因为Windows系统有自己的应用程序模型。`WinMain`函数的定义如下: ```cpp int APIENTRY WinMain( HINSTANCE ...
在VC++编程环境中,WinMain函数是Windows应用程序的入口点,与C++标准库中的main函数有所不同。在创建Windows桌面应用程序时,我们通常会用到WinMain而不是main,因为它是Windows API的核心部分,用于初始化窗口类、...
vc中的winmain函数的用法与理解 int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // command line int ...
WinMain的编写
在Windows编程中,`WinMain`函数是应用程序的入口点,尤其在开发基于Windows操作系统的桌面应用程序时。这个函数替代了通常在其他操作系统或库中常见的`main`函数。`WinMain`函数提供了与Windows消息循环和窗口过程...
常用的WinMain写法: 只创建窗口 无多余注释 代码90行 VS2010直接用
`WinMain`函数是Windows API中的一个入口点,用于替代传统的`main`函数,主要用于创建具有窗口的Windows应用程序。在本教程中,我们将深入探讨如何使用VC++通过`WinMain`来建立窗口。 首先,了解`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环境下,GUI应用程序通常从`WinMain`函数开始执行,这是微软提供的一个特定的入口点。`WinMain`函数由操作系统调用,用于初始化应用程序并启动消息循环,确保程序能够正确地响应用户交互和系统事件。 `...
解决 VC6.0 中运行错误 unresolved external symbol _WinMain@16 在使用 VC6.0 进行编程时,可能会遇到一个常见的错误:unresolved external symbol _WinMain@16。这是一个链接错误,出现这种错误的原因是因为 VC...
总结起来,基于MFC的Sockets客户端程序设计与实现涉及了MFC框架的使用、Winsock的初始化、`CSocket`类的运用以及网络通信的基本操作。通过理解和实践这些知识点,我们可以创建出功能完善的网络客户端应用程序。
在Windows环境下,一个C++应用程序的入口点不是我们常见的`main()`函数,而是`WinMain()`函数。这个特殊的功能点是"WinMain.rar"文件所涵盖的核心知识。 `WinMain()`函数在Windows程序设计中起着至关重要的角色,它...
此外,Windows程序还需要实现一些基本的生命周期管理,例如初始化、清理工作,这通常在`WinMain`的开始和结束部分完成。 在实际的开发过程中,WinMain程序可以用于创建各种类型的Windows应用程序,如控制台程序、...
程序中隐藏WinMain函数,当成是头文件包含进来,我们开发就不需要改动WinMain函数, CWinApp 和CDialog类在SDK中模拟实现,程序会进入我写的InitInstance,该函数里面负责显示窗口,窗口类里面有窗口过程...
梁健雄的游戏制作方案主要涵盖了从基础的射击游戏到复杂的3D在线游戏的开发过程,通过逐步...梁健雄的方案展示了一个从零开始学习游戏编程并逐步进阶的过程,对于有志于游戏开发的人来说,这是一个很好的学习路径示例。
在Windows编程中,WinMain函数是程序的入口点,它替代了C/C++中的main函数。这个标题"自己写的带有菜单的WinMain函数"表明我们要讨论的是如何在WIN32应用程序中创建一个具有用户界面(UI)的程序,具体来说,就是...
inMain在MFC程序中是如何从源程序中被隐藏的,theApp全局变量是如何被分配的,MFC框架中的几个类的作用与相互关系,MFC框架窗口是如何产生和销毁的,对窗口类的PreCreateWidow和OnCreate两个函数的着重分析,Windows...
这通常涉及Winmain()和Winproc()函数作为窗口管理,以及Gamemain()函数作为游戏的主要循环。 以简单的射击游戏为例,我们可以仅使用DirectDraw和DirectAudio来实现。这类游戏的重点在于图像绘制和音效播放,无需...