C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Передача фокуса, SetFocus
tsl
Отправлено: 18.02.2004, 14:19


Дежурный стрелочник

Группа: Участник
Сообщений: 65



Почему может не работать такой код:

void __fastcall TForm1::OnMessage(TMessage& m)
{
::SetFocus(this);
m.Result = 0;
}

То, что выполняется видел по точке останова. Но фокус не передается.

В чем может быть дело?

Не работает и такой код

::SetFocus(FindWindow(....));
Gedeon
Отправлено: 18.02.2004, 14:46


Ветеран

Группа: Модератор
Сообщений: 1742



Зачем в форуме задавать теже вопросы в разных темах?
tsl
Отправлено: 18.02.2004, 15:04


Дежурный стрелочник

Группа: Участник
Сообщений: 65



Да в том то и дело, что я на опыте убедился: перемещение форм по слоям и передача фокуса — темы разные.
tsl
Отправлено: 18.02.2004, 15:19


Дежурный стрелочник

Группа: Участник
Сообщений: 65



Если конкретно, я имел следующую ошибку:

Закрыл весь экран одной формой без бордюров. Так что не определишь Windows ли это. Обнаружил, что форма становится глухой переодически к клавиатуре. Обнаружил причину: при вызове последовательности таких форм, верхняя теряет фокус. По смыслу программы такое не допустимо.

Кстати, форма получает фокус посредством FormStyle = fsStayOnTop.

Вернуться в Вопросы программирования в C++Builder