我建立了一个单文档的MFC程序,文档的内容是一个FormView。
无论是FormView还是MainFrame我都没有设滚动条,但程序编译出来却有一组滚动条在FormView周围,请问怎么去掉。
附:
MainFrame的StyleBOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: 在此处通过修改
// CREATESTRUCT cs 来修改窗口类或样式 cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
| WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU; return TRUE;
}FormView的InitialUpdate方法:void CMyToolView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();;
}将FormView加入主窗体的方法:pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CMyToolDoc),
RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口
RUNTIME_CLASS(CMyToolView));
无论是FormView还是MainFrame我都没有设滚动条,但程序编译出来却有一组滚动条在FormView周围,请问怎么去掉。
附:
MainFrame的StyleBOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: 在此处通过修改
// CREATESTRUCT cs 来修改窗口类或样式 cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE
| WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SYSMENU; return TRUE;
}FormView的InitialUpdate方法:void CMyToolView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();;
}将FormView加入主窗体的方法:pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CMyToolDoc),
RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口
RUNTIME_CLASS(CMyToolView));
如何获得当前视图的范围?
OnSize写在哪里?
{
CFormView::OnInitialUpdate(); CSize sizeTotal;
sizeTotal.cx = 0;
sizeTotal.cy = 0;
SetScrollSizes(MM_TEXT, sizeTotal);
GetParentFrame()->RecalcLayout();
}
CCreateContext* pContext)
{
return m_wndSplitter.Create(this,
2, 2, // TODO: 调整行数和列数
CSize(10, 10), // TODO: 调整最小窗格大小
pContext);
}
中又用ResizeParentToFit();将窗体设定成一个FormView的大小,所以那个滚动条实际是那个CSplitterWnd加上的。修改MainFrame的代码将CSpliterWnd的声明和重写的OnCreateClient方法去掉后就正常了,谢谢大家,散分结题。