1
votes

I encounter a problem with CEdit textbox , the exact problem is that i unable to Set Focus to the control after creating it. What i want to do is:

  1. Create CEdit control temporary.
  2. Set focus to the control.
  3. Get the number from the control and store it in a value.
  4. Destroy control after 10 second.

After some research on internet i couldn’t find solution to the problem , therefore i address to you. Hope to find a solution. Thanks in advance.

i tried 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

1 Answers

1
votes

You need to use CDialog::GotoDlgCtrl to set focus in dialog windows.