[MFC]程序外观修改

原创 2012年03月27日 15:13:15

1.      改变窗口的外观及大小

 

窗口创建之前修改窗口样式 (分别在窗口类和视口类中要修改)

————————————————框架类中修改样式

改变窗口的大小及尺寸,Afx开头的就是MFC提供的全局函数,AfxRegisterWndClass用来设定类风格及光标画刷,返回一个类指针。

BOOLCMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

         if(!CFrameWnd::PreCreateWindow(cs) )

                   returnFALSE;

//////////////////////////////////第一种方法改变类风格,改变窗口标题

/*     cs.cx= 1000;

         cs.cy= 200;

         //用于将FWS_ADDTOTITLE这种类风格去掉 ,取反,然后与操作

         cs.style&= ~FWS_ADDTOTITLE;

         cs.lpszName= "Chen' s";*/

//////////////////////////////////第二种方法改变类风格

/*     WNDCLASSwndcls;

         wndcls.cbClsExtra= 0 ;

         wndcls.cbWndExtra= 0 ;

         wndcls.hbrBackground= (HBRUSH) GetStockObject(BLACK_BRUSH);

         wndcls.hCursor= LoadCursor(NULL,IDC_CROSS);

         wndcls.hIcon= LoadIcon(NULL,IDI_ERROR);

         wndcls.hInstance= AfxGetInstanceHandle();

         wndcls.lpfnWndProc= ::DefWindowProc;

         wndcls.lpszClassName="Chen 's";

         wndcls.lpszMenuName= NULL;

         wndcls.style= CS_HREDRAW | CS_VREDRAW;

 

         RegisterClass(&wndcls);

         cs.lpszName= "Chen 's";*/

//////////////////////////////////第三种方法改变类风格

         cs.lpszClass= AfxRegisterWndClass(CS_VREDRAW|CS_VREDRAW,0,0,

                   LoadIcon(NULL,IDI_WARNING));

         returnTRUE;

}

 

————————————————视口类中修改样式

BOOLCTestView::PreCreateWindow(CREATESTRUCT& cs)

{

 

         //在CMainFrame中注册的类名,必须要在这个地方声明,View类是覆盖在Frame类上面的

         //cs.lpszClass= "Chen 's";

         cs.lpszClass= AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW ,LoadCursor(NULL,IDC_CROSS),

                   (HBRUSH)GetStockObject(BLACK_BRUSH));

         returnCView::PreCreateWindow(cs);

}

 

窗口创建之后修改窗口样式 (同样在窗口类和视口类中要修改)

——————在框架类中修改应用程序图标

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

….

….

         SetClassLong(m_hWnd,GCL_HICON,(LONG)LoadIcon(NULL,IDI_ERROR));

         return0;

}

——————在视口类中修改应用程序背景和光标

int CTestView::OnCreate(LPCREATESTRUCTlpCreateStruct)

{

         if(CView::OnCreate(lpCreateStruct) == -1)

                   return-1;

         SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(LONG)GetStockObject(BLACK_BRUSH));

         SetClassLong(m_hWnd,GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_HELP));

         return0;

}

 

————————————————实现窗口图标的动态切换

1.      在资源中视图中Import图标资源,并在CmainFrame中并以m_hIcons[3]成员变量,在OnCreate中初始化,并熟悉或的应用程序实例的三种方法

//声明the是在外部的一个源文件中定义的。CTestApp是应用程序类名

extern CTestApp theApp;

int CMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct)

{

         ….

         ….

         //      SetClassLong(m_hWnd,GCL_HICON,(LONG)LoadIcon(NULL,IDI_ERROR));

         //三种方法获得应用程序实例句柄

         m_hIcons[0]= LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDI_ICON1));

         m_hIcons[1]= LoadIcon(theApp.m_hInstance,MAKEINTRESOURCE(IDI_ICON2));

         m_hIcons[2]= LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(IDI_ICON2));

         //设置窗口图标

         SetClassLong(m_hWnd,GCL_HICON,(LONG)m_hIcons[0]);

 

// timer identifier// time-out value ,第三个是窗口过程

        

//设置定时器,每隔一秒触发一次

SetTimer(1,1000,NULL);

         return0;

}

2.      在CmainFrame中捕获WM_TIMER消息

void CMainFrame::OnTimer(UINT nIDEvent)

{

         //index不加static,那么每次进入OnTimer -->index = 1, ,就达不到图标变换的效果了(初始显示的时候index= 0)

         //解决方法:定义成CMainframe派生类的成员变量或这是全局变量

         staticint index = 1;

         SetClassLong(m_hWnd,GCL_HICON,(LONG)m_hIcons[index]);

//index范围限定在0~3之间

         index = ++index%3 ;       

         CFrameWnd::OnTimer(nIDEvent);

}

 

 

美化combox 用法 —— 为其添加图片,改变显示方式

对C# 中Combox控件的一些简单的操作,改变其显示特性,主要是改变其中的项的属性 我们需要注意的是:每次为Combox添加项的时候,就会触发DrawItem事件,而我们正是通过DrawIte...
  • chanyinhelv
  • chanyinhelv
  • 2013年08月01日 16:28
  • 3419

Java中改变应用程序界面外观(javax.swing.UIManager类和LookAndFeel类)

javax.swing.UIManager类 javax.swing.UIManager类是Swing界面管理核心,管理Swing应用程序样式。 LookAndFeel抽象类 与javax.swi...
  • u010995220
  • u010995220
  • 2015年11月15日 10:10
  • 4423

修改MFC程序标题(转)

MFC程序的默认的标题是“无标题-title”,其中title是应用程序的名称,我们应如何修改MFC窗口标题来符合自己的要求?     MFC程序的文档类中定义了一个虚函数SetTitle,用于...
  • foreverhuylee
  • foreverhuylee
  • 2014年06月12日 10:12
  • 1693

如何修改MFC AppWizard向导生成的框架程序的外观和大小part03上

  • 2010年12月29日 08:58
  • 22.58MB
  • 下载

如何修改MFC AppWizard向导生成的框架程序的外观和大小part03下

  • 2010年12月29日 08:59
  • 18.02MB
  • 下载

孙鑫MFC第九章 修改程序的外观 和 工具栏状态栏

1.修改外观和图标可以在MainFrm中进行,而修改背景和光标只能在View中进行。为什么?因为view是在MainFrame的前面。 a.在MainFrame中      PreCreateWi...
  • u012938203
  • u012938203
  • 2014年10月08日 09:20
  • 635

孙鑫-MFC笔记十--修改应用程序外观

修改应用程序的外观 窗口创建之前修改: 要改变一个框架窗口的外观和大小,我们应该在CMainFrame这个类当中的PreCreateWindow函数当中完成。 PreCreateWindow这个...
  • App_12062011
  • App_12062011
  • 2012年05月15日 00:05
  • 1664

MFC教程lesson 9-程序的外观(光标背景、启动页).rar

  • 2017年02月19日 20:10
  • 165.68MB
  • 下载

MFC应用SkinMagic皮肤可视化包更换程序外观皮肤

1.SkinMag MFC美化界面库 总所周知,MFC的皮肤比较呆板,有各种各样的MFC界面库可以供我们使用,来修改程序的外观。C++界面库可以参见:http://blog.csdn.net/wit...
  • HW140701
  • HW140701
  • 2017年01月04日 21:14
  • 2383

定制MFC SDI应用程序外观

本文主要讲如何定制
  • zmajun
  • zmajun
  • 2014年04月22日 10:27
  • 1014
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[MFC]程序外观修改
举报原因:
原因补充:

(最多只允许输入30个字)