c++ - 无法将焦点设置到 CEdit 控件

标签 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);
}

最佳答案

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

关于c++ - 无法将焦点设置到 CEdit 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54462838/

相关文章:

c# - 通过代码在 C# Visual Studio 中传递命令行参数

c++ - 如何在运行时打开控制台 [C++/Visual Studio]

C++:不完整类型

c++ - 如果是左值则引用,如果是右值则复制一份,即使右值持久化

c++ - 从视频中提取声音

c++ - 将类型与特征矩阵混合的错误

c++ - 在 Opengl 中渲染。重叠对象

c# - 使用 visual studio 开发单声道应用程序

c++ - 避免 Visual Studio 中令人讨厌的警告 C4100

c++ - 如何在C++中读取二进制图像(tif)?