⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 导弹打飞机.cpp

📁 本程序用VC模拟实现导弹打飞机
💻 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 + -