powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / почему не работает IsKindOf ?
10 сообщений из 10, страница 1 из 1
почему не работает IsKindOf ?
    #32144456
vavania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
void SetButtonDesabled(CWnd* oWin)
{
CWnd* pwndChild = oWin->GetWindow(GW_CHILD);
while (pwndChild)
{
if (pwndChild->IsKindOf(RUNTIME_CLASS( CButton )))
pwndChild->EnableWindow(false);

pwndChild = pwndChild->GetNextWindow();
}

}
...
Рейтинг: 0 / 0
почему не работает IsKindOf ?
    #32144946
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что GetWindow возвращает указатель на CTempWnd , которое наверняка не от CObject . Последующее преобразование указателья на другой тип для IsKindOf не имеет значения. От этого объект не меняеться.
Так что именно IsKindOf и правильно работает.
А насчет GetWindow и в MSDN написанно , что возвращает временный указатель. ( Я думаю здесь и кроеться все )
...
Рейтинг: 0 / 0
почему не работает IsKindOf ?
    #32145130
vavania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но существует ли тогда возможность определения control's class без включения механизма DDX_Control - влом переменные прописывать...
...
Рейтинг: 0 / 0
почему не работает IsKindOf ?
    #32145224
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если тебе нужно решить конкретную задачу , например , перевести кнопки в disable. то достаточно запомнить их идентификаторы, и через
GetDlgItem( ID_) получить указатели на кнопки и делать нужное .
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
void SetButtonDesabled(int nParentID) 
{ 
for( int i =  0 ; i<nCountOfChild;i++)
 {
  CButton* pChildBtn = ( CButton* )GetDlgItem( Array_(nParentID,i) ); 
  pChildBtn ->EnableWindow(false); 
  } 
}
...
Рейтинг: 0 / 0
почему не работает IsKindOf ?
    #32145268
vavania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нарисовал кучу dialog'ов-братьев для TabCtrl'ов , на каждом, сам понимашь туча edit'ов, button'ов и т.п. и т.д. Ну и теперь в зависимости от "внешних условий" надо менять их состояние. вот и решил написать типа универсальную функцию - и ну никак...Неужели великий и могучий не позволяет этого ?! Просто сюр какой-то.
...
Рейтинг: 0 / 0
почему не работает IsKindOf ?
    #32145403
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конечно позволяет ! Создать класс с аналогичной функцией возвращающий имя класса. И новые классы порождать от своего тоже. И все как было !
...
Рейтинг: 0 / 0
почему не работает IsKindOf ?
    #32145416
vavania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
почему не работает IsKindOf ?
    #32145841
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да вот еще что !
Если Вы для каждой кнопки создадите member control( Class Wizard это очень красиво позволяет ) то ввиду того , что соответствующие объект уже будет существовать, то написанный вами код будет нормально функционировать !
...
Рейтинг: 0 / 0
почему не работает IsKindOf ?
    #32145891
vavania
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прописывать все переменные, которые мне в-общем-то не нужны, как-то...неправильно. Все-таки что-то я не догоняю. Очевидно, что во время исполнения классы известны, но без дополнительных ухищрений узнать их никак нельзя. Несправедливо это.
...
Рейтинг: 0 / 0
почему не работает IsKindOf ?
    #32145996
YuriAM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не все, а только те, которые будешь анализировать. Это намного проще !
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / почему не работает IsKindOf ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]