用vc建立了基于对话框的程序,对话框上有一个编辑框
我想在程序一运行起来就让该编辑框获得焦点
所以把语句GetDlgItem(IDC_EDIT1)->SetFocus()放在了对话框的构造函数中
程序编译正确,可是一运行就出错
这是为什么?
又如何让程序一运行就获得焦点呢

解决方案 »

  1.   

    所以把语句GetDlgItem(IDC_EDIT1)->SetFocus()放在了对话框的构造函数中
    构造函数只是构造了窗口,但是你的控件还没有创建,所以你会发生断言错误,窗口句柄无效
    你应该把这句放到OnInitDialog中
      

  2.   

    你需要在ResourceView中点击对话框,在菜单中“布局”---“Tab顺序”,然后让你想要获得焦点的编辑框上的号码为1
    就行了
      

  3.   

    不能放在构造中,解释如一楼;
    也不用写代码,可以打开对话框资源编辑器,按下Ctrl+D,然后点那个编辑框,将它的顺序设为1就行了
      

  4.   


    确实是因为窗口还没有创建导致这个控件也还没有传教引起的不过后面说断言,这个可不是断言了
    是前面的GetDlgItem(IDC_EDIT1)这个指针为空了,到时指针引用错误如果是断言的话release版本可以通过的,指针错误的话release版本都运行不了的你这句放到OnInitDialog中,并且OnInitDialog函数不要返回TRUE了,返回FALSE
      

  5.   

    GetDlgItem(IDC_EDIT1)->SetFocus()放在OnInitDialog中.并返回false.