【VC】Dialog 窗体随意切割子窗体。

用 Dialog 对话框来实现窗体的随意切割。

在资源中加入  Dialog 选择  IDD_FORMVIEW 资源。。分别新建FormViewOne,FormViewTwo FormViewThree 类,分别继承基类 CFormView。

class CMyFormViewOne : public CFormView
{
	DECLARE_DYNCREATE(CMyFormViewOne)

protected:
	CMyFormViewOne();           // 动态创建所使用的受保护的构造函数
	virtual ~CMyFormViewOne();

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()
};
public:
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

public:
	CFrameWnd *m_pMyWnd;
	CSplitterWnd m_SplitterWnd;
	CSplitterWnd m_SplitterWnd2;

	|			|		|
	|			|	2	|
	|	  1		|||||||||||||||||
	|			|	3	|
	|			|		|

int CSplitDlgDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;

	CString strMyClass = AfxRegisterWndClass(CS_VREDRAW |CS_HREDRAW,
		::LoadCursor(NULL, IDC_ARROW),
		(HBRUSH) ::GetStockObject(WHITE_BRUSH),
		::LoadIcon(NULL, IDI_APPLICATION));

	// Create the frame window with "this" as the parent
	m_pMyWnd = new CFrameWnd;
	m_pMyWnd->Create(strMyClass,_T(""), WS_CHILD,
		CRect(0,0,200,200), this);
	m_pMyWnd->ShowWindow(SW_SHOW);	

	if (m_SplitterWnd.CreateStatic(m_pMyWnd,1, 2) == NULL) //1行2列
	{
		return -1;
	}	

	if(m_SplitterWnd2.CreateStatic(&m_SplitterWnd,2,1,WS_CHILD|WS_VISIBLE,m_SplitterWnd.IdFromRowCol(0,1)) == NULL)
	{
		return -1;
	}

	m_SplitterWnd.CreateView(0,0, RUNTIME_CLASS(CMyFormViewOne),
		CSize(100,100), NULL);

	m_SplitterWnd2.CreateView(0,0, RUNTIME_CLASS(CMyFormViewTwo),
		CSize(80,80), NULL);

	m_SplitterWnd2.CreateView(1,0, RUNTIME_CLASS(CMyFormViewThree),
		CSize(80,80), NULL);
 return 0;
}

在 OnInitDialog 函数中

	CRect rect;
	GetWindowRect(&rect);
	ScreenToClient(&rect);

	m_pMyWnd->MoveWindow(&rect);
	m_pMyWnd->ShowWindow(SW_SHOW);

去掉子窗体的滚动栏的显示。。例如以下代码就可以

void CMyFormViewOne::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();

	m_nMapMode = -1;
}



时间: 2024-10-14 06:17:51

【VC】Dialog 窗体随意切割子窗体。的相关文章

mdi父窗体如何向子窗体发送数据

Q: mdi父窗体如何向子窗体发送数据,一般都有哪些方式? A: 对于最通常的MDI窗口, WinForm在Form 类的属性中提供了Form.MdiChildren这个属性来返回所有的子窗口. 这样我们只要继承Form类, 然后使用这个类来新建子窗口.public class MyChildForm : Form{} 然后, 通过MdiChildren属性来获取子窗口, 调用子窗口类中定义的公共方法, 或者公共属性来传送数据即可. 第二种方法, 我们还可以在MDI parent form中定义

主窗体里面打开子窗体&&打印饼图《Delphi 6数据库开发典型实例》--图表的绘制

\Delphi 6数据库开发典型实例\图表的绘制 1.在主窗体里面打开子窗体:ShowForm(Tfrm_Print); procedure Tfrm_Main.ShowForm(AFormClass:TFormClass);begin with AFormClass.Create(Self) do try ShowModal;  // 阻塞或者模态窗口,只有你把当前窗口关闭后,才能去操作父亲窗口. finally Free; end;end; //这个例子打开有异常,提示单元chart 引用本

WinForm MDi子窗体最大化导致子窗体标题栏和主窗体菜单栏合并问题的解决方法

在主窗体菜单栏的ItemAdded事件中编写如下代码: *msMain是我的主窗体菜单栏的Name属性值 //子窗体最大化不显示图标 private void msMain_ItemAdded(object sender, ToolStripItemEventArgs e) { if (e.Item.Text.Length == 0) { e.Item.Visible = false; } else { e.Item.Visible = true; } } 说明: 打开的子窗体最大化的时候,菜单

js父窗体关闭,子窗体紧随

近来的.我们遇到了权限管理系统.由于权限管理系统与原系统的风格不符.打开一个全新的窗口.问题就来了.admin取消后,,权限管理形式不关闭.其他普通用户登录后.尚能经营权的管理形式. 简化问题:admin时候,或者main.html关闭的时候,打开的全部新窗体一起关闭.问题就攻克了 直接看代码吧: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/ht

C#如何操作另一个窗体:[2]子窗体操作主窗体(转)

首先我们新建一个项目   在项目管理器中,我们右击,选择"添加",选择"windows窗体"   输入窗体名,点击"确定"   我们给form1拖入按钮控件   在项目管理器中,我们找到"Form1.Designer.cs",双击打开代码窗口   我们找到按钮的定义,然后把private改为public   我们回到窗体1,把以下代码填入代码窗品中 Form2 a = new Form2(); a.Show(this); 这个

子窗体操作

父窗口继承QMainWindow类,在该类里面新建一个子窗口,该子窗口继承QDialog类 <span style="white-space:pre"> </span>StepDialog* m_pStepDialog; <span style="white-space:pre"> </span>m_pStepDialog = new StepDialog(this); 然后对子窗口进行操作. 子窗口全屏显示: QT中

创建父窗体显示子窗体方法

#region 显示子窗体 /// <summary> /// 显示子窗体 /// </summary> /// <param name="form"></param> private void ShowForm(Form form) { foreach (Form frm in this.MdiChildren) { if (frm.Text == form.Text) { frm.Activate(); return; } } for

MvvmCross for WPF 支持子窗体显示、关闭、传参

最近在做 PCL(Portable Class Library)平台的项目,所以发一下自己遇到的问题 MvvmCross 是 PCL 平台的一个 MVVM 框架 地址:https://github.com/MvvmCross/MvvmCross 支持的平台: Silverlight for WP7, WP8 Mono for Android (or Xamarin.Android) MonoTouch for iOS (or Xamarin.iOS) the WinRT XAML framewo

window.open 打开子窗体,关闭全部的子窗体

需求:通过window.open方法打开了子窗体,当关闭主窗体时.子窗体应当也关闭. 实现思路: 1.打开子窗体函数window.open(url,winName)的第二个參数winName能够唯一标识打开的窗体.因此关闭子窗体仅仅须要使用winName.close()函数就可以. 2.一个页面可能有多个子窗体. 因此须要一个数组存储全部子窗体对象.关闭时,遍历数组就可以. 3.子窗体还能够再打开子窗体. 无限循环下去.因此须要推断. 此需求能够通过两个方法实现. 调用子窗体的关闭函数. 此方法