子窗口禁止了最大化。当移动子窗口超出主框架边缘时,主框架如何出现滚动条?
12 个解决方案
#1
一般都是在view里加入滚动条。
#2
没看太懂...
#3
确实是像一楼的所说,都是在View中加滚动条的
#4
没法发图片。
#5
顶一下
#6
楼主想在主框架添加滚动条的话,必须在主框架里面自己手写添加!
这种做法比较少见,起码我没有看到过,更没有做过!
不过,添加滚动条的方法都差不多,定义一个滚动条,然后创建!然后添加对应的响应函数等!
这种做法比较少见,起码我没有看到过,更没有做过!
不过,添加滚动条的方法都差不多,定义一个滚动条,然后创建!然后添加对应的响应函数等!
#7
有点象access 2003的界面,当打开的表超出框架时出现滚动条。
哎,没法贴图呀。
哎,没法贴图呀。
#8
要不你主框架就不用CFormView来加载,而用CScrollView这个基类,都差不多。
只不过CScrollView里面有现成的滚动,好判断也好实现。。。。。
只不过CScrollView里面有现成的滚动,好判断也好实现。。。。。
#9
同意楼上的。
#10
主框架是FormView??不是CMDIFrameWnd??
在主框架创建中:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CMDIFrameWnd::PreCreateWindow(cs) )
return FALSE;
cs.style |= WS_HSCROLL | WS_VSCROLL; //加入滚动条
return TRUE;
}
如果要更智能滚动条自动伸缩 则在子框架中:
void CChildFrame::OnMoving(UINT fwSide, LPRECT pRect)
{
CMDIChildWnd::OnMoving(fwSide, pRect);
GetParent()->SendMessage(WM_NCPAINT, TRUE, NULL);//或使用WM_NCCALCSIZE消息
}
在主框架创建中:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CMDIFrameWnd::PreCreateWindow(cs) )
return FALSE;
cs.style |= WS_HSCROLL | WS_VSCROLL; //加入滚动条
return TRUE;
}
如果要更智能滚动条自动伸缩 则在子框架中:
void CChildFrame::OnMoving(UINT fwSide, LPRECT pRect)
{
CMDIChildWnd::OnMoving(fwSide, pRect);
GetParent()->SendMessage(WM_NCPAINT, TRUE, NULL);//或使用WM_NCCALCSIZE消息
}
#11
10楼的办法可行。
第二个,OnMoving没找到,没法试。
但第一个方法,当把一个子窗口拖到右下角(这个子窗口是固定大小的;上面有个有个edit,拖动时焦点在这个edit上),然后通过滚动条返回右上角(此时子窗口看不见了),发现这样一个现象,有时点击其他子窗口没有反应,焦点也不能到这个子窗口上。
谢谢!
第二个,OnMoving没找到,没法试。
但第一个方法,当把一个子窗口拖到右下角(这个子窗口是固定大小的;上面有个有个edit,拖动时焦点在这个edit上),然后通过滚动条返回右上角(此时子窗口看不见了),发现这样一个现象,有时点击其他子窗口没有反应,焦点也不能到这个子窗口上。
谢谢!
#12
又试了一下,点击子窗口焦点就过来了。谢谢结贴。
#1
一般都是在view里加入滚动条。
#2
没看太懂...
#3
确实是像一楼的所说,都是在View中加滚动条的
#4
没法发图片。
#5
顶一下
#6
楼主想在主框架添加滚动条的话,必须在主框架里面自己手写添加!
这种做法比较少见,起码我没有看到过,更没有做过!
不过,添加滚动条的方法都差不多,定义一个滚动条,然后创建!然后添加对应的响应函数等!
这种做法比较少见,起码我没有看到过,更没有做过!
不过,添加滚动条的方法都差不多,定义一个滚动条,然后创建!然后添加对应的响应函数等!
#7
有点象access 2003的界面,当打开的表超出框架时出现滚动条。
哎,没法贴图呀。
哎,没法贴图呀。
#8
要不你主框架就不用CFormView来加载,而用CScrollView这个基类,都差不多。
只不过CScrollView里面有现成的滚动,好判断也好实现。。。。。
只不过CScrollView里面有现成的滚动,好判断也好实现。。。。。
#9
同意楼上的。
#10
主框架是FormView??不是CMDIFrameWnd??
在主框架创建中:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CMDIFrameWnd::PreCreateWindow(cs) )
return FALSE;
cs.style |= WS_HSCROLL | WS_VSCROLL; //加入滚动条
return TRUE;
}
如果要更智能滚动条自动伸缩 则在子框架中:
void CChildFrame::OnMoving(UINT fwSide, LPRECT pRect)
{
CMDIChildWnd::OnMoving(fwSide, pRect);
GetParent()->SendMessage(WM_NCPAINT, TRUE, NULL);//或使用WM_NCCALCSIZE消息
}
在主框架创建中:
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CMDIFrameWnd::PreCreateWindow(cs) )
return FALSE;
cs.style |= WS_HSCROLL | WS_VSCROLL; //加入滚动条
return TRUE;
}
如果要更智能滚动条自动伸缩 则在子框架中:
void CChildFrame::OnMoving(UINT fwSide, LPRECT pRect)
{
CMDIChildWnd::OnMoving(fwSide, pRect);
GetParent()->SendMessage(WM_NCPAINT, TRUE, NULL);//或使用WM_NCCALCSIZE消息
}
#11
10楼的办法可行。
第二个,OnMoving没找到,没法试。
但第一个方法,当把一个子窗口拖到右下角(这个子窗口是固定大小的;上面有个有个edit,拖动时焦点在这个edit上),然后通过滚动条返回右上角(此时子窗口看不见了),发现这样一个现象,有时点击其他子窗口没有反应,焦点也不能到这个子窗口上。
谢谢!
第二个,OnMoving没找到,没法试。
但第一个方法,当把一个子窗口拖到右下角(这个子窗口是固定大小的;上面有个有个edit,拖动时焦点在这个edit上),然后通过滚动条返回右上角(此时子窗口看不见了),发现这样一个现象,有时点击其他子窗口没有反应,焦点也不能到这个子窗口上。
谢谢!
#12
又试了一下,点击子窗口焦点就过来了。谢谢结贴。