社区
界面
帖子详情
做类似VC这样的界面
wudeshou82666
2009-09-04 10:33:43
用VC6.0做类似VC6.0这样的界面(不需要窗口停靠功能)需要怎么做。。。。希望得到相关例子
谢谢了
...全文
168
10
打赏
收藏
做类似VC这样的界面
用VC6.0做类似VC6.0这样的界面(不需要窗口停靠功能)需要怎么做。。。。希望得到相关例子 谢谢了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fandh
2009-09-04
打赏
举报
回复
高级界面里面有现成可运行的!char03\DevStudio\Lib里面的Demo_DevStudio.exe
fandh
2009-09-04
打赏
举报
回复
高级界面里面有现成的代码的!你自己下载下来看得了!
http://download.csdn.net/source/1065900
homesos
2009-09-04
打赏
举报
回复
[Quote=引用 3 楼 wudeshou82666 的回复:]
引用 1 楼 tocpp 的回复:
http://www.vckbase.com/document/viewdoc/?id=257
不太像哦
[/Quote]
原理是一样的。
wudeshou82666
2009-09-04
打赏
举报
回复
问题补充:
我需要的是像VC这样风格的界面
将主框架分割为左右两个窗口,多文档程序,将子框架窗口只显示在主框架的右边的分割窗口内。。。
不知道问题有没有描述清楚
谢谢
谢谢
wudeshou82666
2009-09-04
打赏
举报
回复
[Quote=引用 1 楼 tocpp 的回复:]
http://www.vckbase.com/document/viewdoc/?id=257
[/Quote]
不太像哦
dkbrain
2009-09-04
打赏
举报
回复
若要代码,留个邮箱,我发给你
轻松实现类VC界面
作者:浙江省温岭电信局 王骏
下图是一个类似VC的界面,左边、底下有两个可浮动、可变大小的控制窗口。许多朋友都希望在自己的程序中实现类似的界面,因为此种类型的界面用途很广、通用性很强,所以笔者总结了一下实现的步骤,辑此一文,并提供源代码供大家参考!
下载本文示例工程 44.3K (最新更新:2004年2月8日)
一、实现原理
图中两个窗口的实现类是从CControlBar派生出来的,我们并不需要从头到尾实现该类,因为Cristi Posea先生已经为我们实现了一个称为CSizingControlBar的类,而且做得相当完美!我们所要做的便是好好地利用该类,为了尽可能地简洁,笔者将CSizingControlBar类修改了一下并命名为CCoolBar,接下来我们将详细介绍如何利用该类实现我们所需的界面。
二、实现步骤示例
[1]前期准备
新建一个名为BarDemo的MFC工程,SDI界面,其它选项默认。
将本文示例代码中的sizecbar.h sizecbar.cpp scbarg.h scbarg.cpp 四个文件复制到工程目录下。
在菜单Project->Add to project->Files将四个文件加入工程中,此时在ClassView中将出现了一个称为CCoolBar的类。
在stdafx.h文件中加上
#include "sizecbar.h"
#include "scbarg.h"
[2]开始编码
2.1 为CMainFrame增加成员变量
CCoolBar m_wndMyBar1;///我们将它作为左边的窗口
CCoolBar m_wndMyBar2;///停靠在下方的窗口
以下代码需要添加到CMainFrame::OnCreate中,方法与普通工具条的创建没有太大的区别!
2.2 创建ControlBar
if (!m_wndMyBar1.Create(_T("我的控制条"),this,123))
{ TRACE0("Failed to create mybar\n"); return -1; }
if (!m_wndMyBar2.Create(_T("我的控制条2"),this,CSize(100,100),TRUE,124))
{ TRACE0("Failed to create mybar\n"); return -1; }
2.3 停靠控制
m_wndMyBar1.SetBarStyle(m_wndMyBar1.GetBarStyle() | CBRS_TOOLTIPS |
CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_wndMyBar2.SetBarStyle(m_wndMyBar2.GetBarStyle() | CBRS_TOOLTIPS |
CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_wndMyBar1.EnableDocking(CBRS_ALIGN_ANY);
m_wndMyBar2.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndMyBar1, AFX_IDW_DOCKBAR_LEFT);///停靠在左边
DockControlBar(&m_wndMyBar2, AFX_IDW_DOCKBAR_BOTTOM);///停靠在右边
此时我们已经生成了两个控制条窗口,但窗口中还没有任何东西!让我们来做最后一件事情:往窗口添加所需部件!
2.4 添加我的控件
这个问题看似有些麻烦其实相当简单:我们只要在创建这些控件时将控制条窗口指针作为父窗口指针赋值给这些控件即可!
请看如下例子(需要注意的是以下列举的几种形式,你只能选择其一,同时往一个控制条窗口添加多个子窗口将导致失败!)
(1)将编辑控件放入下面那个控制条窗口中
在CMainFrame类中添加成员变量CEdit m_wndEdit;在创建ControlBar后创建编辑控件
m_wndEdit.Create(WS_VSCROLL|WS_CHILD|WS_VISIBLE|ES_AUTOVSCROLL|
ES_MULTILINE|ES_WANTRETURN,CRect(0,0,0,0),&m_wndMyBar2,101);
m_wndEdit.ModifyStyleEx(0,WS_EX_CLIENTEDGE);
(2)将树型控件放入左边那个控制条窗口中 在CMainFrame类中添加成员变量 CTreeCtrl m_wndTree;;在创建ControlBar后创建树型控件
/////////////这一段代码创建树型控件////////////
if (!m_wndTree.Create(WS_CHILD|WS_VISIBLE|
TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,
CRect(0, 0, 0, 0), &m_wndMyBar1, 100))
{
TRACE0("Failed to create instant bar child\n");
return -1;
}
m_wndTree.ModifyStyleEx(0, WS_EX_CLIENTEDGE);
////往树型控件添加内容///
HTREEITEM hti = m_wndTree.InsertItem(_T("VC知识库在线杂志"));
m_wndTree.InsertItem(_T("电子文档"));
m_wndTree.InsertItem(_T("在线杂志第一期"), hti);
m_wndTree.InsertItem(_T("在线杂志第二期"), hti);
(3)将对话框放入控制条中
首先在资源编辑器里制作一个CHILD类型的无BORDER对话框,ID为IDD_DIALOGBAR,并以此作为模板生成CVCKBASEDlg类,
并在CMainFrame中添加成员变量 CVCKBASEDlg m_wndVCKBASE;然后在创建ControlBar后用如下代码创建对话框
m_wndVCKBASE.Create(IDD_DIALOGBAR,&m_wndMyBar1);
m_wndVCKBASE.ShowWindow(SW_SHOW);
(4)将TabCtrl放入左边的控制条
本文的示例代码中提供了一个称为CCoolTabCtrl的封装类,我们用它可以简单地创建出TabCtrl,先请看如下代码
m_TabCtrl.Create(TCS_DOWN|WS_CHILD|WS_VISIBLE,CRect(0,0,100,100),&m_wndMyBar1,125);
/////////////这一段代码创建树型控件////////////
if (!m_wndTree.Create(WS_CHILD|WS_VISIBLE|
TVS_HASLINES|TVS_HASBUTTONS|TVS_LINESATROOT,
CRect(0, 0, 0, 0), &m_TabCtrl, 100)) ///注意,这里是将m_TabCtrl作为m_wndTree的父窗口
{
TRACE0("Failed to create instant bar child\n");
return -1;
}
m_wndTree.ModifyStyleEx(0, WS_EX_CLIENTEDGE);
///往树型控件添加内容
HTREEITEM hti = m_wndTree.InsertItem(_T("VC知识库在线杂志"));
m_wndTree.InsertItem(_T("电子文档"));
m_wndTree.InsertItem(_T("在线杂志第一期"), hti);
m_wndTree.InsertItem(_T("在线杂志第二期"), hti);
///将树型控件加入到TabCtrl中
m_TabCtrl.AddPage(&m_wndTree,"VC知识库",IDI_ICON1); ///将树型控件添加到第一页
m_TabCtrl.AddPage(RUNTIME_CLASS(CVCKBASEDlg),IDD_DIALOGBAR,"第二页",IDI_ICON2); ///将CVCKBASEDlg对话框添加到第二页
m_TabCtrl.AddPage(RUNTIME_CLASS(CMyDlg),IDD_DIALOGBAR2,"第三页",IDI_ICON3); ///将CMyDlg对话框添加到第三页
m_TabCtrl.UpdateWindow(); ///更新TabControl
需要注意的是希望添加到TabControl中的对话框,在其类定义,类实现文件中必须添加如下信息:
例如CVCKBASEDlg类,在VCKBASEDlg.h中添加 DECLARE_DYNCREATE(CVCKBASEDlg) class CVCKBASEDlg : public CDialog
{
// Construction
public:
CVCKBASEDlg(CWnd* pParent = NULL); // standard constructor
DECLARE_DYNCREATE(CVCKBASEDlg)
在.CPP中增加 IMPLEMENT_DYNCREATE(CVCKBASEDlg, CDialog)
至此我们已经大功告成!我们可以编译运行一下看看两个控制条有没有创建成功。
哇噻!只用这几行代码就实现了梦寐以求的界面!
三、更加高级的话题
3.1 该ControlBar在浮动的时候顶部的把手会消失,变成了普通的ToolWindow类型的标题栏。为了避免这种情况,我们需要在CMainFrame::OnCreate()中,在EnableDocking()后加入:
#ifdef _SCB_REPLACE_MINIFRAME
m_pFloatingFrameClass = RUNTIME_CLASS(CSCBMiniDockFrameWnd);
#endif //_SCB_REPLACE_MINIFRAME
并在stdafx.h中加上#define _SCB_REPLACE_MINIFRAME
3.2 该类的另外一种风格可以在stdafx.h中加上 #define _SCB_STYLE_FLAT 产生,您不妨试试!
3.3 如何将两个ControlBar停靠在同一行中
DockControlBar(&m_wndMyBar1, AFX_IDW_DOCKBAR_BOTTOM);///停靠在底部
RecalcLayout();
CRect rect;
m_wndMyBar1.GetWindowRect(rect);
rect.OffsetRect(1, 0);//偏移一个位置
DockControlBar(&m_wndMyBar2, AFX_IDW_DOCKBAR_BOTTOM,rect);///也停靠在底部
3.4 如何将两个ControlBar停靠在同一列中
DockControlBar(&m_wndMyBar1, AFX_IDW_DOCKBAR_RIGHT);///停靠在右边
RecalcLayout();
CRect rect;
m_wndMyBar1.GetWindowRect(rect);
rect.OffsetRect(0, 1);//看到这里的区别了吗
DockControlBar(&m_wndMyBar2, AFX_IDW_DOCKBAR_RIGHT,rect);///也停靠在右边
后记
本文是在百忙中匆匆完成,错误之处希望大家批评指正!
最后,让我们再次感谢Cristi Posea先生为我们提供了如此好用的CSizingControlBar!
ToCpp
2009-09-04
打赏
举报
回复
http://www.vckbase.com/document/viewdoc/?id=257
wudeshou82666
2009-09-04
打赏
举报
回复
谢谢了
问题已解决
谢谢热心人的帮助...
wudeshou82666
2009-09-04
打赏
举报
回复
[Quote=引用 6 楼 fandh 的回复:]
高级界面里面有现成的代码的!你自己下载下来看得了!
http://download.csdn.net/source/1065900
[/Quote]
下载的这些文件怎么都没有写的权限
要进行修改怎么办
忘得到fandh的帮助。
谢谢
wudeshou82666
2009-09-04
打赏
举报
回复
[Quote=引用 7 楼 fandh 的回复:]
高级界面里面有现成可运行的!char03\DevStudio\Lib里面的Demo_DevStudio.exe
[/Quote]
我下载了
为什么我不能编译他的代码,缺少写某个文件的权限?
编译链接,得到这样的警告和错误
LINK : warning LNK4079: no write permission for incremental status file "../Lib/Demo_DevStudio.ilk"; linking nonincrementally
LINK : fatal error LNK1104: cannot open file "../Lib/Demo_DevStudio.exe"
VC
++ 6.0 高级
界面
VC
6 的一些
界面
的例子 sample 开发
界面
必备
如果想学习
VC
6开发,我建议可以看这个,这个里面使用MFC作为基础,利用V6开发各种吸引人的
界面
!效果很好,作为开发者,不得不学!里面含有 菜单、按钮、对话框、以及各种风格的东西!
VC
++
界面
编程之--阴影窗口实现详解
我实现了一个
类似
于360
界面
的阴影效果,其可以支持正常窗口,也支持半透明窗口。 阴影窗口的实现原理,简单来讲:就是在主窗口创建时,创建一个子窗口,吸附于主窗口的底部。然后在子窗口上
做
一个带半透明阴影效果...
类似
迅雷的漂浮窗口
类似
迅雷的漂浮窗口,VS2005,
VC
/MFC
[开发工具] Codejock Xtreme Toolkit Pro 15.3.1 Full Source Retail
Codejock Software 创建于 1998 年,专业开发 MS Visual Studio 开发环境下的组件,便于
VC
开发人员轻松开发出各种
界面
,如
类似
VC
++6.0 的开发
界面
、 Outlook
界面
等,并支持 XP 风格。由于功能的完善, Extreme ...
右下角弹出新闻窗口_
VC
源码
类似
QQ的右下角弹窗新闻,支持多种风格.Win32工程,未采用MFC.
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章