Как установить фокус ввода на динамически созданный контрол Edit? - VB

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Создаю через CreateWindowEx контрол EDIT со стилем ES_MULTILINE. Все работает нормально. Можно вводить текст, по нажатию ENTER - переход на новую строку. НО, если добавить на форму стандартную кнопку, она получает "частичный" фокус ввода и получается, что текст с клавиатуры вводится в EditBox, а нажатие ENTER - отправляется кнопке. Как передать контролу EDIT полный фокус ввода при нажатии ЛКМ по нему? Я пробовал получать оповещение WM_SETFOCUS, устанавливая затем фокус через функцию SetFocus или WM_NEXTDLGCTL, но это не помогло:

Решение задачи: «Как установить фокус ввода на динамически созданный контрол Edit?»

textual
Листинг программы
Option Explicit
 
Private Declare Function SendMessage Lib "user32" Alias "SendMessageW" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'Private Declare Function SetFocus2 Lib "user32" Alias "SetFocus" (ByVal hWnd As Long) As Long
 
Private Const WM_NEXTDLGCTL     As Long = &H28&
 
Private Sub Form_Load()
    Timer1.Interval = 1000
End Sub
 
Private Sub Timer1_Timer()
    SendMessage Me.hWnd, WM_NEXTDLGCTL, 0&, ByVal 0&
    Debug.Print "Worked"
    'Debug.Print "Old = " & SetFocus2(Command2.hWnd) & ". New = " & Command2.hWnd
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.583 из 5
Похожие ответы