2019独角兽企业重金招聘Python工程师标准>>>

打开vc+界面。 一. 窗口创建之前修改,用自定义的窗口类WNDCLASS wc

由于窗口的图标,光标,背景是在窗口类设计是指定的,因此要改的话, 就自己定义一个WNDCLASS wc,按照自己的需要填充wc,并注册RegisterClass(&wc)

  1. 在MFC程序中,要修改出现窗口图表只能在框架类进行(CMainFrame)

  2. 要修改背景和光标,应该在视类中进行,在框架类修改则看不见效果,因为MFC程序有2个窗口,视类和框架类,视类覆盖了框架类

在框架类CMainFrame的虚函数PreCreateWindow中去修改,这样等于是在窗口创建之前就修改.

[cpp] view plaincopy 01.//在窗口创建之前修改,要修改什么,就对编写一个自己的窗口类wc,并注册
02.BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
03.{
04. if( !CFrameWnd::PreCreateWindow(cs) )
05. return FALSE;
06. // TODO: Modify the Window class or styles here by modifying
07. // the CREATESTRUCT cs
08.
09.//------- 定义一个新的窗口类 wc
10.
11. WNDCLASS wc={0};
12. wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
13. wc.hCursor =LoadCursor(NULL,IDC_HELP);
14. wc.hIcon =LoadIcon(NULL,IDI_ERROR);
15. wc.hInstance = AfxGetInstanceHandle();
16. wc.lpfnWndProc = ::DefWindowProc;//全局的Win32API
17. wc.lpszClassName ="sunxin.org"; //这个名称取定了,不能随便改了,这就好比一个资源的名称,
18. wc.lpszMenuName =NULL;
19. wc.style =CS_HREDRAW|CS_VREDRAW;
20.
21. RegisterClass(&wc); //注册
22. cs.lpszClass = "sunxin.org"; //把注册的类传给cs
23. return TRUE;
24.}

客户区背景色,光标等的修改还必须在CStyleView的虚函数PreCreateWindow中去进行:

[cpp] view plaincopy 01.BOOL CStyleView::PreCreateWindow(CREATESTRUCT& cs)
02.{
03. // TODO: Modify the Window class or styles here by modifying
04. // the CREATESTRUCT cs
05.
06.//客户区背景色,光标等的修改生效都必须在View类中加下面这条语句,使用前面已经注册的窗口类名
07.
08. cs.lpszClass = "sunxin.org";//这个"sunxin.org"就是前面定义的那个窗口类的类名
09.
10. return CView::PreCreateWindow(cs);
11.}

二. 窗口创建之前修改,用全局函数AfxRegisterWndClass 修改

LPCTSTR AFXAPI AfxRegisterWndClass( UINT nClassStyle, HCURSOR hCursor = 0, HBRUSH hbrBackground = 0, HICON hIcon = 0 ); 在框架类中:CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

[cpp] view plaincopy 01.BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
02.{
03. if( !CFrameWnd::PreCreateWindow(cs) )
04. return FALSE;
05. // TODO: Modify the Window class or styles here by modifying
06. // the CREATESTRUCT cs
07.
08.//------使用全局函数AfxRegisterWndClass来修改
09. cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,
10. 0, //不改光标,因为在框架类总改了也看不到
11. 0,//不改背景,因为在框架类中改了也看不见框架的背景
12. LoadIcon(NULL,IDI_WARNING) // 能该的就是这个框架图标了
13. );
14.
15.
16. return TRUE;
17.}

在VIEW类中:BOOL CStyleView::PreCreateWindow(CREATESTRUCT& cs)

[cpp] view plaincopy 01.BOOL CStyleView::PreCreateWindow(CREATESTRUCT& cs)
02.{
03. // TODO: Modify the Window class or styles here by modifying
04. // the CREATESTRUCT cs
05.
06. //------使用全局函数AfxRegisterWndClass来修改
07. cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,
08. LoadCursor(NULL,IDC_CROSS), //改光标
09. (HBRUSH)GetStockObject(BLACK_BRUSH),//改背景,如果用NULL就是透明的了
10. 0 // 图标不用改了,在框架类中改了.
11. );
12.
13.
14.
15. return CView::PreCreateWindow(cs);
16.}
三. 窗口创建之后修改,用SetClassLong(),在OnCreate()中修改/

  因为是在窗口创建之后,所以肯定是在OnCreate()中.在MainFrame中也只能修改ICON

[cpp] view plaincopy

  1.  int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    

02.{
03. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
04. return -1;
05.
06. if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
07. | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
08. !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
09. {
10. TRACE0("Failed to create toolbar\n");
11. return -1; // fail to create
12. }
13.
14.
15. if (!m_wndStatusBar.Create(this) ||
16. !m_wndStatusBar.SetIndicators(indicators,
17. sizeof(indicators)/sizeof(UINT)))
18. {
19. TRACE0("Failed to create status bar\n");
20. return -1; // fail to create
21. }
22.
23.
24. // TODO: Delete these three lines if you don't want the toolbar to
25. // be dockable
26. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
27. EnableDocking(CBRS_ALIGN_ANY);
28. DockControlBar(&m_wndToolBar);
29.
30.//------用SetClassLong()修改标题栏图标
31. SetClassLong(m_hWnd,GCL_HICON,(LONG)LoadIcon(NULL,IDI_ERROR));
32.
33.
34. return 0;
35.}

在view中可以修改背景色,光标等等,但是view中没OnCreate函数,所以还必须先添加消WM_CREATE息响应函数

[cpp] view plaincopy 01.// CStyleView message handlers
02.
03.// 在CStyleView类中增加WM_CREATE消息响应函数
04.int CStyleView::OnCreate(LPCREATESTRUCT lpCreateStruct)
05.{
06. if (CView::OnCreate(lpCreateStruct) == -1)
07. return -1;
08.
09. // TODO: Add your specialized creation code here
10.
11.//------用SetClassLong()修改背景色和光标
12. SetClassLong(m_hWnd,GCL_HBRBACKGROUND,(LONG)GetStockObject(BLACK_BRUSH));//修改背景色
13. SetClassLong(m_hWnd,GCL_HCURSOR,(LONG)LoadCursor(NULL,IDC_HELP));//修改背景色
14.
15. return 0;
16.}
end

转载于:https://my.oschina.net/bigfool007139/blog/399118

使用mfc修改窗口背景,图表相关推荐

  1. MFC修改窗口无标题和标题信息,修改执执行文件图标

    一.创建MFC后 窗口显示的是 无标题-工程名 修改方法在网上看到了几种,下面介绍下比较简单的一种: 1.在MianFrame.c文件中找到这个函数 BOOL CMainFrame::PreCreat ...

  2. 电脑使用技巧(Win10修改窗口背景颜色)

    1.首先,打开"运行",用"Win+R"组合快捷键即可,并输入"regedit",确定打开注册表 2.根据路径找到:HKEY_CURRENT ...

  3. win8修改窗口背景颜色的方法

    在Windows默认主题下,打开注册表编辑器(win键+R,即运行,输入regedit),依次双击打开HKEY_CURRENT_USER\Control Panel\Colors\,将Window的键 ...

  4. OpenGL入门:窗口开启、改变窗口背景颜色

    OpenGL入门 开启一个窗口: 运用OpenGL在窗口中绘制图形 显示一个窗口 利用OpenGL修改窗口背景颜色 改变颜色的闪烁 开启一个窗口: // Include for GLFW header ...

  5. c语言mfc窗口跳到下个窗口,MFC停靠窗口实现(CDockablePane)

    工作中编写MFC界面程序时用到了停靠窗口,为了避免之后用到时再去查询,这里记录下. 步骤 1.定义一个继承自CDockablePane的类 Class CDockableTest : public C ...

  6. 【Visual Studio 2019】创建 MFC 桌面程序 ( 安装 MFC 开发组件 | 创建 MFC 应用 | MFC 应用窗口编辑 | 为按钮添加点击事件 | 修改按钮文字 | 打开应用 )

    文章目录 一.安装 MFC 开发组件 二.创建 MFC 应用 三.MFC 应用窗口编辑 四.为按钮添加点击事件 五.修改按钮文字 六.打开系统其它应用 七.博客源码 一.安装 MFC 开发组件 打开 ...

  7. 如何修改PyCharm窗口背景颜色?

    如何修改PyCharm窗口背景颜色? 前言 PyCharm是一种Python IDE,它可以提高用户在使用Python语言时的开发效率,它的默认窗口颜色是白色,但有时候我们希望窗口颜色较深一些,这样有 ...

  8. MFC如何修改窗口背景色(转载)

    如何修改frame窗口的背景颜色? MDI窗口的客户区是由frame窗口拥有的另一个窗口覆盖的.为了改变frame窗口背景的颜色,只需要这个客户区的背景颜色就可以了.你必须自己处理WM_ERASEBK ...

  9. Matlab figure窗口背景颜色修改为白色

    Matlab figure窗口背景颜色修改白色 MATLAB figure窗口背景颜色默认是灰色,如下图 修改figure窗口的背景 在命令行窗口中输入以下代码并回车 set(0,'defaultfi ...

最新文章

  1. 科技部认定的独角兽名单来了!共164家
  2. 无服务器计算将会取代容器?
  3. 2020必知的 10 大顶级 python 库
  4. 《标准库time、datetime、calendar、random的使用》
  5. struts2的select标签的用法
  6. jvm_虚拟机组成部分概述
  7. UWP 使用OneDrive云存储2.x api(二)【全网首发】
  8. 栈溢出笔记1.4 黑掉example_2
  9. 小米速度!雷军再祭 All in AIoT 大招!
  10. iptables数据包、连接标记模块MARK/CONNMARK的使用(打标签)
  11. vue项目多主题风格切换(适配暗黑模式)
  12. c语言开发蓝牙驱动 win7,ATK-hc05蓝牙串口模块驱动
  13. Jmeter性能测试流程
  14. 三极管的基础知识(下)①
  15. python安装numpy模块教程_python安装numpy科学计算模块
  16. THE BUTTON OF HABIT IS ON
  17. 神卓互联内网穿透微信公众平台 API 实现微信登录
  18. ElasticSearch - 简介
  19. android 语言包 external,为Android添加多国语言包.pdf
  20. 104-RTKLIB中PPP设计

热门文章

  1. 初学者必学教程——JQuery的简介
  2. 解决ASP.NET MVC(post数据)Json请求太大,无法反序列化,而报【远程服务器返回错误: (500) 内部服务器错误】...
  3. ReactiveCocoa中信号的使用
  4. C# 版本设计模式(Design Pattern)(转)
  5. ICommand接口
  6. Leetcode 814.二叉树剪枝
  7. python/pytorch中的一些函数介绍
  8. python 求点集的距离矩阵
  9. SCI投稿中的简写(ADM,AE,EIC等)与状态解读
  10. 错误:'BasicLSTMCell' object has no attribute '_kernel'