当前位置: 首页 > 工具软件 > PlaneWar-MFC > 使用案例 >

飞机大战中的MFC笔记

文喜
2023-12-01

1、设置窗体的标题,可以在PlaneWarDoc.cpp文件的OnNewDocument()中设置

BOOL CPlaneWarDoc::OnNewDocument()
{
	if (!CDocument::OnNewDocument())
		return FALSE;

	// TODO: 在此添加重新初始化代码
	// (SDI 文档将重用该文档)
	SetTitle(TEXT("我的飞机大战软件"));
	return TRUE;
}

或者在PlaneWar.cpp中 CPlaneWarApp::InitInstance()中添加

m_pMainWnd->SetWindowText(_T("飞机大战"));

优先级,后者大于前者

2、添加菜单

添加右键菜单,在右键点击事件中,加入菜单

void CMFCApplication2Dlg::OnRButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	CMenu m_Menu;
	CMenu* pMenu;
	CRect rect;
	ClientToScreen(&point);//将显示中的给定点坐标转换为屏幕坐标
	m_Menu.LoadMenu(IDR_RightMENU1);//加载菜单资源
	pMenu = m_Menu.GetSubMenu(0);//获取菜单句柄
	rect.top = point.x; rect.left = point.y;
	pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, rect.top, rect.left, this, &rect);//显示弹出菜单
	CDialogEx::OnRButtonDown(nFlags, point);//调用基类的方法
	//DestroyMenu(m_Menu);
}

菜单栏添加菜单

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != nullptr)
	{
		BOOL bNameValid;
		CString strAboutMenu;
		bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
		ASSERT(bNameValid);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

 

3、去掉菜单

在MainFrame中添加SetMenu(NULL)即可

4、定时器,在类视图中给特定的对象添加定时器消息OnTimer,启动定时器就需要使用CWnd类的成员函数SetTimer。

所以在CView中添加    SetTimer(1, 17, NULL);//刷新界面定时器

5、加载图像,使用ImageList对象

CBitmap me;//升级战机图像
	if (!me.LoadBitmapW(IDB_BMP_ME))
		return FALSE;
	CBitmap me1;//未升级战机图像
	if (!me1.LoadBitmapW(IDB_BMP_ME1))
		return FALSE;
	//创建CImageList对象
	if (!images.Create(PLANE_WIDTH, PLANE_HEIGHT, ILC_COLOR24 | ILC_MASK, 14, 0))//nInitial初始个数
		return FALSE;//cx,cy 图片的宽度
	if (!images1.Create(PLANE1_WIDTH, PLANE1_HEIGHT, ILC_COLOR24 | ILC_MASK, 4, 0))//nInitial初始个数
		return FALSE;//cx,cy 图片的宽度

	//图像链表中加入对象对应的图标对象,之后直接通过该链表访问图标对象
	images.Add(&me, RGB(0,0,0));

	images1.Add(&me1, RGB(0, 0, 0));

 

6、关闭窗口,退出程序

DestroyWindow();或

exit(0);

 

 

 

 类似资料: