BOOL cwnd::enablewindow(bool benable = TRUE) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

BOOL cwnd::enablewindow(bool benable = TRUE)

Поиск

BOOL CWnd::EnableWindow(BOOL bEnable = TRUE)

который включает (если bEnable = TRUE) или отключает (если FALSE) ввод с клавиатуры и мыши в указанное окно:

GetDlgItem(IDC_START)->EnableWindow(FALSE);   

GetDlgItem(IDC_STOP)->EnableWindow(TRUE);

 

Одна особенность кнопки Start в нашем диалоге состоит в том, что она была создана на основе кнокпи OK. При этом мы оставили без изменений флаг “Default Button” во вкладке Styles свойств кнопки. Данный флаг определяет кнопку, выделенную жирной рамкой, и при нажатии <Enter> срабатывает именно эта кнопка.

 

К сожалению, при нажатии кнопки не мышкой, а через горячую клавишу, система обрабатывает сообщения EN_KILLFOCUS от предшествующего элемента управления уже после запуска обработчика BN_CLICKED. Для нас такая задержка неприемлема (все изменения в размерности задачи, например, должны быть обработаны к началу выполнения OnStart). Чтобы избежать возможных сбоев, вставим первой строкой в обработчик OnStart вызов какой-либо функции, приводящей к обработке очередного сообщения из очереди. Например, можно использовать метод класса CWnd

 

SetFocus();

 

Более аккуратный алгоритм запуска решателя состоял бы в отправке некоторого пользовательского сообщения (пусть это будет WM_START_SOLVER) из функции OnStart, которое попадало бы последним в очередь диалогового окна. До обработки данного сообщения система бы гарантированно выполнила все сообщения типа KILLFOCUS, и только после этого решатель бы считал исходные данные для своей работы.

 

Как и ранее, в заголовочном файле решателя заводим глобальную структуру для взаимодействия потоков. Например, так:

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 45; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.006 с.)