Ограничение GetFocus для определенного диалога и / или приложения - PullRequest
0 голосов
/ 28 октября 2010

У меня есть проект MS Visual C ++, где у меня есть диалоговое окно на основе CDialog с несколькими элементами управления редактированием.Я хочу выделить элемент управления с текущим фокусом для пользователя.Я реализовал это, получив указатель на окно с текущим фокусом с помощью GetFocus () и затем получив идентификатор для сфокусированного элемента управления с помощью GetDlgCtrlID ():

CWnd * pWnd = GetFocus ();

idfocus = (pWnd-> GetDlgCtrlID ());

Затем я сравниваю это с текущим элементом управления, для которого устанавливается HBRUSH в функции-члене OnCtlColor.

Это прекрасно работаетпока я не нажму на окно другого приложения, запущенного на моем ПК.Такие как Firefox.В этот момент происходит сбой моего приложения.

Каков наилучший способ найти элемент управления, если таковой имеется, в конкретном диалоговом окне и только в этом конкретном диалоговом окне?Или может быть ограничено только тем же приложением.

1 Ответ

0 голосов
/ 05 ноября 2010

Все элементы управления в вашем диалоге в основном являются дочерними элементами вашего основного диалога.Таким образом, вы можете создать ограничение, проверив сначала, является ли фокусируемый элемент управления дочерним элементом вашего диалога (вы можете использовать GetParent ()) перед выполнением необходимых операций.

...