使用mfc修改窗口背景,图表
2019独角兽企业重金招聘Python工程师标准>>>
打开vc+界面。 一. 窗口创建之前修改,用自定义的窗口类WNDCLASS wc
由于窗口的图标,光标,背景是在窗口类设计是指定的,因此要改的话, 就自己定义一个WNDCLASS wc,按照自己的需要填充wc,并注册RegisterClass(&wc)
在MFC程序中,要修改出现窗口图表只能在框架类进行(CMainFrame)
要修改背景和光标,应该在视类中进行,在框架类修改则看不见效果,因为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
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修改窗口背景,图表相关推荐
- MFC修改窗口无标题和标题信息,修改执执行文件图标
一.创建MFC后 窗口显示的是 无标题-工程名 修改方法在网上看到了几种,下面介绍下比较简单的一种: 1.在MianFrame.c文件中找到这个函数 BOOL CMainFrame::PreCreat ...
- 电脑使用技巧(Win10修改窗口背景颜色)
1.首先,打开"运行",用"Win+R"组合快捷键即可,并输入"regedit",确定打开注册表 2.根据路径找到:HKEY_CURRENT ...
- win8修改窗口背景颜色的方法
在Windows默认主题下,打开注册表编辑器(win键+R,即运行,输入regedit),依次双击打开HKEY_CURRENT_USER\Control Panel\Colors\,将Window的键 ...
- OpenGL入门:窗口开启、改变窗口背景颜色
OpenGL入门 开启一个窗口: 运用OpenGL在窗口中绘制图形 显示一个窗口 利用OpenGL修改窗口背景颜色 改变颜色的闪烁 开启一个窗口: // Include for GLFW header ...
- c语言mfc窗口跳到下个窗口,MFC停靠窗口实现(CDockablePane)
工作中编写MFC界面程序时用到了停靠窗口,为了避免之后用到时再去查询,这里记录下. 步骤 1.定义一个继承自CDockablePane的类 Class CDockableTest : public C ...
- 【Visual Studio 2019】创建 MFC 桌面程序 ( 安装 MFC 开发组件 | 创建 MFC 应用 | MFC 应用窗口编辑 | 为按钮添加点击事件 | 修改按钮文字 | 打开应用 )
文章目录 一.安装 MFC 开发组件 二.创建 MFC 应用 三.MFC 应用窗口编辑 四.为按钮添加点击事件 五.修改按钮文字 六.打开系统其它应用 七.博客源码 一.安装 MFC 开发组件 打开 ...
- 如何修改PyCharm窗口背景颜色?
如何修改PyCharm窗口背景颜色? 前言 PyCharm是一种Python IDE,它可以提高用户在使用Python语言时的开发效率,它的默认窗口颜色是白色,但有时候我们希望窗口颜色较深一些,这样有 ...
- MFC如何修改窗口背景色(转载)
如何修改frame窗口的背景颜色? MDI窗口的客户区是由frame窗口拥有的另一个窗口覆盖的.为了改变frame窗口背景的颜色,只需要这个客户区的背景颜色就可以了.你必须自己处理WM_ERASEBK ...
- Matlab figure窗口背景颜色修改为白色
Matlab figure窗口背景颜色修改白色 MATLAB figure窗口背景颜色默认是灰色,如下图 修改figure窗口的背景 在命令行窗口中输入以下代码并回车 set(0,'defaultfi ...
最新文章
- 科技部认定的独角兽名单来了!共164家
- 无服务器计算将会取代容器?
- 2020必知的 10 大顶级 python 库
- 《标准库time、datetime、calendar、random的使用》
- struts2的select标签的用法
- jvm_虚拟机组成部分概述
- UWP 使用OneDrive云存储2.x api(二)【全网首发】
- 栈溢出笔记1.4 黑掉example_2
- 小米速度!雷军再祭 All in AIoT 大招!
- iptables数据包、连接标记模块MARK/CONNMARK的使用(打标签)
- vue项目多主题风格切换(适配暗黑模式)
- c语言开发蓝牙驱动 win7,ATK-hc05蓝牙串口模块驱动
- Jmeter性能测试流程
- 三极管的基础知识(下)①
- python安装numpy模块教程_python安装numpy科学计算模块
- THE BUTTON OF HABIT IS ON
- 神卓互联内网穿透微信公众平台 API 实现微信登录
- ElasticSearch - 简介
- android 语言包 external,为Android添加多国语言包.pdf
- 104-RTKLIB中PPP设计
热门文章
- 初学者必学教程——JQuery的简介
- 解决ASP.NET MVC(post数据)Json请求太大,无法反序列化,而报【远程服务器返回错误: (500) 内部服务器错误】...
- ReactiveCocoa中信号的使用
- C# 版本设计模式(Design Pattern)(转)
- ICommand接口
- Leetcode 814.二叉树剪枝
- python/pytorch中的一些函数介绍
- python 求点集的距离矩阵
- SCI投稿中的简写(ADM,AE,EIC等)与状态解读
- 错误:'BasicLSTMCell' object has no attribute '_kernel'