我建立了一个SDI的工程,然后分割出了3个窗口这三个窗口都可以通过分割线在一定范围内调整大小。
我现在在其中的一个窗口CFaceSystemView建立了一个CPropertySheet的变量m_Sheet,用来制作选项卡,然后我有两个属性表页面m_FaceGen和m_FaceMesh,都是从CPropertyPage类继承过来,然后加入了选项卡m_Sheet。
之后我得到了该窗口的大小,然后我想调整选项卡和选项卡页面的大小,使之与窗口大小一致,同时在我利用分割线调整窗口大小的时候能够相应的调整选项卡和选项卡页面的大小。
这个使用重载的OnSize()函数就可以实现,初始的时候使用OnCreate()函数可以实现。但是我设定大小的时候总是报错,而且显示的效果总是不让人满意,而且感觉选项卡大小和页面大小都没有被调整。由于初始化页面对话框的时候Addpage时总会有个框留下来,到底该如何调整,谢谢各位达人了,已经被困扰2天了...
我的OnCreate()的函数如下:
int CFaceSystemView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1; // TODO: Add your specialized creation code here
//添加选项卡属性表页面
m_Sheet.AddPage( &m_FaceGen );
m_Sheet.AddPage( &m_FaceMesh );
m_Sheet.Create(this, WS_CHILD|WS_VISIBLE); //修改风格
m_Sheet.ModifyStyleEx(0, WS_EX_CONTROLPARENT);
m_Sheet.ModifyStyle( 0, WS_TABSTOP ); //设置选项卡标签名字
TC_ITEM item;
item.mask = TCIF_TEXT;
item.pszText = _T("3DFace");
m_Sheet.GetTabControl()->SetItem(0, &item);
item.pszText = _T("MeshFace");
m_Sheet.GetTabControl()->SetItem(1, &item); //调整选项卡和其中的页面大小,以适应窗口的大小
CRect rect;
GetClientRect( &rect );
m_Sheet.SetWindowPos( NULL, rect.left, rect.top, rect.Width(),rect.Height(), SWP_NOZORDER|SWP_NOACTIVATE ); m_Sheet.GetClientRect( &rect ); m_FaceGen.SetWindowPos( NULL, rect.left+8, rect.top+27, rect.Width()-8, rect.Height()-27, SWP_SHOWWINDOW ); m_FaceMesh.Create(IDD_FACEMESHVIEW, &m_Sheet); if ( m_FaceMesh.GetSafeHwnd() )
m_FaceMesh.SetWindowPos( &wndNoTopMost, rect.left+8, rect.top+27, rect.Width()-8, rect.Height()-27, SWP_HIDEWINDOW ); return 0;
}
我现在在其中的一个窗口CFaceSystemView建立了一个CPropertySheet的变量m_Sheet,用来制作选项卡,然后我有两个属性表页面m_FaceGen和m_FaceMesh,都是从CPropertyPage类继承过来,然后加入了选项卡m_Sheet。
之后我得到了该窗口的大小,然后我想调整选项卡和选项卡页面的大小,使之与窗口大小一致,同时在我利用分割线调整窗口大小的时候能够相应的调整选项卡和选项卡页面的大小。
这个使用重载的OnSize()函数就可以实现,初始的时候使用OnCreate()函数可以实现。但是我设定大小的时候总是报错,而且显示的效果总是不让人满意,而且感觉选项卡大小和页面大小都没有被调整。由于初始化页面对话框的时候Addpage时总会有个框留下来,到底该如何调整,谢谢各位达人了,已经被困扰2天了...
我的OnCreate()的函数如下:
int CFaceSystemView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1; // TODO: Add your specialized creation code here
//添加选项卡属性表页面
m_Sheet.AddPage( &m_FaceGen );
m_Sheet.AddPage( &m_FaceMesh );
m_Sheet.Create(this, WS_CHILD|WS_VISIBLE); //修改风格
m_Sheet.ModifyStyleEx(0, WS_EX_CONTROLPARENT);
m_Sheet.ModifyStyle( 0, WS_TABSTOP ); //设置选项卡标签名字
TC_ITEM item;
item.mask = TCIF_TEXT;
item.pszText = _T("3DFace");
m_Sheet.GetTabControl()->SetItem(0, &item);
item.pszText = _T("MeshFace");
m_Sheet.GetTabControl()->SetItem(1, &item); //调整选项卡和其中的页面大小,以适应窗口的大小
CRect rect;
GetClientRect( &rect );
m_Sheet.SetWindowPos( NULL, rect.left, rect.top, rect.Width(),rect.Height(), SWP_NOZORDER|SWP_NOACTIVATE ); m_Sheet.GetClientRect( &rect ); m_FaceGen.SetWindowPos( NULL, rect.left+8, rect.top+27, rect.Width()-8, rect.Height()-27, SWP_SHOWWINDOW ); m_FaceMesh.Create(IDD_FACEMESHVIEW, &m_Sheet); if ( m_FaceMesh.GetSafeHwnd() )
m_FaceMesh.SetWindowPos( &wndNoTopMost, rect.left+8, rect.top+27, rect.Width()-8, rect.Height()-27, SWP_HIDEWINDOW ); return 0;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货