📄
字号:
//********************************
// WinMain
//********************************
//入口函数
//创建于 2007.10 修改于 2008.10
//吴文捷
/////////////////////////////////
#include "stdafx.h"
#include "windows.h"
#include "MyGame.h"
#include "Control.h"
#include "resource.h"
HWND g_hwnd;
//函数声明
LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ); //声明消息处理函数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nShowCmd ); //声明程序入口函数
//程序入口函数定义
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
WNDCLASS wcApp; //定义窗口类
MSG msg; //定义windows消息
HWND ghWnd=NULL; //定义主窗口句柄
char* szAppName="windows API Application"; //程序名称
char* szAppTitle="Directx 窗口程序"; //程序主窗口标题
//给窗口属性赋值
wcApp.style =CS_HREDRAW; //定义窗口风格
wcApp.lpfnWndProc =WndProc; //消息处理
wcApp.cbWndExtra =0;
wcApp.cbClsExtra =0;
wcApp.hInstance =hInstance; //指定程序句柄
wcApp.hIcon =LoadIcon(NULL,"IDI_ICON1"); //加载程序图标
wcApp.hCursor =LoadCursor(NULL,IDC_ARROW); //加载鼠标样式
wcApp.hbrBackground =(HBRUSH)COLOR_ACTIVEBORDER; //设置窗口背景色
wcApp.lpszMenuName =NULL; //不设置窗口菜单
wcApp.lpszClassName =szAppName; //设置窗口类名
RegisterClass(&wcApp); //注册窗口类
//调用函数建立窗口
ghWnd=CreateWindow(szAppName, //注册窗口类名
szAppTitle, //设置窗口标题
WS_POPUP, //设置窗口风格
100,100, //设置窗口坐标
350,300, //设置窗口宽度、高度
NULL,NULL, //父窗口句柄、菜单句柄
hInstance, //程序实例句柄
NULL);
if(NULL==ghWnd)
return 0; //如果窗口建立失败则返回
ShowWindow(ghWnd,nCmdShow); //显示窗口 SW_MAXIMIZE 显示最大化窗口
UpdateWindow(ghWnd); //更新窗口
g_hwnd=ghWnd; //取得程序主窗口句柄
//初始化各Directx部件
if(!ddraw.InitDDraw(ghWnd)){return 0;} //如果初始化Directx失败则退出
if(!dinput.InitDinput(hInstance,ghWnd)){return 0;}
if(!dsound.InitDSound(ghWnd)){return 0;}
MyGame mygame;
//game.SetDevMode(); //设置屏幕分辨率
mygame.GameInit(); //[初始化游戏]
//创建消息循环
ZeroMemory( &msg, sizeof(msg) );
while( msg.message!=WM_QUIT )
{
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
mygame.GameEnd(); //结束游戏
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
{
mygame.GameStart(); //进入游戏周期
}
ValidateRect( ghWnd, NULL );
}
return msg.wParam;
}
//消息处理函数定义
LRESULT CALLBACK WndProc( HWND hwnd, //窗口句柄
UINT message, //消息标识
WPARAM wParam, //消息参数
LPARAM lParam ) //消息参数
{
//以下消息将在dinput中
switch(message)
{
case WM_CREATE:
//MessageBox(GetFocus(),"收到WM_CREATE消息,建立窗口!","窗口建立!",MB_OK|MB_ICONEXCLAMATION);
break;
case WM_LBUTTONDOWN: //捕获鼠标消息
//MessageBox(GetFocus(),"收到WM_LBUTTONDOWN消息!","按下了左键!",MB_OK|MB_ICONINFORMATION);
break;
case WM_DESTROY:
// MessageBox(GetFocus(),"收到WM_DESTROY消息!","窗口关闭!",MB_OK|MB_ICONHAND);
PostQuitMessage(0); //通知windows,线程已发出终止请求
break;
case WM_KEYDOWN: //捕获按键消息
switch ( wParam )
{
case VK_ESCAPE:
//PostQuitMessage( NULL );
break;
}/*
//=========================================================
//以下的将在游戏循环中调用HandleKeys()自定义函数
//利用GetAsyncKeyState()函数检查键盘状态以提高按键的灵敏度
//=========================================================
case VK_RETURN :
Start=true;
break;
case VK_UP:
case 'W':
break;
case VK_LEFT:
case 'A':
break;
case VK_RIGHT:
case 'D':
break;
case VK_DOWN:
case 'S':
break;
}
case WM_KEYUP:
switch (wParam)
{
case 'J':
break;
case 'W':
case 'S':
case 'A':
case 'D':
case VK_LEFT:
case VK_RIGHT:
case VK_DOWN:
case VK_UP:
break;
}
break;
*/
default :
//没有其他消息时,windows将调用此默认函数进行处理
return DefWindowProc(hwnd,message,wParam,lParam);
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -