📄 导弹打飞机.cpp
字号:
#include < windows.h > // 嵌入基本的Windows功能
HINSTANCE hInst ; // 当前实例句柄
HWND hWndMain ; //主窗口句柄
LRESULT CALLBACK MainWndProc( HWND , UINT , WPARAM , LPARAM ) ;// 回调函数
#include "MissileToPlane.cpp" //使用外部文件
int WINAPI WinMain( //WINAPI也可用APIENTRY代替,在Win31下为int
HINSTANCE hInstance, // 当前实例句柄
HINSTANCE hPrevInstance, // 前一个实例句柄
LPSTR lpCmdLine, // 命令行字符串
int nCmdShow // 窗口显示方式
)
{
/*******************************1.建立并注册窗口类*********************************/
WNDCLASS wcMyWin ; //建立窗口类
if( !hPrevInstance ) //注册,设置窗口类属性
{
wcMyWin.style = CS_HREDRAW | CS_VREDRAW ; //窗口类的风格,为0或CS_HREDRAW | CS_VREDRAW
//该风格表示当窗口大小发生变化时,重画整个窗口
wcMyWin.lpfnWndProc = (WNDPROC)MainWndProc ; //检索改类窗口消息的函数
wcMyWin.cbClsExtra = 0 ; //每个类无额外数据
wcMyWin.cbWndExtra = 0 ; //每个窗口无额外数据
wcMyWin.hInstance = hInstance ; //拥有类的应用程序
wcMyWin.hIcon = LoadIcon(hInstance , "MYICON") ;//LoadIcon(NULL,IDI_APPLICATION):用缺省图标
wcMyWin.hCursor = LoadCursor(NULL, IDC_ARROW) ;//光标
wcMyWin.hbrBackground = (HBRUSH)(COLOR_WINDOW+1) ;//VC++6用,+0灰色,+1白色,+2黑色;+7灰色
wcMyWin.lpszMenuName = "MyMenu"; //有菜单,菜单名MyMenu,并附资源文件//无菜单:NULL
wcMyWin.lpszClassName = "MyWinWClass" ;//指定MyWinWClass类窗口类名
if(!RegisterClass(&wcMyWin))// 对窗口类进行注册。
{
return 0 ;
}
}
/*****************************2.保存实例句柄,并创建主窗口*******************************/
hInst = hInstance;
hWndMain = CreateWindow(
"MyWinWClass", //窗口类名,要与注册时用的名相同
"Win32程序设计:导弹打飞机", //窗口标题
WS_OVERLAPPEDWINDOW, //窗口风格
CW_USEDEFAULT, CW_USEDEFAULT, //窗口初始时的左上角点
CW_USEDEFAULT, CW_USEDEFAULT, //窗口初始时的宽、高
NULL, //父窗口句柄
NULL, //窗口菜单句柄
hInstance, //实例句柄
NULL); //附加数据
if (!hWndMain)return (FALSE); // 如果创建窗口失败,则返回FALSE
/***********************3.显示窗口***********************************/
ShowWindow(hWndMain , SW_SHOWMAXIMIZED); // 窗口显示
UpdateWindow(hWndMain) ; // 更新显示
/***********************4.消息循环***********************************/
// 进入消息循环;从应用程序消息队列中检取消息,当检取的消息是WM_QUIT时,退出消息循环。
MSG msg ; //消息
while (GetMessage(&msg , NULL , 0 , 0))
{
TranslateMessage(&msg); // 把虚拟键消息翻译为字符消息。
DispatchMessage(&msg) ; // 把消息分配到相应的窗口过程中去。
}
return (msg.wParam);
}
/********************************************************************
回调函数: MainWndProc(HWND, UINT, WPARAM, LPARAM)
用途: 处理主窗口消息
********************************************************************/
LRESULT CALLBACK MainWndProc(
HWND hWnd, /* 窗口句柄 */
UINT message, /* 消息类型 */
WPARAM wParam, /* 附加信息 */
LPARAM lParam ) /* 附加信息 */
{
HDC hdc;
PAINTSTRUCT ps ;
static HANDLE hHelv ;
LOGFONT LogFont ; //逻辑汉字
RECT rc ; //声明RECT结构(矩形区)
switch (message)
{
case WM_CREATE://建立编辑控件,按钮控件,逻辑字号等
MessageBox(NULL,"导弹打飞机!","导弹打飞机 ",MB_OK);
memset(&LogFont , 0 , sizeof(LOGFONT));
LogFont.lfHeight = 30 ;//字符高
hHelv = CreateFontIndirect(&LogFont);
break ;
case WM_PAINT://绘图、计算、屏幕输出计算结果
hdc = BeginPaint(hWnd, &ps);
SelectObject(hdc,hHelv);//用特效字
//在此加入代码
rc.top = 10 ; rc.left = 10 ;
rc.right = 2000 ; rc.bottom = 1000; //设置文本、数字显示区
char szBuffer[160] ;
ostrstream(szBuffer,160)<<"导弹打飞机:飞机在一个圆周上飞行,导弹从圆心(radius,radius)出发\n"<<ends;
SetTextColor(hdc, RGB(255, 100, 200 )) ;
DrawText(hdc,szBuffer,strlen(szBuffer),&rc,DT_EXPANDTABS);
MissleToPlane( hdc ); //调用导弹打飞机函数
//所加代码结束
ValidateRect(hWnd,NULL);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY: // 消息: 本窗口正将被销毁。
PostQuitMessage(0); // 请求退出窗口和应用程序。
break;
default:// 采用默认窗口过程对未处理的消息进行必要的处理。
return (DefWindowProc(hWnd, message, wParam, lParam));
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -