| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3101 人关注过本帖
标题:关于分割对话框?
只看楼主 加入收藏
goaler
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-7-4
收藏
 问题点数:0 回复次数:7 
关于分割对话框?
具体是什么类支持对对话框的支持?分割对话框的步骤是哪些?谢谢了
搜索更多相关主题的帖子: 对话框 
2006-07-06 19:06
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
没有任何类直接支持Dialog的分割。可以自己写一个,不是很简单。基本的意思就是自定义一个类,从CWnd下继承。OnDraw的时候花一个粗实现横向(或纵向)充满窗口。然后让它接受鼠标LbuttonDown和Move的信息。重画其位置,并且移动所有Dialog中想移动的控件。我以前写过分割CFormView的分割框,写的不是很干净,以后会重写。

http://myajax95./
2006-07-07 02:41
Bekky
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:354
专家分:0
注 册:2006-5-29
收藏
得分:0 

我的建议是:重载static控件,用static做容器,实现动态分割窗口


我的编译环境为WinXp + VC 6.0 http://blog..cn/yobo
2006-07-07 10:33
goaler
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-7-4
收藏
得分:0 
怎么做,能说的详细点吗?

怎么做,能说的详细点吗?最好有现成的例程,多谢了!

2006-07-09 22:13
ligt0610
Rank: 1
等 级:新手上路
帖 子:204
专家分:5
注 册:2006-6-29
收藏
得分:0 
好难,努力中

通过不断的学习与思考才是提高自己能力的最好途径。。。。。。。
2006-07-09 23:08
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
收藏
得分:0 
这是我几年前用的一个越南大学生写的对话框内的分割控件。写的不是很好,我当时把他改成了对FormView的分割控件,和这个不一样,所以没办法给你用。
0Viv4KXw.zip (16.58 KB) 关于分割对话框?



写的不好的地方首先可能是有一两个window指针没写干净。另外就是封装不好,就是用起来需要的步骤太多。
在你的对话框中定义一个分割器控件:
protected:
CSplitterControl m_wndSplitter1;

在InitDialog中初始化他,同时设定其上下移动的范围,例如-50 ~ 50
BOOL CSPDemoDlg::OnInitDialog()
{
...
pWnd = GetDlgItem(IDC_SPLITTER1);
pWnd->GetWindowRect(rc);
ScreenToClient(rc);
m_wndSplitter1.Create(WS_CHILD | WS_VISIBLE, rc, this, IDC_SPLITTER1);
m_wndSplitter1.SetRange(50, 50, -1);


这里IDC_SPLITTER1你用作splitter的空控件。
然后管理他的移动的信息
LRESULT CSPDemoDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if (message == WM_NOTIFY)
{
if (wParam == IDC_SPLITTER1)
{
SPC_NMHDR* pHdr = (SPC_NMHDR*) lParam;
DoResize1(pHdr->delta);
}
}

return CDialog::DefWindowProc(message, wParam, lParam);
}
//
void CSPDemoDlg::DoResize1(int delta)
{
// Change the width for m_wndType, m_lstItem, m_txtContent
CSplitterControl::ChangeWidth(&m_wndType, delta);
CSplitterControl::ChangeWidth(&m_lstItem, -delta, CW_RIGHTALIGN);
CSplitterControl::ChangeWidth(&m_txtContent, -delta, CW_RIGHTALIGN);
Invalidate();
UpdateWindow();
}
在这个RoResize1()里面把你想移动的控件都列进去。

整体而言这个东西能用,就是太不标准,特别是最后信息管理的部份。我以后有时间可能会重写这个控件,现在是不会了。有什么问题可以题出来。

rVz1DlEU.gif (18.91 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册

http://myajax95./
2006-07-10 01:08
goaler
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2006-7-4
收藏
得分:0 
谢谢版主,呵呵。

谢谢版主,呵呵。

2006-07-11 07:06
边城路人
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:591
专家分:0
注 册:2007-3-8
收藏
得分:0 

我做了一个窗体分割的小程序
看过版主的
我有获益匪浅
过几天把程序传上来
大家看看咋样


当你开始怀疑自己时,说明你已经失去了判断力
2007-04-03 10:53
快速回复:关于分割对话框?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027623 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved