VS2010更改MFC标题及标题栏图标和exe图标
HYPERLINK "/kimiway/p/3203924.html" VS2010 更改MFC标题及标题栏图标和exe图标
在VS2010下新建一个MFC的多文档应用程序,程序默认的标题是“文档名-工程名”。图标默认的是写着MFC的三个方块。但在很多软件中都不是使用的默认设置,开发者们都将标题和图标改过,以符合项目要求,而且直观好看。
一?修改标题
(一)基于MFC对话框
*对话框标题栏内容为静态
MFC对话框型程序动态修改自身标题的方法有以下几种:
1. 直接在资源视图-Dialog-属性-外观的“Caption”中修改。
2. 最简单的是用对话框类自身的类函数:
BOOL CMyDlg::OnInitDialog()
{
? ?CDialog::OnInitDialog();
?? ......
???SetWindowText("My Title");
???return TRUE;? // return TRUE? unless you set the focus to a control
}
3. 其次还可以用API函数来完成:
?::SetWindowText(m_hWnd, "My Title");? 或 ?::SetWindowText(GetSafeHwnd(), "My Title");?
?m_hWnd 也是MFC对话框类的成员变量,可直接引用,GetSafeHwnd()的作用与其一样。
*对话框标题栏内容为动态生成的
在对应对话框的初始化函数OnInitDialog()中添加以下代码:
CString title;
title.Format("%d",Id);//在标题栏动态显示Id的值
this->SetWindowText(title);
(二)基于MFC单、多文档
标题分为前后两部分,前面一部分默认是文档名,后面一部分默认是工程名,比如我新建一个叫做UITEST的工程,那标题就是“UITEST1-UITEST”。后面都用这个工程为例。
1.修改前半部分:
可以重载文档类的虚函数SetTile,如下
void CTestDoc::SetTitle(LPCTSTR lpszTitle)
{
CDocument::SetTitle(L"你的标题");
}
也可以在UITESTDoc.app中,在BOOL CUITESTDoc::OnNewDocument()函数中添加SetTitle(L"你的标题")
2.修改后半部分:
改资源字符串
在资源视图的String Table中找到IDR_MAINFRAME,将其标题改为你想要的标题
3.去掉-:
去掉标题中间的-,只显示后面的标题,
方法1:通过重载CFramWnd类的OnUpdateFrameTitle函数
virtual void OnUpdateFrameTitle(BOOL NaDa);
void CMainFrame.:OnUpdateFrameTitle(BOOL NaDa)
{
CString csAppName;
csAppName.Format(AFX_IDS_APP_TITLE);
SetWindowText(csAppName);
}
此时显示的结果只有字符串资源AFX_IDS_APP_TITLE所定义的字符串,当然也可以把SetWindowText(csAppName)中的csAppName换成你想要的标题字符串。
方法2:在CMainFrame的PreCreateWindow函数中修改窗口风格
BOOL CMainFrame.:PreCreateWindow(CREATESTRUCT& cs)
{
cs.style &= ~(LONG) FWS_ADDTOTITLE;
return CFrameWnd::PreCreateWindow(cs);
}
使用此方法,窗口的标题只显示IDR_MAINFRAME字符串中第一个\n之前的部分
?
二?修改图标
(一)VS2010程序文件夹下生成的exe文件图标
创建一个新工程,可以什么都不加。打开.rc,? 创建或打开Icon资源(以下都以Icon为例)。????
单击工程窗口的资源视图标签,选中资源ID为IDR_MAINFRAME图标资源,然后按Delete键把它删除掉,当然也可以不删,具体后面会讲到。????
从资源菜单中选择Resource,然后选择Icon,添加资源,选中Icon类型,点击导入,此时会叫你选择本地的图片,记住必须选择.ioc格式的图片,否则导入失败。????
把新图标的资源ID改为IDI_ICON(也可以不改)。?具体做法如下:?
有一点很重要,你改知道就是?打开Header Files下的Resource.h,找到I