Как ты
2022-03-06 20:30
采纳率: 100%
浏览 10

mfc Tab Control控件切换时出现越界

TYPEGROUP.InsertItem(TYPE_1, _T("版本1")); //添加选项卡
TYPEGROUP.InsertItem(TYPE_2, _T("版本2")); //添加选项卡

m_type1 = new TYPE1;

m_type2 = new TYPE2;


type1.Create(IDD_DIALOG1, &TYPEGROUP);
//type1.ShowWindow(true);
type2.Create(IDD_DIALOG2, &TYPEGROUP);
CRect rsHard;
TYPEGROUP.GetClientRect(&rsHard);
//调整子对话框在父窗口中的位置,可以改动数值,使子窗体的大小合适;
rsHard.top += 22;
rsHard.bottom -= 2;
rsHard.left += 2;
rsHard.right -= 4;
type1.MoveWindow(&rsHard);
type2.MoveWindow(&rsHard);
type1.ShowWindow(true);
type2.ShowWindow(false);
p[1]= &type1;
p[2] = &type2;

之后运行type1初始化的时候报错
BOOL TYPE1::OnInitDialog()
{
CDialogEx::OnInitDialog();

// 将“关于...”菜单项添加到系统菜单中。

// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
    BOOL bNameValid;
    CString strAboutMenu;
    bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
    ASSERT(bNameValid);
    if (!strAboutMenu.IsEmpty())
    {
        pSysMenu->AppendMenu(MF_SEPARATOR);
        pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
}

// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
//  执行此操作
SetIcon(m_hIcon1, TRUE);            // 设置大图标
SetIcon(m_hIcon1, FALSE);        // 设置小图标

// TODO:  在此添加额外的初始化代码


/*
GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK1)->EnableWindow(FALSE);
GetDlgItem(IDC_SLIDER1)->EnableWindow(FALSE);
GetDlgItem(IDC_SLIDER2)->EnableWindow(FALSE);
GetDlgItem(IDC_SLIDER3)->EnableWindow(FALSE);
GetDlgItem(IDC_COMBO1)->EnableWindow(FALSE);
GetDlgItem(IDC_SLIDER4)->EnableWindow(FALSE);
GetDlgItem(IDC_SLIDER5)->EnableWindow(FALSE);
GetDlgItem(IDC_SLIDER6)->EnableWindow(FALSE);
GetDlgItem(IDC_SLIDER7)->EnableWindow(FALSE);

*/

return FALSE;  // 除非将焦点设置到控件,否则返回 TRUE

}

在我注释掉的地方报错未处理的异常0x0000005读取位置0x00000000时发生访问冲突

请问我该怎么改,为什么会出现这种情况

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

1条回答 默认 最新

相关推荐 更多相似问题