初始化一个全屏幕的窗口

这篇博客详细介绍了如何使用Windows API初始化一个全屏幕窗口。通过注册窗口类,创建窗口,并设置窗口处理函数,实现了从键盘响应ESC键退出程序的功能。文章包括`InitWindow`和`WinProc`两个关键函数的实现,以及`WinMain`函数中的消息循环处理。
#include<windows.h>
HWND hWnd;
//函数声明
BOOL InitWindow(HINSTANCE hInstance,int nCmdShow);
LRESULT CALLBACK WinProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
//*******************************************************************
//函数:InitWindow()
//功能:创建窗口
//编写人:梁志斌
//*******************************************************************
static BOOL InitWindow(HINSTANCE hInstance,int nCmdShow)
{
WNDCLASS wndcls;
 wndcls.cbClsExtra=0;           //分配给窗口类结构之后的额外字节数
 wndcls.cbWndExtra=0;           //分配给窗口实例之后的额外的字节数
 wndcls.hbrBackground=CreateSolidBrush(RGB(58,110,165)); //窗口的背景色:桌面背景色
 wndcls.hCursor=LoadCursor(NULL,IDC_ARROW);      //窗口中的鼠标形状
 wndcls.hIcon=LoadIcon(NULL,"CounterStrike.ico");    //窗口的图标
 wndcls.hInstance=hInstance;          //窗口所对应的应用程序的句柄
 wndcls.lpfnWndProc=(WNDPROC)WinProc;      //窗口消息处理函数的指针
 wndcls.lpszClassName="CounterStrike";      //窗口的类名称
 wndcls.lpszMenuName=NULL;         			  //窗口的菜单资源名称
 wndcls.style= NULL;            //窗口的风格
 if(!RegisterClass(&wndcls))          //注册窗口
 {
  ::MessageBox(0, "RegisterClass() - FAILED", 0, 0);
  return FALSE;
 }
 hWnd=CreateWindow("CounterStrike","CounterStrike",WS_POPUP|WS_MAXIMIZE|WS_MINIMIZE,0,0,
 GetSystemMetrics(SM_CXSCREEN),         //此函数返回屏幕宽度
 GetSystemMetrics(SM_CYSCREEN),         //此函数返回屏幕高度
 GetDesktopWindow(),NULL,hInstance,NULL);
 if(!hWnd)
 {
  ::MessageBox(0, "CreateWindow() - FAILED", 0, 0);
  return FALSE;
 }
 ShowWindow(hWnd,SW_SHOWNORMAL);
 UpdateWindow(hWnd);
 return TRUE;
}
//*******************************************************************
//函数:WinProc()
//功能:消息处理函数
//编写人:梁志斌
//*******************************************************************
LRESULT CALLBACK WinProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
 switch(msg)
 {
 case WM_KEYDOWN:    //击键消息
  switch(wParam)
  {
  case VK_ESCAPE:
   DestroyWindow(hWnd);   //释放窗口
   PostQuitMessage(0);   //给窗口发送WM_QUIT消息
   return 0;     //处理完一个消息后返回0
  }
 }
return DefWindowProc(hWnd,msg,wParam,lParam);   //调用缺省消息处理过程
}
//*******************************************************************
//函数:WinMain()
//功能:Windows入口函数。创建主窗口,处理消息循环
//编写人:梁志斌
//*******************************************************************
int WINAPI WinMain(HINSTANCE hInstance,       //hInstance:表示该应用程序的句柄
       HINSTANCE hPrevInstance,                 //hPrevInstance:为了保持与16位Windows应用程序的兼容性
       LPSTR lpCmdLine,                         //lpCmdLine:指向命令行参数字符串的指针 
     int nCmdShow)                            //nCmdShow:指向应用程序窗口显示方式的参数


 InitWindow(hInstance,nCmdShow);
 MSG msg;
 ZeroMemory( &msg, sizeof(msg) );
  while(GetMessage(&msg,NULL,0,0))
  {
   TranslateMessage( &msg );
   DispatchMessage( &msg );
  }
 return (int)msg.wParam;
}
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值