C++ 如何创建MFC CSliderCtrl?

C++ 如何创建MFC CSliderCtrl?,c++,mfc,C++,Mfc,我使用MSVS2010的向导创建了一个新的MFC项目(如果重要的话,我选择了单个文档)。然后,我创建了一个对话框,并从工具箱中拖动了一个新的滑块。使用VS的向导(右键单击对话框-->添加类),我为对话框创建了一个名为MyDialog的类。接下来,我使用VS的向导向滑块添加一个变量 所以现在,在我的MyDialog类中,我有一个CSliderCtrl,我无法让它工作。 我试图在OnInitDialog()中使用SetRange()和\或SetPos(),但它们会崩溃并引发异常 如果我在OnInit

我使用MSVS2010的向导创建了一个新的MFC项目(如果重要的话,我选择了单个文档)。然后,我创建了一个对话框,并从工具箱中拖动了一个新的滑块。使用VS的向导(右键单击对话框-->添加类),我为对话框创建了一个名为
MyDialog
的类。接下来,我使用VS的向导向滑块添加一个变量

所以现在,在我的
MyDialog
类中,我有一个
CSliderCtrl
,我无法让它工作。 我试图在
OnInitDialog()
中使用
SetRange()
和\或
SetPos()
,但它们会崩溃并引发异常

如果我在
OnInitDialog()
中创建一个新的
CSliderCtrl
,然后像这样用
SetRange()
设置它的范围,它确实可以工作

BOOL MyDialog::OnInitDialog()
{
    CSliderCtrl *TrackBar = new CSliderCtrl;

    TrackBar->Create(WS_CHILD | WS_VISIBLE,CRect(20, 20, 60, 280),this, IDC_SLIDER1);
    int min,max;
    TrackBar->GetRange(min,max);
    TrackBar->SetPos(10);
    return TRUE;
}
但这不起作用:

BOOL MyDialog::OnInitDialog()
{
    m_mySlider.SetRange(1,100); //sending true\false doesn't matter
    return TRUE;
}

有人能帮我吗?

从您显示的代码中,您错过了这一重要行

       CDialogEx::OnInitDialog();

您应该在上述行之后添加SetRange和SetPos调用。

程序不会崩溃,也不会引发异常。您将获得一个断言失败的对话框。它告诉你什么先决条件失败了。要解决问题,请阅读文档。该文档说明了如何首先调用基类OnInitDialog。这是强制性的。谢谢你纠正我的技术错误,我确实得到了一个失败的断言。也谢谢你的解决方案!我错过了声明必须调用基类“onInitDialog”的部分。荣誉:)-“在评论中回答”是一种非常可怕的方式来帮助来这里寻求答案的人,因为“回答”提供了一种比浏览评论部分更好的学习答案的方式。如果您对将某人的答案标记为正确答案有所保留,那么“回答您自己的问题”也是可以接受的