MFC之窗体改动工具栏编程状态栏编程程序启动画面

1窗体外观的改动

(1)改动在CMainFrame::preCreateWindow(CREATESTRUCT& cs)

改动标题:cs.style&=FWS_ADDTOTITLE;

cs.lpszNamw="new title";

(2)窗体创建之后改动外观

在CMainframe::Create()中调用SetWindowLong(HWND hwnd,.....)依据參数改动指定的项

全部从CWnd派生的类都是窗体类在这些窗体类中都有一个公有的成员变量保存了和着个窗体对象相关的窗体句柄m_hWnd

获取窗体现有类型并在现有类型上加以改动:SetWindowLong(m_hWnd,GWL_STYLE,GetWindowLong(m_hWnd,GWL_STYLE)&~WS_MAXIMIZEBOX);

(3)窗体产生前改动图标光标背景(即改动窗体类)

在BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中创建自己的窗体类并加以注冊

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

if( !CFrameWnd::PreCreateWindow(cs) )

return FALSE;

WNDCLASS wclass;

wclass.cbClsExtra=0;

wclass.cbWndExtra=0;

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

wclass.hCursor=LoadCursor(NULL,IDC_HAND);

wclass.hIcon=LoadIcon(NULL,IDI_ERROR);

wclass.hInstance=AfxGetInstanceHandle();//用全局函数获取应用程序实例句柄

wclass.lpfnWndProc=::DefWindowProc;//採用全局的缺省函数

wclass.lpszClassName=_T("www.csdn.net/luguifang2011");

wclass.lpszMenuName=NULL;//不影响自己主动创建的菜单

wclass.style=CS_HREDRAW|CS_VREDRAW;

RegisterClass(&wclass);

cs.lpszClass=_T("www.csdn.net/luguifang2011");//j将自己设计的类运用到生产窗体中

return TRUE;

}

注:在CMainframe中仅仅能改变图标光标背景无法改变,想改动背景和光标需再次在BOOL CMenuView::PreCreateWindow(CREATESTRUCT& cs)中进行cs.lpszClass=_T("www.csdn.net/luguifang2011");的改动

另外一种方法用全局函数afxWndRegisterWndClass()返回窗体类

cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,0,0, LoadIcon(NULL,IDI_WARNING));

(4)窗体产生后改动图标光标背景等

使用全局函数SetClassLong()进行相关改动

(5)三种获取应用程序实例句柄的方法:

MakeintResource宏

2工具栏的编程

(1)创建工具栏

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

return -1;

if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

{

TRACE0("未能创建工具栏\n");

return -1;      // 未能创建

}

if (!m_wndStatusBar.Create(this))

{

TRACE0("未能创建状态栏\n");

return -1;      // 未能创建

}

m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&m_wndToolBar);

(2)工具栏的隐藏和显示

DockControlBar(&m_newToolBar);

另外一种用CFreamwnd::ShowControlBar()显示和隐藏

3状态栏的编程

(1)创建

static UINT indicators[] =

{

ID_SEPARATOR,           // 状态行指示器

ID_INDICATOR_CAPS,

ID_INDICATOR_NUM,

ID_INDICATOR_SCRL,

};//通过加入?状态指示器的内容加入?状态栏个数

if (!m_wndStatusBar.Create(this))

{

TRACE0("未能创建状态栏\n");

return -1;      // 未能创建

}

(2)设置状态栏要显示的信息

CStatusBar::SetPaneText()

CStatusBar::CommandToIndex();//由id获取索引

CStatusBar::SetPaneInfo();//改动指示器信息包含状态栏宽度,和类型

CSize sz=dc.GetTextExtent(str)//获取文本宽度

(3)进度栏

CProgressCtrl类

成员函数:SetPos()//设置进度位置

设置进度栏到状态栏中

CStatusBar::GetItemRect()//获取状态栏某一指示器的矩形区域

注:对于获取状态栏的矩形区域须要在窗体产生之后即CMainframe::OnCreate()函数运行完毕之后,所以我们预先自己定义消息在CMainframe::OnCreate()函数中将自己定义消息通过PostMessage()投递到消息队列中在消息的响应函数中来获取指示器矩形区域(不能用sendMessage(),由于该函数会马上去运行响应函数,而不会等OnCreate()运行完)

另外一种能够再响应WM_PAINT消息函数中进行处理

4CFrameWnd::SetMessageText()

放置文本到最长的状态栏(四种方法)

GetDescendantWindow()为Cwnd的成员函数

5加入?程序启动画面

使用VC++组件库中的CsplasWnd

时间: 2024-08-11 07:44:37

MFC之窗体改动工具栏编程状态栏编程程序启动画面的相关文章

MFC之窗口修改工具栏编程状态栏编程程序启动画面

1窗口外观的修改 (1)修改在CMainFrame::preCreateWindow(CREATESTRUCT& cs) 修改标题:cs.style&=FWS_ADDTOTITLE; cs.lpszNamw="new title"; (2)窗口创建之后修改外观 在CMainframe::Create()中调用SetWindowLong(HWND hwnd,.....)根据参数修改指定的项 所有从CWnd派生的类都是窗口类在这些窗口类中都有一个公有的成员变量保存了和着个窗

C++MFC编程笔记day03 MFC工具栏、状态栏、视图窗口

MFC工具栏 相关类: CToolBarCtrl - 父类是 CWnd  封装了工具栏控件相关操作 CToolBar - 父类是CControlBar  封装了工具栏和框架窗口之间的关系 工具栏使用: //把工具栏对象定义为 CMyFrameWnd成员: CToolBar toolbar; //在窗口创建时,加载工具栏资源 int CMyFrameWnd::OnCreate(LPCREATESTRUCT lpc) { toolbar.CreateEx(this,TBSTYLE_FLAT,WS_C

【VC编程技巧】窗体?3.5对单文档或者多文档程序制作启动画面

(一)概要: 文章描述了怎样通过Visual C++ 2012或者Visual C++ .NET,为单文档或者多文档程序制作启动画面.在Microsoft Visual Studio 6.0中对于单文档程序(SDI)我们可以很方便利用微软提供的组件Visual C++ Component (Splash Screen).因为在Microsoft Visual Studio 6.0以后的版本或者Visual C++ .NET没有提供这个组件,我们可以通过自定义对话框来实现Splash Screen

MFC菜单、工具栏和状态栏

菜单:CMenu类 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 CMenu类的主要成员函数        BOOL LoadMenu(UINT nIDResource);        加载菜单资源,并将其附加到CMenu对象上.参数nIDResource指定了要

七. 界面编程--Windows编程课程学习笔记

7.1更改窗口大小.标题.风格 7.1.1 在窗口创建之前更改 如果希望在应用程序窗口创建之前修改它的大小.标题和风格,应该在CMainFrame类的PreCreateWindow成员函数进行.该函数有个类型是CREATESTRUCT结构的参数,如果在修改了这个参数中的成员变量的值,那么这种改变会反映到MFC底层代码中,当MFC底层代码调用CreateWindowEx函数去创建窗口时,它就会使用改变后的参数值去创建这个窗口. 1)更改窗口大小 BOOL CMainFrame::PreCreate

三、PyQt5不同方法创建菜单栏、工具栏和状态栏

创建菜单栏.工具栏和状态栏可以直接通过代码实现,也可以通过Qt Designer中的属性编辑器等实现.通过两种方法的学习可以加深理解,更好的掌握PyQt5. 一.菜单栏与状态栏 状态栏的设置比较简单,在设置菜单栏的同时,就可以实现状态栏显示的设置. 1.1 下拉菜单与子菜单 菜单栏位于窗体标题栏的下方,通过QMenu类可添加菜单栏的小控件,创建上下文菜单和弹出菜单.每个Qmenu对象都可以包含QAction对象.单击QAction按钮时,QMenu对象就会发射triggered信号实现功能需求.

全新编程模式---站立编程--独创编程方式,可能会流行

多年来我们程序员已经习惯了编程模式--坐着编程 一来到编程办公室,我们马上坐下,打开空调,松软的旋转座椅,坐下来就可以编程.于是人们只知道世界上只有这种编程模式--坐着编程. 这个模式不是不好,可是如果坚持只用这个编程模式,会带来严重问题,坐久了屁股痛,最后没办法坐了.于是只能躺着编程. 坐着编程,身体缺少运动,每况愈下,身体不堪负重,垮了.生成各种疾病,最后竟然有的程序员英年死去,没办法编程了! 我编程十几年,曾经也是运动健将,但是因为坐着编程,身体也不行了,坐下没多久屁股就痛了.现在是左右为

Qt 学习之路 :菜单栏、工具栏和状态栏

在之前的<添加动作>一文中,我们已经了解了,Qt 将用户与界面进行交互的元素抽象为一种“动作”,使用QAction类表示.QAction可以添加到菜单上.工具栏上.期间,我们还详细介绍了一些细节问题,比如资源文件的使用.对象模型以及布局管理器.这一节则是详细介绍关于菜单栏.工具栏以及状态栏的相关内容. 我们假设窗口还是建立在QMainWindow类之上,这会让我们的开发简单许多.当然,在实际开发过程中,QMainWindow通常只作为“主窗口”,对话框窗口则更多地使用QDialog类.我们会在

【vc】14_网络编程_socket编程

1.计算机网络基本知识 最简单的网络程序如图: 提示:IP地址就相当于一个公司的总机号码,端口号就相当于分机号码.在打电话时,拨通总机后,还需要转到分机上. (1)协议 ·为进行网络中的数据交换(通信)而建立的规则.标准或约定(=语义+语法+规则): ·不同层具有各自不同的协议: (2)网路的状况 ·多种通信媒介---有线.无线··· ·不同种类的设备---通用.专用··· ·不同的操作系统---UNIX.Windows··· ·不同的应用环境---固定.移动··· ·不同的业务种类---分时.