CSplitterWnd是一个特殊的框架窗口,它分割的每个窗口都被相同的或者不同的视图所填充。当窗口被切分后用户可以使用鼠标移动切分条来调整窗口的相对尺寸。

其定义如下:

/

// Splitter Window

#define SPLS_DYNAMIC_SPLIT  0x0001

#define SPLS_INVERT_TRACKER 0x0002  // obsolete (now ignored)

class CSplitterWnd : public CWnd

{

DECLARE_DYNAMIC(CSplitterWnd)

// Construction

public:

CSplitterWnd();

// Create a single view type splitter with multiple splits

BOOL Create(CWnd* pParentWnd,

int nMaxRows, int nMaxCols, SIZE sizeMin,

CCreateContext* pContext,

DWORD dwStyle = WS_CHILD | WS_VISIBLE |

WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,

UINT nID = AFX_IDW_PANE_FIRST);

// Create a multiple view type splitter with static layout

BOOL CreateStatic(CWnd* pParentWnd,

int nRows, int nCols,

DWORD dwStyle = WS_CHILD | WS_VISIBLE,

UINT nID = AFX_IDW_PANE_FIRST);

virtual BOOL CreateView(int row, int col, CRuntimeClass* pViewClass,

SIZE sizeInit, CCreateContext* pContext);

// Attributes

public:

int GetRowCount() const;

int GetColumnCount() const;

// information about a specific row or column

void GetRowInfo(int row, int& cyCur, int& cyMin) const;

void SetRowInfo(int row, int cyIdeal, int cyMin);

void GetColumnInfo(int col, int& cxCur, int& cxMin) const;

void SetColumnInfo(int col, int cxIdeal, int cxMin);

// for setting and getting shared scroll bar style

//设置和获取共享的滚动条风格

DWORD GetScrollStyle() const;//获取共享的滚动条风格

void SetScrollStyle(DWORD dwStyle);//设置共享的滚动条风格

// views inside the splitter

//分割器内的视图

CWnd* GetPane(int row, int col) const;//获取窗格(Pane)

BOOL IsChildPane(CWnd* pWnd, int* pRow, int* pCol);//判断是否子窗格

BOOL IsChildPane(CWnd* pWnd, int& row, int& col); // obsolete

int IdFromRowCol(int row, int col) const;

BOOL IsTracking();  // TRUE during split operation

// Operations

public:

virtual void RecalcLayout();    // call after changing sizes

//重载函数:改变大小后调用,来重绘窗格或整个分割器

// Overridables

protected:

// to customize the drawing

enum ESplitType { splitBox, splitBar, splitIntersection, splitBorder };

virtual void OnDrawSplitter(CDC* pDC, ESplitType nType, const CRect& rect);

virtual void OnInvertTracker(const CRect& rect);

public:

// for customizing scrollbar regions

virtual BOOL CreateScrollBarCtrl(DWORD dwStyle, UINT nID);

// for customizing DYNAMIC_SPLIT behavior

virtual void DeleteView(int row, int col);//删除指定的视图

virtual BOOL SplitRow(int cyBefore);

virtual BOOL SplitColumn(int cxBefore);

virtual void DeleteRow(int rowDelete);

virtual void DeleteColumn(int colDelete);

// determining active pane from focus or active view in frame

//确定从焦点或活动视图帧活动窗格

virtual CWnd* GetActivePane(int* pRow = NULL, int* pCol = NULL);//获取活动窗格

virtual void SetActivePane(int row, int col, CWnd* pWnd = NULL);//设置活动窗格

protected:

CWnd* GetActivePane(int& row, int& col); // obsolete

public:

// high level command operations - called by default view implementation

//高级别命令操作 - 调用默认视图执行

virtual BOOL CanActivateNext(BOOL bPrev = FALSE);

virtual void ActivateNext(BOOL bPrev = FALSE);

virtual BOOL DoKeyboardSplit();

// synchronized scrolling

//同步滚动

virtual BOOL DoScroll(CView* pViewFrom, UINT nScrollCode,

BOOL bDoScroll = TRUE);

virtual BOOL DoScrollBy(CView* pViewFrom, CSize sizeScroll,

BOOL bDoScroll = TRUE);

// Implementation

public:

virtual ~CSplitterWnd();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

// implementation structure

struct CRowColInfo

{

int nMinSize;       // below that try not to show

int nIdealSize;     // user set size

// variable depending on the available size layout

int nCurSize;       // 0 => invisible, -1 => nonexistant

};

protected:

// customizable implementation attributes (set by constructor or Create)

//可定制的实现属性(由构造函数设置或创建)

CRuntimeClass* m_pDynamicViewClass;

int m_nMaxRows, m_nMaxCols;

// implementation attributes which control layout of the splitter

//其中控制分级的布局实施的属性

//分隔栏的大小

int m_cxSplitter, m_cySplitter;         // size of splitter bar

//在分离器的任一侧的空间

int m_cxBorderShare, m_cyBorderShare;   // space on either side of splitter

//窗格之间的空间量

int m_cxSplitterGap, m_cySplitterGap;   // amount of space between panes

//在客户区边界

int m_cxBorder, m_cyBorder;             // borders in client area

// current state information当前状态信息

int m_nRows, m_nCols;

BOOL m_bHasHScroll, m_bHasVScroll;

CRowColInfo* m_pColInfo;

CRowColInfo* m_pRowInfo;

// Tracking info - only valid when 'm_bTracking' is set

BOOL m_bTracking, m_bTracking2;

CPoint m_ptTrackOffset;

CRect m_rectLimit;

CRect m_rectTracker, m_rectTracker2;

int m_htTrack;

// implementation routines

BOOL CreateCommon(CWnd* pParentWnd, SIZE sizeMin, DWORD dwStyle, UINT nID);

virtual int HitTest(CPoint pt) const;

virtual void GetInsideRect(CRect& rect) const;

virtual void GetHitRect(int ht, CRect& rect);

virtual void TrackRowSize(int y, int row);

virtual void TrackColumnSize(int x, int col);

virtual void DrawAllSplitBars(CDC* pDC, int cxInside, int cyInside);

virtual void SetSplitCursor(int ht);

CWnd* GetSizingParent();

// starting and stopping tracking

virtual void StartTracking(int ht);

virtual void StopTracking(BOOL bAccept);

// special command routing to frame

virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);

virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);

//{{AFX_MSG(CSplitterWnd)

afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);

afx_msg void OnMouseMove(UINT nFlags, CPoint pt);

afx_msg void OnPaint();

afx_msg void OnLButtonDown(UINT nFlags, CPoint pt);

afx_msg void OnLButtonDblClk(UINT nFlags, CPoint pt);

afx_msg void OnLButtonUp(UINT nFlags, CPoint pt);

afx_msg void OnCancelMode();

afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);

afx_msg void OnSize(UINT nType, int cx, int cy);

afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);

afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar);

afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);

afx_msg BOOL OnNcCreate(LPCREATESTRUCT lpcs);

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

afx_msg void OnDisplayChange();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

转载于:https://www.cnblogs.com/thetung/p/3635322.html

MFC SplitterWnd相关推荐

  1. MFC控件编程之复选框单选框分组框

    MFC控件编程之复选框单选框分组框 一丶分组框 分组框 英文叫做 GroubBox 添加了分组框主要就是分组.好看.不重点介绍 二丶单选框 英文: Raido Button 单选框需要注意的事项 1. ...

  2. MFC之按键消息(长按处理)

    想要实现长按键的一些控制,查了查可以通过捕获键盘事件,然后处理按键时需要进行的操作.下面简单的实现左右按键界面更新数值加减.  1. 重载PreTranslateMessage(MSG* pMsg)函 ...

  3. mfc 应用程序 语言进行本地化

    在软件国际化的今天,资源从代码中独立出来,使在不同语言操作系统下能运行不同语言版本的程序,是很有意义的事. MFC 7.0 及更高版本提供对附属 DLL 的增强支持,该功能有助于创建针对多种语言进行本 ...

  4. 解决:vs2013 错误 1 error MSB8031: Building an MFC project for a non-Unicode character set is deprecated.

    问题翻译: 用于多字节字符编码 (MBCS) 的 MFC 库 (DLL) 不再包含于 Visual Studio 中,但是可用作插件,您可以在任何装有 Visual Studio Profession ...

  5. MFC中显示 .bmp格式的位图

    最近在看VisualC++ 图像处理的书籍,表示一直在从基础做起,今天就记录一个简单功能的实现,显示.bmp格式的位图. 首先需要理解的是窗口创建的过程包括两个步骤:首先擦除窗口的背景,然后在对窗口进 ...

  6. MFC最小化到系统托盘

    在VC++中,想实现将MFC最小化到系统托盘,需要调用NOTIFYICONDATA类,并注册相应的消息,以下详细讲解如何实现: 第一步,声明一个NOTIFYICONDATA类,也就是NOTIFYICO ...

  7. 基于Dialog的MFC程序在启动时隐藏为托盘程序(四)

    这部分说一下如何加menu..如果做小气球.. mfc的menu确是不如C#活着java那么easy.. 首先在rc里添加menu资源..然后在ui界面里先设置一下你的菜单.. 在第(二)部分已经简单 ...

  8. MFC按钮添加提示文字

    转载自: http://blog.163.com/guo_linda/blog/static/12377305720101122105030162/ MFC里这个类叫做CToolTipCtrl,具体用 ...

  9. vs2008中,创建基于对话框的mfc动态库步骤

    1.利用MFC Dll向导初始生成一个mfc dll(默认设置): 2.添加一个对话框资源: 3.向工程中添加一个.h..cpp文件,作为外部的接口: 4..h头文件的格式仿照于基于控制台的dll的头 ...

最新文章

  1. Cisco 交換機命名規則
  2. mysql 5.7解压缩_mysql 5.7.22 解压缩安装
  3. Faster-RCNN的一些记录。
  4. 普通计算机怎么算根号_混凝土花盆叠加做花园围墙,比普通红砖块好看多了,怎么算都赚到...
  5. 前端性能优化之图像优化原理
  6. 下一个十年:练好内功被集成的弹性计算
  7. 【JavaScript】变量
  8. 十六位顶尖专家齐聚,解密阿里云最新核心技术竞争力!
  9. [原创] 图片操作的类(ImageLibrary)-按比例缩放图片
  10. 物联网可靠连接——PLC-IOT电力线载波通讯
  11. 报价管理解决方案丨汇信
  12. mvp的全称_王者荣耀里面每把有mvp但是mvp是什么意思呢
  13. OpenGL ES SDK for Android - 3
  14. Oracle-基本SQL语句
  15. vue 前端解析Excel
  16. 整活~使用webAI做一个网页AR吃豆人小游戏
  17. Flash与文件系统简介
  18. 想要教AI一个常识真的好难,幸运的是保罗·艾伦拿钱闯进来了
  19. 笔记本损耗60 计算机提示,无需第三方软件,查看笔记本电脑电池损耗程度的方法...
  20. rewrite地址转换

热门文章

  1. 大学生必备的十大网站有哪些?
  2. linux -- 嵌入式2.6.37wifi-vnt6656移植驱动
  3. 伴随着我娃成长的运维平台(图片持续更新..)
  4. 【朝花夕拾】Android性能篇之(四)Apk打包
  5. 计算机双行文本一般应用在什么地方,2017年职称计算机考试Word练习及答案6
  6. 学习笔记-webrtc
  7. 数模赛常用外挂工具汇总(骚操作)
  8. 苹果发通谍拒绝“热更新”,中国程序猿“最受伤”
  9. c语言扇形打印图片,怎么做扇形图表?
  10. 波波:App Store改版深入测评,生态改变,行业大洗牌