Splitter1

Logisim 构建一个1-bit全加器 Tunnel、Splitter、Extenders的使用 上面是别人的,下面是我的 经过测试,两个电路结果相同 还没有十分理解为什么要这样设计,大概是两个普通输入,一个进位输入吧 阅读详情

1.csplitterwnd 类

  提供分离窗口的功能,是一个窗口包含多个方格。

  类成员

  CSplitterWnd类成员

  构造 CSplitterWnd 构造一个CSplitterWnd对象

  Create 创建一个动态的分隔器窗口并将它与一个CSplitterWnd对象连接

  CreateStatic 创建一个静态的分隔器窗口并将它与一个CSplitterWnd对象连接

  CreateView 在一个分隔器窗口中创建一个窗格

  操作符 GetRowCount 返回当前窗格行的计数值

  GetColumnCount 返回当前窗格列的计数值

  GetRowInfo 返回指定行的信息

  SetRowInfo 设置指定行的信息

  GetColumnInfo 返回指定列的信息

  SetColumnInfo 设置指定列的信息

  GetPane 返回位于指定行和列处的窗格

  IsChildPane 确定窗口是否是此分隔器窗口的当前子窗格

  IdFromRowCol 返回位于指定行和列处的窗格的子窗口ID

  RecalcLayout 在调整行或列尺寸后调用此函数来重新显示该分隔器窗口

  GetScrollStyle 返回共享滚动条的风格

  SetScrollStyle 为分隔器窗口的共享滚动条指定新的滚动条风格

  可重载 OnDrawSplitter 绘制一个分隔器窗口的图像

  OnInvertTracker 绘制一个分隔器窗口的图像,使它具有与框架窗口相同的大小和形状

  CreateScrollBarCtrl 创建一个共享的滚动条控件

  DeleteView 从分隔器窗口中删除一个视图

  SplitRow 表明一个框架窗口是否是水平分隔的

  SplitColumn 表明一个框架窗口是否是垂直分隔的

  DeleteRow 从分隔器窗口中删除一行

  DeleteColumn 从分隔器窗口中删除一列

  GetActivePane 根据焦点或框架中的活动视来确定活动窗格

  SetActivePane 在框架中设置一个活动窗格

  CanActivateNext 检查Next Pane或Previous Pane命令当前是否有效

  ActivateNext 执行Next Pane或Previous Pane命令

  DoKeyboardSplit 执行键盘分隔命令,通常是“Window Split”

  DoScroll 执行分隔窗口的同步滚动

  DoScrollBy 将分隔窗口滚动给定的像素数

  2.呀要用到的该类的成员

  BOOL CreateStatic( CWnd* pParentWnd, int nRows, int nCols, DWORD dwStyle =

  WS_CHILD | WS_VISIBLE, UINT nID = AFX_IDW_PANE_FIRST );

  函数有5个参数,意义如下:

  ● pParentWnd:切分窗口的父窗口指针

  ● nRows:水平方向分隔窗口的数目

  ● nCols:垂直方向分隔窗口的数目

  ● dwStyle:切分窗口的风格

  ● nID:子窗口的ID值,默认为系统定义的AFX_IDW_PANE_FIRST

  返回值:如果创建成功,返回非零值(TRUE),否则返回0(FALSE)。

  m_wndSplitter1.CreateStatic(this, 2,1); // 切分为2行1列

  6、 使用CreateView产生每个视图窗口

  virtual BOOL CreateView( int row, int col, CRuntimeClass* pViewClass, SIZE sizeInit, CCreateContext* pContext );

  函数有5个参数,意义如下:

  ● row:窗格的行标,从0开始

  ● col:窗格的列标,从0开始

  ● pViewClass:视图的执行期类CRuntimeClass指针,可以用宏RUNTIME_CLASS获得

  ● sizeInit:一个SIZE(或者CSize)类型的数据,指定窗格的初始大小

  ● pContext:一般是由父窗口传递过来,包含窗口的创建信息

  返回值:如果创建成功,返回非零值(TRUE),否则返回0(FALSE)。

  实例(摘):

  以单文档SDI应用程序为例,在框架客户区实现三叉切分窗口,且每个窗格使用不同的视图 。

实现步骤:

  1、 利用VC++6.0 的AppWizard创建一个单文档SDI应用程序,项目名为Test。

  2、 使用New Class对话框添加新的视图类:

  CinfoView 基类为列表视图类ClistView

  CLineView 基类为表单视图类CFormView

  CMyEditView 基类为编辑视图类CEditView

  要点:在添加ClineView之前,需要先创建一个对话模板资源,ID为IDD_FORMVIEW,

  3、 在框架窗口类CMainFrame中声明一个CsplitterWnd类的成员变量m_wndSplitter1,用于第一次切分。

  4、 使用ClassWizard为框架窗口类添加OnCreateClient函数。

  注意:OnCreateClient函数的调用在OnCreate函数之后,在构造视图对象和产生视图窗口之前。

  5、 在OnCreateClient函数中调用CsplitterWnd::CreateStatic,产生静态切分。该函数的原形如下:

  BOOL CreateStatic( CWnd* pParentWnd, int nRows, int nCols, DWORD dwStyle =

  WS_CHILD | WS_VISIBLE, UINT nID = AFX_IDW_PANE_FIRST );

  函数有5个参数,意义如下:

  ● pParentWnd:切分窗口的父窗口指针

  ● nRows:水平方向分隔窗口的数目

  ● nCols:垂直方向分隔窗口的数目

  ● dwStyle:切分窗口的风格

  ● nID:子窗口的ID值,默认为系统定义的AFX_IDW_PANE_FIRST

  返回值:如果创建成功,返回非零值(TRUE),否则返回0(FALSE)。

  m_wndSplitter1.CreateStatic(this, 2,1); // 切分为2行1列

  6、 使用CreateView产生每个视图窗口

  virtual BOOL CreateView( int row, int col, CRuntimeClass* pViewClass, SIZE sizeInit, CCreateContext* pContext );

  函数有5个参数,意义如下:

  ● row:窗格的行标,从0开始

  ● col:窗格的列标,从0开始

  ● pViewClass:视图的执行期类CRuntimeClass指针,可以用宏RUNTIME_CLASS获得

  ● sizeInit:一个SIZE(或者CSize)类型的数据,指定窗格的初始大小

  ● pContext:一般是由父窗口传递过来,包含窗口的创建信息

  返回值:如果创建成功,返回非零值(TRUE),否则返回0(FALSE)。

  OnCreateClient函数的全部代码:

  BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)

  {

  // TODO: Add your specialized code here and/or call the base class

  CRect rect;

  GetClientRect(&rect);

  //产生第一次静态切分

  m_wndSplitter1.CreateStatic(this, //父窗口指针

  2, // 切分的行数

  1); // 切分的列数

  //为第一个窗格产生视图

  m_wndSplitter1.CreateView(0,0, // 窗格的行、列序数

  RUNTIME_CLASS(CTestView),//视图类

  CSize(rect.Width(),rect.Height()-rect.Height()/5),//初始化大小

  pContext);//父窗口的创建参数

  //为第二个窗格产生视图

  m_wndSplitter1.CreateView(1,0,

  RUNTIME_CLASS(CMyEditView),

  CSize(rect.Width(),rect.Height()/5),

  pContext);

  return TRUE;//不再调用基类的OnCreateClient函数

  //return CFrameWnd::OnCreateClient(lpcs, pContext);

  }

  在这里需注意3点:

  ① 必须为每个静态切分窗格创建视图窗口,不能漏掉一个;

  ② 必须包含相应的类的头文件,在MainFrm.cpp文件的开始包含一下头文件:

  #include "TestView.h"

  #include "MyEditView.h"

  ③产生静态切分后,就不能调用默认的基类的OnCreateClient函数。

  7、 在视图窗口类CTestView中声明一个CsplitterWnd类的成员变量m_wndSplitter2,用于第二次切分。

  8、 使用ClassWizard为视图窗口类CTestView添加OnCreate函数,在该函数中调用CreateStatic函数和CreateView函数,类似CMainFrame::OnCreateClient函数中的调用

代码如下:

  int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)

  {

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

  return -1;

  // TODO: Add your specialized creation code here

  CRect rect;

  GetClientRect(&rect);

  //获得窗口的创建信息指针

  CCreateContext *pContext = (CCreateContext*) lpCreateStruct->lpCreateParams;

  //产生二次静态切分

  m_wndSplitter2.CreateStatic(this,1, 2);

  //为第一个窗格产生视图

  m_wndSplitter2.CreateView(0,0,// 窗格的行、列序数

  RUNTIME_CLASS(CLineView),//视图类

  CSize(rect.Width()/4,rect.Height()),//初始化大小

  pContext);//父窗口的创建参数

  //为第二个窗格产生视图

  m_wndSplitter2.CreateView(0,1,

  RUNTIME_CLASS(CInfoView),

  CSize(1,1),

  pContext);

  return 0;

  }

  注意:二次切分的父窗口是第一次切分的第一个窗格,其视图类是CTestView

  9、使用ClassWizard为视图窗口类CTestView添加OnSize函数,在该函数中调用子函数

  SwitchView(),子函数的代码如下:

  void CTestView::SwitchView()

  {

  CRect rect;

  GetClientRect(&rect);

  int cx = rect.Width();

  int cy = rect.Height();

  m_wndSplitter2.MoveWindow(-2,-2,cx,cy+3);

  m_wndSplitter2.SetColumnInfo(0, cx/4,0);

  m_wndSplitter2.SetColumnInfo(1, cx-cx/4, 0);

  m_wndSplitter2.RecalcLayout();

  该子函数主要用于设置二次切分后的各列信息,通过CSplitterWnd::SetColumnInfo函数实现,原型为:void SetColumnInfo( int col, int cxIdeal, int cxMin );

  由3 个参数,意义如下:

  ● col:切分窗口的列标识

  ● cxIdeal:列的实际宽度,单位为像素

  ● cxMin:列的最小宽度,单位为像素

 

 

下面的代码实现的是左面一列,右面一列两行:

加上类成员变量
CSplitterWnd   m_wndSplitter2;

在OnCreateClient()里:

if   (!m_wndSplitter1.CreateView(0,   0,   RUNTIME_CLASS(COutbarView),   CSize(100,   300),   pContext)
...
if   (!m_wndSplitter2.Create(&m_wndSplitter1,   2,   1,   CSize(0,   0),   pContext,   WS_CHILD   |   WS_VISIBLE   |   WS_HSCROLL   |   WS_VSCROLL,   AFX_IDW_PANE_FIRST   +   1)  
...
if   (!m_wndSplitter2.CreateView(0,   0,   RUNTIME_CLASS(COutlookStyleUIView),   CSize(500,   100),   pContext)   ||   !m_wndSplitter2.CreateView(1,   0,   RUNTIME_CLASS(CMyHtmlView),   CSize(100,   100),   pContext))
...

WinForm 编程中控件的使用小技巧(splitter实现窗口分区域,改变Button的形状) 一、Splitter 控件的主要作用就是将窗口分区并可以调节区域大小,比如:我想将窗口分为左右两个区域,并可以调节两个区域所占的比例。操作流程如下: 1、新建一个窗口:Form1; 2、在Form1中添加一个Panel控件Panel1,并将其Dock属性设置为left,BackColor属性设置成蓝色; 3、在Form1中添加一个Splitter控件Splitter1,并将其Dock属性设置 阅读详情

相关推荐

C# 中splitter分割调整上下窗体关系

这个C#小项目是我凌晨两点做梦突然想到的。 splitter控件在使用过程一直不起作用和没有达到分割的效果,是有原因的。 splitter不但是实现正常的左右分割窗体,还是实现上下分割窗体。 小项目添加了双击,隐藏下面窗体的功能。

[C#]C#的Splitter和Panel控件的使用

3.6 刚才添加的splitter上方,添加一个listView,并且修改其Dock属性为Fill。单击其Items属性,随便添加几个Items,并且修改这些Item的Text属性。3.3 从工具箱向Form1添加1个Panel控件,用鼠标调整其大小,并且将其Dock属性改为Bottom。2 点击菜单栏的“视图”,依次找到“解决方案资源管理器”,“工具箱”和“属性窗口”,分别点击它们。3.4 在上图的panel中,添加1个label和一个button,并且修改其Text属性,如下图所示。

FL1768317420的博客 1347

C# Splitter窗口分栏控件

摘要:C#源码,菜单窗体,Splitter,分割窗体 C# Splitter窗口分栏控件,有的说是分割窗体用的,就这么个意思吧,把窗体可分为多个不同结构的部分,可以是上、下结构,也可以是左、右结构,或者是更复杂的结构,这个窗体分栏不属于超级强大型,但以实用为主,新手也能轻松上手。 运行环境:Visual Studio2010

C#用splitter分割窗口注意事项

C#用splitter分割窗口注意事项 1、一定要按照顺序拖,即Z次序不能乱 2、先拖panel1到from中,设置Dock为left 3,拖splitter1到from中,注意千万不能拖到panel1上面,否则会失败!  此时splitter1的Dock默认设置为left,设置BorderStyle为FixedSingle。 4、拖panel2到from中,设置Dock为Bottom,

witlym311的专栏 5445

工业互联网工控安全与工业质检AI大模型建设方案.pptx

工业互联网工控安全与工业质检AI大模型建设方案.pptx

2024 《计算机网络》实验教学指导书.doc

2024 《计算机网络》实验教学指导书.doc

Visual Studio 2010——C#的Splitter和Panel控件的使用

实验环境:Windows XP,Visual Studio 2010  Ultimate 1 创建项目     文件>>新建>>项目,选中“Windows窗体应用程序”,如下图所示:      2 点击菜单栏的“视图”,依次找到“解决方案资源管理器”,“工具箱”和“属性窗口”,分别点击它们。菜单如下图所示。 创建好工程后,效果图如下图所示 3 添

OneSea 1万+

WIFI中CSI的读取

学习目标: 目前正在做基于WIFI的无设备定位,准备使用信道状态信息(CSI),学习一下。 目前采集数据环境已经搭建好,准备研究信号的预处理。 学习内容: 1、 信号的读取——read_bf_file函数的研究 2、 3、 4、 1. read_bf_file详解: %READ_BF_FILE Reads in a file of beamforming feedback logs. % This version uses the *C* version of read_bfee, ...

sz3076799的博客 8891

界面布局----使用splitter的技巧

最近做个东西要用到c#,之前没学过,就苦逼的自学了。找到一个界面想要将这个界面的整体布局画出来,不过对于我这初学者还是有点复杂,网上也没找到很好的文章介绍,所以苦逼的画了好几小时才画出来,所以在此记下过程,省的以后忘记。 整体界面如下图: 具体步骤如下: 1、新建一个Form,在此Form中拖入一个tabControl,并将其Dock赋值为“Fill”,并在其tabPage1中拖

jingguangzhilu的专栏 1604

5G移动网络运维(优化)

5G 网络优化现状 移动通信行业属于技术密集型行业,是国民经济的重要支柱以及整个社会经济运转体系中不可或缺的基础。2019 年年底 5G 开始商用,截止到 2020 年3月,我国三大运营商建设了 16.1 万个 5G 基站,我国成为目前全球 5G 基站最多的国家。预计到 2020 年年底,我国运营商会建设大概 70 万个 5G 基站。基于 5G高频段的特性,信号覆盖距离会低于ins 基站,再加上 5G 万物互联的巨大经济潜力价值需求,后续三大运营商在 5G 基站建设数量上势必会超过当前 LTE 基站数量的

2301_78171382的博客 1323

kubeadm init 运行时kebelet启动失败问题

解决k8s kubeadm init时遇到的kubelet问题

ZDPZN的博客 6074

改变splitter1的方向

1、改变splitter1 的dock属性,即可改变splitter1的方向。 2、

快乐人生 1174

海康视觉通讯配置

本文介绍了海康通讯管理中TCP和Modbus协议的配置方法。TCP通讯时,视觉系统作为服务器接收PLC客户端发送的触发信号,需注意十进制与十六进制字符串的转换。Modbus配置需填写PLC的IP地址和寄存器首地址,并预先定义整型变量。TCP通讯需开启16进制发送模式以避免数据格式问题。文章重点说明了不同通讯方式下的数据格式转换和参数设置要点。

A567852的博客 2242

splitter1 的设置

 namespace WindowsApplication24{    partial class Form1    {        ///         /// 必需的设计器变量。        ///         private System.ComponentModel.IContainer components = null;        ///         /// 清理

ouyang4683的专栏 750

YOLOv11的QAT(训练感知量化)实战

本文总结了YOLO模型量化感知训练(QAT)的实践要点:QAT通过模拟量化噪声训练模型,比训练后量化(PTQ)更适合密集预测任务。关键实现包括:1)配置对称/非对称量化器;2)排除检测头量化;3)调整学习率策略并添加量化正则;4)选择困难样本校准;5)转换前稳定BN统计量。调试时需检查量化范围、数值分布和逐层突变,并注意SPP等敏感层。建议小模型使用QAT,大模型可能适得其反,且TensorRT的FP16模式可能优于INT8-QAT。量化应以功能正确为前提,避免过度优化。

as1225120794的博客 508

【数据同化第二期】数据同化中三大理论基础之一(最小方差估计)

【数据同化第二期】深入理解数据同化及经典案例(最小方差估计)

WW、forever的博客 1596

使用splitter控件 将界面分成可以调整宽度的三个部分

现在我们就自己动手来实现一个用户界面,该用户界面分为三个部分,由两个Splitter 控件来分隔和控制这三个的大小。1、先在窗体上放置部分一的控件,这里是TreeView控件,然后把它的 Dock 属性设置为 Left,使得控件停靠在窗体的左边。2、现在往窗体上拖放一个Splitter 控件,也就是界面中的Splitter1,把它的 Dock 属性也设置为 Left,这样它就停靠在TreeView...

weixin_30339457的博客 673

笔试题-2023-乐鑫-数字IC设计【纯净题目版】

笔试题-2023-乐鑫-数字IC设计【纯净题目版】

w0shishabi的博客 1777

C#使用spitter控件分割左右两个panel并可拖动

C#用splitter分割窗口注意事项 1、一定要按照顺序拖,即Z次序不能乱 2、先拖panel1到from中,设置Dock为left 3,拖splitter1到from中,注意千万不能拖到panel1上面,否则会失败! 此时splitter1的Dock默认设置为left,设置BorderStyle为FixedSingle。 4、拖panel2到from中,设置Dock为Fill即可 一定要注意顺序,一定要注意添加的顺序!!! ...

weixin_42212753的博客 2610

基于Keil软件实现对射式红外传感器计次 (江协科技HAL库)

用HAL库复现江协科技,让嵌入式学习之路更顺畅。

2401_82728381的博客 798

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

设置C#控件splitter的大小

如下图:宽和高都可以设置

tangliuqing的专栏 1025

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: haha
下一篇: Splitter2
uda1985
博客等级 码龄17年 39粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值