СообЧа > База Знаний > Программирование > C, С++

Вопрос

Как я могу динамически изменить переключатель «Disabled» у статического текста?

Ответ

Если я правильно понял вопрос, тебе требуется изменять состояние статического текста (disabled/enabled) во время выполнения программы. Для этой цели используется функция ::EnableWindow (или CWnd::EnableWindow в MFC), которая работат как для статических элементов, так и для любых других типов окон. Единственное важное замечание: по умолчанию статическому элементу присваивается идентификатор IDC_STATIC, который равен -1. Этот идентификатор не годится для работы со статическим элементом, и его необходимо заменить на любой другой.
Допустим, ты назначил своему тексту идентификатор IDC_STATIC_TEXT. Тогда используй ::EnableWindow(::GetDlgItem(hParentWnd, IDC_STATIC_TEXT), FALSE); чтобы "задизаблить" текст и ::EnableWindow(::GetDlgItem(hParentWnd, IDC_STATIC_TEXT), TRUE); чтобы "раздизаблить" его (hParentWnd — дескриптор окна, в котором размещTн текст).
Если ты пишешь под MFC, того же эффекта можно добиться, используя в одном из методов класса окна, содержащего текст, вызовы: GetDlgItem(IDC_TXT)->EnableWindow(FALSE); GetDlgItem(IDC_TXT)->EnableWindow(TRUE); Можно также связать со статическим окном переменную типа CStatic — тогда вызов GetDlgItem не потребуется.
За дополнительной информацией можно обратиться к MSDN. См. EnableWindow, CWnd::EnableWIndow, GetDlgItem, CWnd::GetDlgItem, а также статью Q108896 из базы знаний, в которой описывается решение твоей проблемы.

Александр



Copyright © 2000-2004 Сообщество Чайников
Контактная информация