修改MFC主窗口界面标题和图标的方法

在VS2010下新建一个MFC的多文档应用程序,程序默认的标题是“文档名-工程名”。图标默认的是写着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之前的部分

 

二.修改图标

替换默认的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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的MFC界面代码,实现了一个带有一个按钮和一个静态文本控件的窗口: ```cpp #include "stdafx.h" #include "MyMFCApp.h" #include "MyMFCAppDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CMyMFCAppApp BEGIN_MESSAGE_MAP(CMyMFCAppApp, CWinApp) ON_COMMAND(ID_HELP, &CWinApp::OnHelp) END_MESSAGE_MAP() // CMyMFCAppApp 构造 CMyMFCAppApp::CMyMFCAppApp() { // TODO: add construction code here, // Place all significant initialization in InitInstance } // 唯一的 CMyMFCAppApp 对象 CMyMFCAppApp theApp; // CMyMFCAppApp 初始化 BOOL CMyMFCAppApp::InitInstance() { // 初始化 MFC AfxEnableControlContainer(); // 创建窗口对象 CMyMFCAppDlg dlg; m_pMainWnd = &dlg; // 显示窗口 INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: 在此放置处理何时用“确定”来关闭 // 对话框的代码 } else if (nResponse == IDCANCEL) { // TODO: 在此放置处理何时用“取消”来关闭 // 对话框的代码 } // 删除窗口对象 if (m_pMainWnd != NULL) delete m_pMainWnd; // 关闭应用程序 ExitInstance(); return FALSE; } // CMyMFCAppDlg 对话框 BEGIN_MESSAGE_MAP(CMyMFCAppDlg, CDialog) ON_BN_CLICKED(IDC_BUTTON1, &CMyMFCAppDlg::OnBnClickedButton1) END_MESSAGE_MAP() // CMyMFCAppDlg 构造 CMyMFCAppDlg::CMyMFCAppDlg(CWnd* pParent /*=NULL*/) : CDialog(IDD_MYMFCAPP_DIALOG, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } // CMyMFCAppDlg 消息处理程序 BOOL CMyMFCAppDlg::OnInitDialog() { CDialog::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { 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); } } // 设置此对话框的图标。当应用程序窗口不是对话框时, // 框架将自动执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CMyMFCAppDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 MessageBox(_T("Hello MFC!")); } ``` 在这个例子中,我们创建了一个名为CMyMFCAppApp的MFC应用程序类和一个名为CMyMFCAppDlg的MFC对话框类。CMyMFCAppDlg对应的是我们的窗口界面,在OnInitDialog函数中我们设置了窗口的图标和添加了一个关于菜单项。在OnBnClickedButton1函数中,我们实现了一个按钮的点击事件,弹出了一个消息框。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值