无法将焦点设置到CEdit控件

时间:2019-01-31 14:33:06

标签: c++ visual-studio

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

  1. 临时创建CEdit控件。
  2. 将焦点设置到控件上。
  3. 从控件中获取数字并将其存储在值中。
  4. 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);
}

1 个答案:

答案 0 :(得分:1)

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