VS2010更改MFC标题及标题栏
图标和exe图标
在VS2010下新建一个M FC的多文档应用程序,程序默认的标题是“文档名-工程名”。图标默认的是写着MFC的三个方块。但在很多软件中都不是使用的默认设置,开发者们都将标题和图标改过,以符合项目要求,而且直观好看。
一修改标题
(一)基于MFC对话框
*对话框标题栏内容为静态
MFC对话框型程序动态修改自身标题的方法有以下几种:
1. 直接在资源视图-Dialog-属性-外观的“Caption”中修改。
2. 最简单的是用对话框类自身的类函数:
BOOL CMyDlg::OnInitD ialog()
{
CDialog::OnInitD ialog();
......
SetWind owText("My Title");
returnTRUE; // returnTRUE unless you set the focus to a control
}
3. 其次还可以用A PI函数来完成:
::SetWind owText(m_hWnd, "My Title"); 或 ::SetWind owText(GetSafe Hwnd(), "My Title");
m_hWnd也是MFC对话框类的成员变量,可直接引用,GetSafe Hwnd()的作用与其一样。
*对话框标题栏内容为动态生成的
在对应对话框的初始化函数O nInitD ialog()中添加以下代码:
CString title;
title.Format("%d",Id);//在标题栏动态显示Id的值
this->SetWind owText(title);
(二)基于MFC单、多文档
标题分为前后两部分,前面一部分默认是文档名,后面一部分默认是工程名,比如我新建一个叫做UITE ST的工程,那标题就是“UITEST1-UITEST”。后面都用这个工程为例。
1.修改前半部分:
可以重载文档类的虚函数Se tTile,如下
void CTestDo c::SetTitl e(LPCTSTR lpszTit le)
{
CDocume nt::SetTitl e(L"你的标题");
}
也可以在UIT ESTDoc.app中,在BOOL CUITEST Doc::OnNewDo cument()函数中添加Se tTitle(L"你的标题")
2.修改后半部分:
改资源字符串
在资源视图的S tringTable中到IDR_M AINFRA ME,将其标题改为你想要的标题
3.去掉-:
去掉标题中间的-,只显示后面的标题,
方法1:通过重载CFr amWnd类的OnUpd ateFra meTitle函数
virtual void OnUpdat eFrame Title(BOOL NaDa);
void CMainFr ame.:OnUpdat eFrame Title(BOOL NaDa)
{
CString csAppNa me;
csAppNa me.Format(AFX_IDS_APP_T ITLE);
SetWind owText(csAppNa me);
}
此时显示的结果只有字符串资源AFX_I DS_APP_TITLE所定义的字符串,当然也可以把S etWind owText(csAppNa me)中的csApp Name换成你想要的标题字符串。
方法2:在CMainF rame的P reCrea teWind ow函数中修改窗口风格
BOOL CMainFr ame.:PreCrea teWind ow(CREATES TRUCT& cs)
{
cs.style &= ~(LONG) FWS_ADD TOTITL E;
returnCFrameW nd::PreCrea teWind ow(cs);
}
使用此方法,窗口的标题只显示IDR_M AINFRA ME字符串中第一个\n之前的部分
二修改图标
(一)VS2010程序文件夹下生成的exe文件图标
创建一个新工程,可以什么都不加。打开.rc,创建或打开Ic on资源(以下都以Ico n为例)。
单击工程窗口的资源视图标签,选中资源ID为IDR_MA INFRAM E图标资源,然后按Delete键把它删除掉,当然也可以不删,具体后面会讲到。
从资源菜单中选择Resou rce,然后选择Ico n,添加资源,选中Icon类型,点击导入,此时会叫你选择本地的图片,记住必须选择.ioc格式的图片,否则导入失败。
把新图标的资源ID改为ID I_ICON(也可以不改)。具体做法如下:
有一点很重要,你改知道就是打开Heade r Files下的Resour ce.h,到Icon下的图标,系统默认是从128开始的,
#defineIDR_MAI NFRAME 128
#defineIDR_ICO NTETYP E 129(单/多文档程序的文档图标)
#defineIDI_ICO N1 130
#defineIDI_ICO N2 131
VS2010程序文件夹下生成的exe文件图标是用I con下几个图标中val ue值最小的,顺序为IDR_MAINFR AME、IDR_ICO NTETYP E、新加的,所以想更改生成的exe文件图标,只要保证图标的value值是Icon下几个图标中最小的就可以了
(1)导入自己的.ioc图片,并在Resou rce.h中,将自己加的ic on资源Va lue改为最小,如下,因此不一定要删除IDR_M AINFRA ME #defineIDR_MAI NFRAME129
#defineIDI_ICO N1 128(自己添加的icon)
(2)然后编译运行,到你的deb ug目录,你将看到图标已经更改的.exe执行文件,这种方法可以将任何你喜欢的图片做成.exe
文件图标
(二)修改运行程序标题栏图标
1. 基于MFC对话框
(1)如上操作,导入自己喜爱的ico图片,编辑新加ico n的ID,比如我新加的I con资源I D为 IDI_ICO N1
(2)基于对话框的程序,在构造函数中有一句
m_hIcon = AfxGetA pp()->LoadIco n(IDR_MAI NFRAME);
此时把IDR_MAINFR AME改为我的IDI_I CON1的图标名。
(3)编译运行你看到自己喜爱的图片出现在标题栏的位置了。
2. 基于MFC单、多文档
替换默认的MF C图标,先要自己画一个符合格式要求的位图或从外部导入一个图标,修改其属性名,假设为IDI_IDI1。在MainFr m 的OnCr eate()里添加如下代码:
HICON m_hIcon;
m_hIcon = AfxGetA pp()->LoadIco n(IDI_IDI1);
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
字符串函数title作用其中big icon是32×32,small icon是16×16
(三).ico格式图片制作
ico.55.la/
上面的网址可以将jpg .jpeg .gif .png 转换为.ioc 之后的操作你该会的!
整合以下几篇文章:blog.csdn/link_/article/details/7261801
wwwblogs/Romi/archive/2012/02/14/2351799.html
734507691.blog.163/blog/static/1164804662010112383027130/
blog.sina/s/blog_6a1cdb3f0101hb sj.html
附:IDR_MAI NFRAME字符串资源
声明这个篇文章来自:hi.baidu/flyeagl e88/blog/item/c1aa0c0e07862de037d1226c.html 感谢
打开程序资源文件(*.rc),展开“StringTable”,到ID为ID R_MAIN FRAME的字符串资源,可看见它由“\n”字符分隔的7个字串,这可以从MFC生成向导第4步对话框上看到。对于IDR_M AINFRA ME资源,可以利用CDocTem plate::GetDocS tring来获取各个字串,也可以根据每个子串定义设置它:
值说明
CDocTem plate::windowT itle
主窗口标题栏上的字符串,仅在SDI程序出现,MDI程序将以IDR_MA INFRAM E字符串为默认值。
CDocTem plate::docName
缺省文档的名称。缺省是无标题。
CDocTem plate::fileNew Name
文档类型的名称。如果应用程序支持多种类型的文档,此字符串将显示在"File/New"对话框中。如果没有指定,就不能够在"File/New"对话框处理这种文件。
CDocTem plate::filterName
文档类型的描述和一个适用于此类型的通配符过滤器。这个字符串将出现在“File/Open”对话框中的文件类型列表框中。要和CDocT emplat e::filterExt一起使用。
CDocTem plate::filterExt
文档的扩展名。如果没有指定,就不能够在“File/Ope n”对话框中处理这种文档。要和CDocT emplat e::filterN ame一起使用。CDocTem plate::regFile TypeId
如果你以::Registe rShell FileTy pes向系统的注册表注册文件类型,此值会出现在H KEY_CL ASSES_ROOT之下成为其子项,并仅供Wind ows内部使用。如果没有指定,这种文件类型就无法注册。
CDocTem plate::regFile TypeNa me
这也是存储在注册表中的文件类型名称。它会显示于程序中用以访问注册表的对话框内。
因此,对于IDR_M AINFRA ME资源标题(Caption)为:
Hello\nNo Name\nGraphi c\nText Files(*.txt)\n.txt\nGraphi c.Documen t\nGraphi c.Documen t
来说,对应下图:
【文件\新建】和【文件\打开】菜单项的命令响应函数都是C WinApp类提供的。CWinApp类有一个成员变量:m_pDocM anager,它指向CDoc Manage r对象的指针,即CWinAp p负责管理文档管理器,而后者有一个文档模板指针链表:m_templ ateList,用来保存文档模板指针,即文档管理器负责管理文档模板,而后者又用来管理文档类、框架类和视类,一起为文档服务。
vs2010如何生成EXE文件如何更改EXE程序图标
vs2010如何生成EXE文件
F5启动调试后,进入下面路径查:
我的文档\VisualStudio2010\Project s\项目名称\项目名称\bin\Debug
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论