CAddDlg dlg;
dlg.DoModal();//dlg中有一个IDC_EDIT1的edit box,我想给这个edit box设置焦点,请教高手,应该如何写代码?我按照如下的方法写代码,报错:
CWnd *pwnd;
pwnd = (CWnd*)GetDlgItem(IDC_EDIT1);
pwnd->SetFocus();

解决方案 »

  1.   

    GetDlgItem(IDC_EDIT1)->SetFocus();直接就可以了  报什么错
      

  2.   

    in onclicked function:CAddDlg dlg;
    dlg.DoModal();CWnd *pwnd;
    pwnd = (CWnd*)GetDlgItem(IDC_EDIT1);
    pwnd->SetFocus();在一个按钮的单击事件中,有以上代码。
    点击后,提示错误,说什么.....exe中的0x78a6e78c处有未经处理的异常:0xc00000005,读取位置0x0000020时发生冲突。
      

  3.   


    提示错误是:
    .......exe 中的 0x78a6e78c (mfc100ud.dll) 处有未经处理的异常: 0xC0000005: 读取位置 0x00000020 时发生访问冲突
      

  4.   

    你的IDC_EDIT1在子窗口中啊 得先取得子窗口的句柄
      

  5.   

    你的IDC_EDIT1在哪儿?CAddDlg 里面的?dlg.DoModal();会阻塞住的,等你把dlg关闭了才能执行到他下面的语句所以你要把GetDlgItem(IDC_EDIT1)->SetFocus();放到CAddDlg 的OnInitDialog里执行
      

  6.   

    CAddDlg dlg;
    dlg.DoModal();CWnd *pwnd;
    pwnd = (CWnd*)GetDlgItem(IDC_EDIT1);
    pwnd->SetFocus();
    这些代码难道你是写在同一个按钮的响应函数中的?如果是的话那就不能能对了
      

  7.   

    在你的CAddDlg类的OnInitDialog函数中
    加上你上面的代码
    GetDlgItem(IDC_EDIT1)->SetFocus();
    最后记得return FALSE;
      

  8.   

    嗯,是得返回FALSE,否则不起效果,慢慢调试一下,看看哪个地方为空了?
      

  9.   


    请教高手,我先dlg.DoModal();,表示窗口已经生成了,然后再他的下面引用它里面的控件,怎么会不对呢?指教一下吧,高手!
      

  10.   


    简单来说:dlg.DoModal()执行后会“卡”在这里,直到你关闭了dlg才会执行下面的语句
      

  11.   


    请教高手,DoModal,是阻塞的函数,和他功能一样,哪个函数不是阻塞的?
      

  12.   

    动态创建 create showwindow
      

  13.   


    非模态对话框CAddDlg *dlg = new CAddDlg;
    pdlg->Create(IDD_DIALOG1,this);
    pdlg->ShowWindow(SW_SHOW);
      

  14.   


    请教18楼的高手:
    CAddDlg *pdlg = new CAddDlg;
    pdlg->Create(IDD_DIALOG1,this);
    pdlg->ShowWindow(SW_SHOW);使用上面的代码生成了一个窗口,显示了。
    我现在希望CWnd *pwnd;
    pwnd = (CWnd*)pdlg->GetDlgItem(IDC_EDIT1)->GetSafeHwnd();
    pwnd->SetFocus();这样设置焦点也成功了。我现在希望读取这个edit box的值,应该用怎样的代码读取?