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


    BOOL CLEDApp::InitInstance()

    中,关于默认的图标的程序:

        CSingleDocTemplate* pDocTemplate;
        pDocTemplate = new CSingleDocTemplate(
            IDR_MAINFRAME,
            RUNTIME_CLASS(CLEDDoc),
            RUNTIME_CLASS(CMainFrame),       // main SDI frame window
            RUNTIME_CLASS(CLEDView));
        AddDocTemplate(pDocTemplate);

    二.修改图标(可以)

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

    一.修改标题

    标题分为前后两部分,前面一部分默认是文档名,后面一部分默认是工程名,比如我新建一个叫做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字符串中第一个 之前的部分

    改前部分标题

     

    1,可以在文档程序的,onNewDocument中用

    SetTitle函数。

    BOOL CViewDoc::OnNewDocument()
    {
        if (!CDocument::OnNewDocument())
            return FALSE;
    
        ((CEditView*)m_viewList.GetHead())->SetWindowText(NULL);
    
        // TODO: add reinitialization code here
        // (SDI documents will reuse this document)
    
        SetTitle("xxx");
        return TRUE;
    }
    发现自己的不足,善于利用找到的方法去扬长避短。行动起来。
  • 相关阅读:
    SpringMvc执行流程
    Lock wait timeout exceeded; try restarting transaction解决方法
    MySQL删除复杂的重复数据的解决方案(一条数据项中包含多个值的情况)
    数据移植时递归运算查询部门及其下级所有部门的问题
    IDEA常用插件
    mybatis和mybatisPlus中解决实体类字段与数据库关键字冲突问题
    时间日期操作
    spring项目中使用MD5加密方式
    idea如何调出仪表盘
    scanf使用过程中的技巧与坑位
  • 原文地址:https://www.cnblogs.com/rechen/p/5100593.html
Copyright © 2020-2023  润新知