我在CEdit文本框中遇到问题,确切的问题是创建它后无法将焦点设置为控件。
我想做的是:

  • 临时创建CEdit控件。
  • 将焦点设置为控件。
  • 从控件中获取数字并将其存储在值中。
  • 10秒后销毁控件。

  • 经过对互联网的研究后,我找不到解决问题的方法,因此请您解决。
    希望找到解决方案。提前致谢。

    我试过了
    editctrl.SetFocus();

    DWORD dw = LOWORD(editctrl.GetDlgCtrlID())| HIWORD(EN_SETFOCUS);

    SendMessage(WM_COMMAND,(WPARAM)dw,(LPARAM)editctrl.GetHandle());
    BOOL CViewsDlg::PreTranslateMessage(MSG* pMsg)
    {
        // TODO: Add your specialized code here and/or call the base class
    if (pMsg->message == WM_KEYDOWN && pMsg->wParam == 0xBB /*+*/)
    {
        if (!editctrl)
        {
    
            editctrl.Create(ES_NUMBER | WS_CHILD|WS_VISIBLE | WS_BORDER | WS_TABSTOP, CRect(0, 0, 100, 20), this, NULL);
    
            editctrl.ShowWindow(SW_SHOW);
            editctrl.SetFocus();
            //DWORD dw = LOWORD(editctrl.GetDlgCtrlID()) | HIWORD(EN_SETFOCUS);
            //SendMessage(WM_COMMAND,(WPARAM)dw, (LPARAM)editctrl.GetHandle());
            telestis = e_sinplin;
            SetTimer(1, 10000, NULL);
        }
    
    }
    return CDialogEx::PreTranslateMessage(pMsg);
    }
    

    最佳答案

    您需要使用CDialog::GotoDlgCtrl在对话框窗口中设置焦点。

    07-24 16:50