如何修改MFC的图标

如何修改MFC的图标,第1张

方法一:找一张ICO图标,替换programname/res/programname.ico文件,就可以啦,这时候你运行后得到的图标可能还是原来MFC的默认图标,这时候你只要把工程目录下的Debug和Release文件删除掉,重新编译生成就能得到更换图标后的程序。或者直接RebuildAll,再运行,怎么样很简单吧。

另外,也可以在工程中 *** 作,在工作区的resorce页中的Icon中把ID为IDR_MAIN的图标资源删除,再导入自己制作的图标资源,把资源ID改为IDR_MAIN即可。

方法二:

上面这个的工作十分简单,但是如果要在程序中写代码改变我们应用程序的图标,比如有时候我们要在程序中动态改变程序的标题栏、任务栏图标或是托盘的图标,那就要花点功夫了。其实也不是很难,主要用几个函数搞定,如果是MFC主要就是

LoadIcon和

SetIcon。

比如我们在OnInitDialog或是OnCreate中加入:

AfxGetApp()->LoadIcon(IDI_ICON1)

SetIcon(ico,true)

SetIcon(ico,false)

另外你可能要问,MFC程序默认是怎么加载它的图标的,其实很简单,在主对话框的构造函数中有这样一句:

m_hIcon

=

AfxGetApp()->LoadIcon(IDR_MAIN)

这就是加载默认图标的,而在OnInitDialog初始化函数中有这两行代码:

SetIcon(m_hIcon,

TRUE)

//

Set

big

icon

SetIcon(m_hIcon,

FALSE)

//

Set

small

icon

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之前的部分

二.修改图标

替换默认的MFC图标,先要自己画一个符合格式要求的位图或从外部导入一个图标,修改其属性名,假设为IDI_IDI1。在MainFrm的OnCreate()里添加如下代码:

HICON m_hIcon

m_hIcon = AfxGetApp()->LoadIcon(IDI_IDI1)

SetIcon(m_hIcon, TRUE)// Set big icon

SetIcon(m_hIcon, FALSE)// Set small icon

其中big icon是32×32,small icon是16×16


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11129548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存