![]() |
|
![]() ![]() ![]() |
|
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: 1 Всего: 0 |
Добрый день.
есть диалог, созданный через Create. Как получить его ресурсное ID, имея указатель на него типа CDialog*? Спасибо Это сообщение отредактировал(а) deniska - 18.1.2010, 12:57 |
|||
|
||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: нет Всего: 10 |
GetDlgCtrlID
-------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 12 Всего: 26 |
Если окно не со стилем WS_CHILD ничего не выйдет
-------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: 1 Всего: 0 |
так и есть. забыл сразу написать что GetDlgCtrlID пробовал. возвращает 0. Это сообщение отредактировал(а) deniska - 19.1.2010, 13:09 |
|||
|
||||
BorisVorontsov |
|
|||
![]() Thinker ![]() ![]() Профиль Группа: Комодератор Сообщений: 714 Регистрация: 3.11.2005 Где: Молдавия, г. Киши нёв Репутация: нет Всего: 10 |
Аналог GetWindowLong GWL_ID
Надо было сразу написать, что диалог top-level Это сообщение отредактировал(а) BorisVorontsov - 19.1.2010, 17:03 -------------------- [code=cpp] const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out); for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl; [/code] |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
А здесь не ид-р шаблона диалога подразумевается? -------------------- ... |
|||
|
||||
deniska |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 1.7.2005 Где: Троицк Репутация: 1 Всего: 0 |
Есть диалог, набросаный в студийном редакторе ресурсов с неким идентификатором IDD_MYDIALOG. вот этот IDD_MYDIALOG мне и нужно получить в RunTime, имея указатель на созданый диалог типа CDialog*. Этот диалог top-most. Вот надеюсь теперь нормально обьяснил ))). ПС. GetWindowLong тоже 0 возвращает. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Я так и думала. У CDialog есть переменная класса m_lpszTemplateName; вот она и хранит этот IDD, если конечно диалог создавался именно по шаблону. В принципе, это указатель на строку, где может храниться имя диалогового ресурса либо номер - если
HIWORD (m_lpszTemplateName) == 0. Проблема в том, что переменная эта protected, так что просто из диалога ее не извлечь. Поэтому 2 варианта: 1) Если предполагается делать свой класс - наследник диалога, то просто пишем соответствующий метод. 2) Если надо извлекать из любых CDialog, то поступаем примерно так:
-------------------- ... |
|||
|
||||
SwallowSPB |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 10.7.2008 Где: Питер Репутация: нет Всего: нет |
Единственное, что приходит в голову поискать в ресурсах с помощью EnumResourceNames.
А так, диалог создается из ресурса с указанным ID. Потом ID выбрасывается. Поэтому принято его сохранять в классе, унаследованном от CDialog, в виде enum{IDD=ID_MYDIALOG};, чтобы потом использовать как ID либо CMyDialog::IDD. Больше ничего в голову не приходит. :( |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
И что там искать? Никуда он не выбрасывается. См. мой предыдущий пост. -------------------- ... |
|||
|
||||
SwallowSPB |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 10.7.2008 Где: Питер Репутация: нет Всего: нет |
Предполагал найти имена ресурсов-диалогов, передав в качестве типа RT_DIALOG. Если диалог в ресурсах один (как я понял), то найдено будет одно имя, соответствующее искомому диалогу.
Но может я и ошибаюсь. Надо будет попробовать. А раз есть m_lpszTemplateName, то проще им и воспользоваться, как справедливо указано ранее. Это сообщение отредактировал(а) SwallowSPB - 20.1.2010, 21:40 |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |