Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2014, 17:45   #1
taras-proger
Подтвердите свой е-майл
 
Регистрация: 12.11.2014
Сообщений: 470
По умолчанию Фокус ввода

Создал дочернее окно:
Код:
Window=CreateWindow(Class.c_str()                                  ,
                     "InputField"                                         ,
                     WS_BORDER                                      |
                     WS_CLIPSIBLINGS                                |
                     WS_CHILDWINDOW                                 |
                     WS_CHILDWINDOW                                 |
                     WS_VISIBLE                                     ,
                     Left                                           ,
                     Top                                            ,
                     Width                                          ,
                     Height                                         ,
                     WindowCommand                                  ,
                     NULL                                           ,
                     (HINSTANCE)GetWindowLong(Window, GWL_HINSTANCE),
                     NULL                                           );
 MoveWindow(Window, Left, Top, Width, Height, TRUE);
, оконная процедура
Код:
TEXTMETRIC Metric;
 HDC        Context;
 HFONT      Font;
 switch (Message)
 {
  case WM_SETFOCUS  : Context=GetDC(Window);
                      GetTextMetrics(Context, &Metric);
                      Font=CreateEasyFont(Context, "Times New Roman", 18.0, 18.0, NormalFont);
                      Font=(HFONT)SelectObject(Context, Font);
                      CreateCaret(Window, NULL, Metric.tmAveCharWidth, Metric.tmHeight);
                      SetCaretPos(0, 0);
                      ShowCaret(Window);
                      ReleaseDC(Window, Context);
  break;
  case WM_KILLFOCUS : HideCaret(Window);
                      DestroyCaret();
  break;
 }
 return DefWindowProc(Window, Message, First, Second);
}
.Каретка не ставится. Продебажил с остановом, сообщение WM_SETFOCUS не получается. Ни клики, ни альттаб не помогают. Как передать фокус в дочернее окно?
taras-proger вне форума Ответить с цитированием
Старый 12.11.2014, 20:41   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от taras-proger Посмотреть сообщение
Как передать фокус в дочернее окно?
Например перехватить WM_LBUTTONDOWN и вызвать SetFocus()
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать фокус ввода в free pascal kudzey Помощь студентам 6 20.08.2014 21:32
Окно потеряло фокус ввода. С++ (Visual Studio) fruiting Помощь студентам 0 07.04.2013 20:17
Как передать фокус ввода в поле Edit Arassir Помощь студентам 14 11.07.2012 12:37
Фокус ввода Rusl92 JavaScript, Ajax 3 27.07.2011 20:01
DBGrid - фокус ввода Olg@ БД в Delphi 8 22.06.2009 13:40