【VC编程技巧】窗体?3.9静态窗口分割 (固定分割线)

上一章节说明了如何静态的分割窗口,分割后窗口的分割线是可以拖动的,有的时候我们需要固定分割线,那么如何实现固定分割呢?

我们需要构造出固定分割窗口类(CFixedSplitterWnd),来实现我们对窗口的固定分割,以上一章例来说明。

1。新创建MFC类,从CSplitterWnd继承,并重载WM_LBUTTONDOWN ,WM_MOUSEMOVE 和 WM_SETCURSOR消息响应函数。

2。新构造的CFixedSplitterWnd使用方法和CSplitterWnd一样。

通过MFC类向导,构造CFixedSplitterWnd时,找不到基类CSplitterWnd,可以先选择CWnd,然后手动把基类改成CSplitterWnd。

重载WM_LBUTTONDOWN ,WM_MOUSEMOVE 和 WM_SETCURSOR消息响应函数

// CFixedSplitterWnd メッセージ ハンドラー

void CFixedSplitterWnd::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO: ここにメッセージ ハンドラー コードを追加するか、既定の処理を呼び出します。

	//CSplitterWnd::OnLButtonDown(nFlags, point);
	CWnd::OnLButtonDown(nFlags, point);
}

void CFixedSplitterWnd::OnMouseMove(UINT nFlags, CPoint point)
{
	// TODO: ここにメッセージ ハンドラー コードを追加するか、既定の処理を呼び出します。

	//CSplitterWnd::OnMouseMove(nFlags, point);
	CWnd::OnMouseMove(nFlags, point);
}

BOOL CFixedSplitterWnd::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
	// TODO: ここにメッセージ ハンドラー コードを追加するか、既定の処理を呼び出します。

	//return CSplitterWnd::OnSetCursor(pWnd, nHitTest, message);
	return CWnd::OnSetCursor(pWnd, nHitTest, message);
}

【VC编程技巧】窗体?3.9静态窗口分割 (固定分割线)

时间: 2024-12-15 01:46:58

【VC编程技巧】窗体?3.9静态窗口分割 (固定分割线)的相关文章

【VC编程技巧】窗体?3.8静态窗口分割

窗口分割在平时编成中用的特别多,Windows的资源管理器,编写代码的IDE(Visual Stdio,Eclipse)都有窗口分割,下面我们以单文档维例开始讲如何进行窗口分割! CSplitterWnd Class class CSplitterWnd : public CWnd CSplitterWnd类很方便的提供了窗口分割的功能,只需下面几步就能完成窗口分割: 定义CSplitterWnd对象在窗口框架类(CFrameWnd或者CMDIChildWnd)中: 重载框架类成员函数CFram

【VC编程技巧】窗体?3.5对单文档或者多文档程序制作启动画面

(一)概要: 文章描述了怎样通过Visual C++ 2012或者Visual C++ .NET,为单文档或者多文档程序制作启动画面.在Microsoft Visual Studio 6.0中对于单文档程序(SDI)我们可以很方便利用微软提供的组件Visual C++ Component (Splash Screen).因为在Microsoft Visual Studio 6.0以后的版本或者Visual C++ .NET没有提供这个组件,我们可以通过自定义对话框来实现Splash Screen

【VC编程技巧】窗体?3.6以渐变效果载入对话框

平时我们经常可以看到很多应用程序启动过程很酷,什么百叶窗,渐变,各种效果,今天我们看一下如何在程序中增加这种效果. 一.示例展示: 二.示例思路: 1.首先介绍两个知识,一个是函数MoveWindow(),一个是定时器.  函数MoveWindow():改变指定窗口的位置和大小.对顶窗口来说,位置和大小取决于屏幕的左上角;对子窗口来    说,位置和大小取决于父窗口客户区的左上角.函数原形如下: BOOL MoveWindow( HWND hWnd, int X, int Y, int nWi

【VC编程技巧】窗体?3.7托盘程序介绍(模拟QQ消息)

所谓的托盘程序就是运行时在系统托盘区(就是桌面右下角显示时间的区域)出现一个小图标的程序.代表它运行的图标称作托盘图标.我们可以通过使用小图标来控制应用程序的状态. (一)NOTIFYICONDATA Structure typedef struct _NOTIFYICONDATA { DWORDcbSize;//结构体大小 HWNDhWnd;//接受icon消息的窗口句柄 UINT uID;//icon图标的资源Id UINTuFlags;//标志一些成员是否有效 UINTuCallbackM

【VC编程技巧】窗体?3.4利用bitmap改变对话框的背景。

效果图: 代码: 1.在对话框初始化函数OnInitDialog中加载bitmap,然后创建新的画刷. // CBitmapDemoDlg メッセージ ハンドラー BOOL CBitmapDemoDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // "バージョン情報..." メニューをシステム メニューに追加します. // IDM_ABOUTBOX は.システム コマンドの範囲内になければなりません. ASSERT((IDM_ABOUT

【VC编程技巧】窗口?3.6以渐变效果加载对话框

平时我们常常能够看到非常多应用程序启动过程非常酷.什么百叶窗.渐变,各种效果,今天我们看一下怎样在程序中添加这样的效果. 一.演示样例展示: 二.演示样例思路: 1.首先介绍两个知识,一个是函数MoveWindow(),一个是定时器. ? 函数MoveWindow():改变指定窗体的位置和大小.对顶窗体来说,位置和大小取决于屏幕的左上角;对子窗体来    说,位置和大小取决于父窗体客户区的左上角.函数原形例如以下: BOOL MoveWindow( HWND hWnd, int X, int Y

【VC编程技巧】控件?4.4ListBox控件(打造带有复选框的ListBox)

4.4ListBox控件(打造带有复选框的ListBox) 下面通过两种方式构建复选框ListBox 1.对话框中插入ListBox控件(IDC_LIST1,IDC_LIST2),如下设置属性 图1 方式一: 2.对ListBox控件(IDC_LIST1)关联控件变量m_checkListBox1,将控件变量类型CListBox -> CCheckListBox(需要手动完成). //修改控件变量类型:CListBox -> CCheckListBox CCheckListBox m_chec

【VC编程技巧】控件?4.1位图Button

4.1位图Button 给按钮增加位图,或改变按钮字体,可以让按钮达到跟炫的效果:如何给按钮增加位图,和改变按钮上文字的字体?请看下面示例! 1>创建对话框程序,建立如下对话框: 图1 资源ID说明: 左边按钮ID:IDC_BUTTON1 右边按钮ID:IDCANCEL 2>设置button属性,设置选项如下图箭头处: 图2 3>添加位图到工程,如下图箭头处: 图3 4>给左边按钮添加控件变量(利用类向导); CBitmapButton m_bitmapButton; ※如果类向导

【VC编程技巧】控件?4.2自定义EDIT(只限字母字符输入)

4.2自定义EDIT 自定义button,自定义editbox可以使button和editbox更符合自己的需求.请看下面示例:只限字母字符输入的editbox建立. 1.了解函数CWnd::SubclassDlgItem BOOL SubclassDlgItem( UINT nID, CWnd* pParent ); 说明:调用这个函数可以"动态子类化"从对话框模板中创建出来的控件:并且将控件绑定在CWnd对象上. 参数: nID   控件的ID pParent  控件父层(一般是对