当前位置:编程学习 > C/C++ >>

(MFC)Vs2010制作Visual Studio风格的停靠侧栏窗口(CDockablePane里嵌套FormView表单视图)

[cpp] view plaincopyprint?关键字:CDockablePane,  Visual Studio风格的Gui界面,,CDoackable里嵌套FormView表单视图步骤  www.zzzyk.com
 
关键字:CDockablePane,  Visual Studio风格的Gui界面,,CDoackable里嵌套FormView表单视图步骤[cpp] view plaincopyprint?转载注意作者原创:K_Linux_Man  
 
转载注意作者原创:K_Linux_Man
一直比较喜欢Visual Studio两侧的窗口,可以来回滑动,并且和点击图钉,钉住悬浮的窗口。那就尝试着如何去做出来。
 
VC++6.0如果要去实现的话,不是不可以,但是得借助第三方的类库,比如说,ToolKit,但是非常的麻烦。。。
 
Visual Studio里面的新建Demo就可以实现这一功能,何乐而不为呢!!!
 
那停靠窗口里面用什么填充呢? 树形控件??新建的Demo里有了。更直观一点的话,还是用FormView吧。。。好的。。。开始
 
要不先来个最终的效果图..... 自己添加的解决方案停靠窗口,里面嵌套FormView视图窗口.而文件视图,类视图,还有属性,Demo里面默认生成的。只有解决方案那个是自己添加的。
 
\
 
 
新建两个文件,SolutionWnd.h SolutionWnd.cpp
 
在资源窗口里新建一个FormView的Dialog,修改ID为IDD_FORMVIEW,建立一个与FormView相关联的的类, 利用类向导,添加一个名为CMfcFormView,选择基类为CFormView. 生成在SolutionWnd.h和SolutionWnd.cpp文件里。
 
SoulutionWnd.h
 
 
[cpp] 
#pragma once   
#include "Resource.h"   
  
  
// CMfcFormView 窗体视图   
  
class CMfcFormView : public CFormView  
{  
    <SPAN style="COLOR: rgb(255,0,0)">DECLARE_DYNCREATE</SPAN>(CMfcFormView)//<SPAN style="BACKGROUND-COLOR: rgb(255,0,0)">具有动态创建对象的能力</SPAN>   
  
public:  
    CMfcFormView(): CFormView(CMfcFormView::IDD)  
    {}// 动态创建所使用的受保护的构造函数   
    ~CMfcFormView()  
    {}  
public:  
      
  
public:  
    enum { IDD = IDD_FORMVIEW };  
#ifdef _DEBUG   
    virtual void AssertValid() const;  
#ifndef _WIN32_WCE   
    virtual void Dump(CDumpContext& dc) const;  
#endif   
#endif   
  
protected:  
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持   
  
    DECLARE_MESSAGE_MAP()  
 
#pragma once
#include "Resource.h"
 
 
// CMfcFormView 窗体视图
 
class CMfcFormView : public CFormView
{
DECLARE_DYNCREATE(CMfcFormView)//具有动态创建对象的能力
 
public:
CMfcFormView(): CFormView(CMfcFormView::IDD)
{}// 动态创建所使用的受保护的构造函数
~CMfcFormView()
{}
public:
 
 
public:
enum { IDD = IDD_FORMVIEW };
#ifdef _DEBUG
virtual void AssertValid() const;
#ifndef _WIN32_WCE
virtual void Dump(CDumpContext& dc) const;
#endif
#endif
 
protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
 
DECLARE_MESSAGE_MAP()[cpp] view plaincopyprint?};  
 
};
SolutionWnd.cpp 
 
 
[cpp]
#include "stdafx.h"   
#include "SolutionWnd.h"   
  
  
// CMfcFormView   
  
  
<SPAN style="COLOR: #ff0000">IMPLEMENT_DYNCREATE</SPAN>(CMfcFormView, CFormView)  
  
  
void CMfcFormView::DoDataExchange(CDataExchange* pDX)  
{  
    CFormView::DoDataExchange(pDX);  
}  
  
  
  
BEGIN_MESSAGE_MAP(CMfcFormView, CFormView)  
  
  
END_MESSAGE_MAP()  
  
  
  
  
// CMfcFormView 诊断   
  
  
#ifdef _DEBUG   
void CMfcFormView::AssertValid() const  
{  
    CFormView::AssertValid();  
}  
  
  
#ifndef _WIN32_WCE   
void CMfcFormView::Dump(CDumpContext& dc) const  
{  
    CFormView::Dump(dc);  
}  
#endif   
#endif //_DEBUG   
  
  
// CMfcFormView 消息处理程序  
 
#include "stdafx.h"
#include "SolutionWnd.h"
 
 
// CMfcFormView
 
 
IMPLEMENT_DYNCREATE(CMfcFormView, CFormView)
 
 
void CMfcFormView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
}
 
 
 
BEGIN_MESSAGE_MAP(CMfcFormView, CFormView)
 
 
END_MESSAGE_MAP()
 
 
 
 
// CMfcFormView 诊断
 
 
#ifdef _DEBUG
void CMfcFormView::AssertValid() const
{
CFormView::AssertValid();
}
 
 
#ifndef _WIN32_WCE
void CMfcFormView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif
#endif //_DEBUG
 
 
// CMfcFormView 消息处理程序
 
 
 
至此我们已经把FormView派生出的CMfcFormView类建好了。
 
我们需要建立一个CDockablePane的派生类,予以容纳FormView,建立派生出的CDockablePane类为CSolutionWnd
 
利用类向导,添加名为CSolutionWnd,基类为CDockablePane...生成文件SolutionWnd.h和SolutionWnd.cpp
 
SolutionWnd.h里又添加了如下代码
 
 
[cpp] 
class CSolutionWnd : public CDockablePane  
{  
     DECLARE_DYNAMIC(CSolutionWnd)  
    //构造函数   
public:  
    CSolutionWnd();  
    //析构函数   
    ~CSolutionWnd();  
  
  
    //特性   
public:  <
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,