网络游戏客户端从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
分享到:
相关推荐
一个WinMain程序,About对话框有问题,产生的不对!
vc中的winmain函数的用法与理解 int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // command line int ...
WinMain的编写
用于初学者理解,主函数winmain在mfc中 与以前 c中mian的不同之处
常用的WinMain写法: 只创建窗口 无多余注释 代码90行 VS2010直接用
VC++ 使用WinMain建立窗口 欢迎下载使用 VC++ 使用WinMain建立窗口
入口函数( main、WinMain) 在C/C++中,我们知道有一个如下格式的函数: int main(int argc, _TCHAR* argv[]) { return 0; } 该函数是C/C++中的入口函数,而在WindowsAPI中也有自己的入口函数,该函数的格式...
最简单的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,...
主要针对vc++课程中的WinMain函数进行了举例说明,并给出了相应的实现代码。
程序中隐藏WinMain函数,当成是头文件包含进来,我们开发就不需要改动WinMain函数, CWinApp 和CDialog类在SDK中模拟实现,程序会进入我写的InitInstance,该函数里面负责显示窗口,窗口类里面有窗口过程...
inMain在MFC程序中是如何从源程序中被隐藏的,theApp全局变量是如何被分配的,MFC框架中的几个类的作用与相互关系,MFC框架窗口是如何产生和销毁的,对窗口类的PreCreateWidow和OnCreate两个函数的着重分析,Windows...
c++窗体程序设计必备winmain函数
本程序简单的实现了窗口界面,压缩包里包括了所有的程序和工程,可以直接编译!
自己写的带有菜单的WinMain函。代码清晰,简单。知识单一。
Win32 project 设计窗口类;注册;创建;显示及更新。
关于VC6.0中 运行错误 unresolved external symbol _WinMain@16的解决
和C语言中的main()函数一样,Windows程序是从WinMain()函数开始和结束的.WinMain()函数是在WINBASE.H中定义的,其原形如下: int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR ...
阐述了C++中vc中error LNK2001 resolved external symbol _WinMain@16的解决方法的解决方法。
一个简单的WinMain,初学者交流学习。
华容道是一种益智类游戏,玩家需要根据规则移动木块,让特定的木块顺利从游戏区域中的出口离开。 下面是源码中的一些主要功能: 定义了一个枚举类型 BLOCK,表示游戏中的不同类型的木块。 加载了游戏所需的图片...