我有一个类CForm,它有一个包含页面的COblist。每个页面都有一个带控件的列表(如单选按钮,复选框等)。 CForm还有一个CList,其中FormPanel是带有CTabCtrl的CWnd。每个页面都有一个FormPanel。 CForm还有一个带有CScrollBar的CWnd和一个方法SetPanel();
表单是从XML创建的:
<Form><Page><Radiobutton></Radiobutton></Page></Form>
将表单加载到CFormView中,其控件加载到面板上,面板放在面板(CWnd)中,带有滚动条。
我的主要问题是,在我用鼠标悬停或使用滚动条之前,控件是不可见的。
胡佛之前:
胡佛后:
所以控件在那里,我可以使用它们,但是我如何让它们从一开始就显示出来?
我尝试使用CScrollBar将CWnd更改为CFormView,但它无法正常工作。因为我的CTabCtrl需要CWnd而不是CFormView,我不想太多地改变结构(比如为面板添加属性页而不是CWnds)
那么,任何想法我怎么能让它发挥作用?
编辑:
void CForm::Show()
{
m_pclScrollbar = new CFormularScrollbar(m_pwndParent, &m_clRect);
m_pclScrollbar->SetPanel(m_pclPanel);
m_pclScrollbar->ScrollBarInit();
m_pclScrollbar->Show();
m_pclPanel->Show();
m_pclPanel->RedrawWindow();
}
编辑2:
m_pclTabCtrl = new CTabCtrl();
if(!m_pclTabCtrl->Create(TCS_TABS | WS_CHILD | WS_VISIBLE, rectTabCtrl, this, IDC_TAB_FORMULAR))
throw new CBException("CFormPanel", "TabCtrlInit", "Could not create");
编辑3:
是否可以将Scrollbar与控制器放在同一个CWnd中?或滚动时移动滚动条?