我程序在一个tab control的其中一个页面加上了第三方的一个控制ActiveX control,运行出现了winocc.cpp,279 行断言错误,
winocc.cpp279行的内容为:
void CWnd::MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint)
{
ASSERT(::IsWindow(m_hWnd));//279 if (m_pCtrlSite == NULL)
::MoveWindow(m_hWnd, x, y, nWidth, nHeight, bRepaint);
else
m_pCtrlSite->MoveWindow(x, y, nWidth, nHeight, bRepaint);
}我的程序是这样的:
BOOL CZhicao::OnInitDialog()
{
CDialog::OnInitDialog();
if(flag == 1)
{
//////////////Tab control控件初始化
m_tab.InsertItem(0, _T("柄部参数")); //添加外形参数选项卡
m_tab.InsertItem(1, _T("刃部参数")); //添加外形参数选项卡
m_tab.InsertItem(2, _T("沟槽参数")); //添加周刃参数选项卡
m_tab.InsertItem(3, _T("周刃参数")); //添加沟槽参数选项卡
m_tab.InsertItem(4, _T("端刃参数")); //添加端刃参数选项卡
m_tab.InsertItem(5, _T("产品信息录入")); //添加产品信息选项卡
//关联对话框,并且将IDC_TAB1控件设为父窗口
m_para1.Create(IDD_ZCJDWAIXIN, GetDlgItem(IDC_TAB1));
m_para2.Create(IDD_ZCJDGOUCAO, GetDlgItem(IDC_TAB1));
m_para3.Create(IDD_ZCJDZHOUREN, GetDlgItem(IDC_TAB1));
m_para4.Create(IDD_ZCJDDUANREN, GetDlgItem(IDC_TAB1));
m_para5.Create(IDD_CANPINGXINXI, GetDlgItem(IDC_TAB1));
m_para6.Create(IDD_ZCJDBINBU, GetDlgItem(IDC_TAB1));
//获得IDC_TAB1客户区大小
CRect rs;
m_tab.GetClientRect(&rs);
//调整子对话框在父窗口中的位置
rs.top += 22;
// rs.bottom -= 1;
// rs.left += 1;
// rs.right -= 1;
//设置子对话框尺寸并移动到指定位置
m_para1.MoveWindow(&rs);
m_para2.MoveWindow(&rs);
m_para3.MoveWindow(&rs);
m_para4.MoveWindow(&rs);
m_para5.MoveWindow(&rs);
m_para6.MoveWindow(&rs);
//分别设置隐藏和显示
m_para1.ShowWindow(false);
m_para2.ShowWindow(false);
m_para3.ShowWindow(false);
m_para4.ShowWindow(false);
m_para5.ShowWindow(false);
m_para6.ShowWindow(true);
//设置默认的选项卡
m_tab.SetCurSel(0);...................
觉得应该是m_para1.MoveWindow(&rs);这里的问题,网上查了一下,说是窗口还没创建,不能用于move,但不知如何解决,谢谢各位了,
winocc.cpp279行的内容为:
void CWnd::MoveWindow(int x, int y, int nWidth, int nHeight, BOOL bRepaint)
{
ASSERT(::IsWindow(m_hWnd));//279 if (m_pCtrlSite == NULL)
::MoveWindow(m_hWnd, x, y, nWidth, nHeight, bRepaint);
else
m_pCtrlSite->MoveWindow(x, y, nWidth, nHeight, bRepaint);
}我的程序是这样的:
BOOL CZhicao::OnInitDialog()
{
CDialog::OnInitDialog();
if(flag == 1)
{
//////////////Tab control控件初始化
m_tab.InsertItem(0, _T("柄部参数")); //添加外形参数选项卡
m_tab.InsertItem(1, _T("刃部参数")); //添加外形参数选项卡
m_tab.InsertItem(2, _T("沟槽参数")); //添加周刃参数选项卡
m_tab.InsertItem(3, _T("周刃参数")); //添加沟槽参数选项卡
m_tab.InsertItem(4, _T("端刃参数")); //添加端刃参数选项卡
m_tab.InsertItem(5, _T("产品信息录入")); //添加产品信息选项卡
//关联对话框,并且将IDC_TAB1控件设为父窗口
m_para1.Create(IDD_ZCJDWAIXIN, GetDlgItem(IDC_TAB1));
m_para2.Create(IDD_ZCJDGOUCAO, GetDlgItem(IDC_TAB1));
m_para3.Create(IDD_ZCJDZHOUREN, GetDlgItem(IDC_TAB1));
m_para4.Create(IDD_ZCJDDUANREN, GetDlgItem(IDC_TAB1));
m_para5.Create(IDD_CANPINGXINXI, GetDlgItem(IDC_TAB1));
m_para6.Create(IDD_ZCJDBINBU, GetDlgItem(IDC_TAB1));
//获得IDC_TAB1客户区大小
CRect rs;
m_tab.GetClientRect(&rs);
//调整子对话框在父窗口中的位置
rs.top += 22;
// rs.bottom -= 1;
// rs.left += 1;
// rs.right -= 1;
//设置子对话框尺寸并移动到指定位置
m_para1.MoveWindow(&rs);
m_para2.MoveWindow(&rs);
m_para3.MoveWindow(&rs);
m_para4.MoveWindow(&rs);
m_para5.MoveWindow(&rs);
m_para6.MoveWindow(&rs);
//分别设置隐藏和显示
m_para1.ShowWindow(false);
m_para2.ShowWindow(false);
m_para3.ShowWindow(false);
m_para4.ShowWindow(false);
m_para5.ShowWindow(false);
m_para6.ShowWindow(true);
//设置默认的选项卡
m_tab.SetCurSel(0);...................
觉得应该是m_para1.MoveWindow(&rs);这里的问题,网上查了一下,说是窗口还没创建,不能用于move,但不知如何解决,谢谢各位了,
判断 m_para1.Create(IDD_ZCJDWAIXIN, GetDlgItem(IDC_TAB1));
返回值,看看是否成功?
说明窗口没有创建好
我在InitInstance()里面加上AfxEnableControlContainer();所有BUG解决,但是控件显示不出来,,又是什么问题?