Определить по hWnd, диалоговое ли окно

Обсуждения по программированию для ОС Windows безотносительно используемого языка программирования. Windows NT, Win32, Windows API, ядро и драйверы.
Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Определить по hWnd, диалоговое ли окно

Сообщение Space » 25.11.2009 (Ср) 23:20

Как?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Определить по hWnd, диалоговое ли окно

Сообщение Хакер » 25.11.2009 (Ср) 23:38

Смотря что считать диалогом. Если с системной точки зрения, то по классу.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Определить по hWnd, диалоговое ли окно

Сообщение Space » 26.11.2009 (Чт) 1:52


alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Определить по hWnd, диалоговое ли окно

Сообщение alibek » 26.11.2009 (Чт) 2:18

И?

Ищи cancel и default кнопки. Если найдешь, то окно — диалоговое.
Lasciate ogni speranza, voi ch'entrate.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Определить по hWnd, диалоговое ли окно

Сообщение Proxy » 26.11.2009 (Чт) 7:17

Стандартный системный диалог возможно определить | иначе никак
Follow the white rabbit.

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Определить по hWnd, диалоговое ли окно

Сообщение Space » 26.11.2009 (Чт) 14:29

я думал, GetClassName будет возвращать CFileDialog и т.д., по подстроке Dialog определю окно как диалоговое, или докопаюсь до предка CDialog(?). А возвращает ThunderFormDC, ThunderRT6FormDC... :(

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Определить по hWnd, диалоговое ли окно

Сообщение Денис » 26.11.2009 (Чт) 15:01

Space писал(а):я думал, GetClassName будет возвращать CFileDialog и т.д., по подстроке Dialog определю окно как диалоговое, или докопаюсь до предка CDialog(?). А возвращает ThunderFormDC, ThunderRT6FormDC... :(

Каша в голове.
Возможно у меня в голове тоже каша, только иного рода, но я считаю следующее:
Все экранные объекты в Windows это ОКНА. Все окна у которых есть заголовок (неклиентская область), это ДИАЛОГИ. Есть окна без заголовка, это уже панели и контролы и т.д. Стиль границы окна: FixedDialog просто задает нам, что окно будет отвечать принятому для окна-диалога стандартному стилю (тоесть, будет иметь только кнопку закрытия и системное меню).
Если неправ, поправьте меня, кто знает как правильно.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Определить по hWnd, диалоговое ли окно

Сообщение Antonariy » 26.11.2009 (Чт) 15:21

Все окна у которых есть заголовок (неклиентская область), это ДИАЛОГИ.
Диалог — понятие недетерминированное, в общем и целом это окно запроса к пользователю (само название как бы символизирует). Есть у него заголовок или нет — дело десятое.
Лучший способ понять что-то самому — объяснить это другому.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Определить по hWnd, диалоговое ли окно

Сообщение SLIM » 26.11.2009 (Чт) 23:15

Вообще-то диалоги это в основном только MsgBox-ы плюс-минус еще пару, которых сейчас на ум не приходят...
Пишите жизнь на чистовик.....переписать не удастся.....

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Определить по hWnd, диалоговое ли окно

Сообщение iGrok » 26.11.2009 (Чт) 23:24

SLIM писал(а):Вообще-то диалоги это в основном только MsgBox-ы плюс-минус еще пару, которых сейчас на ум не приходят...

Да ладно? Это с чего вдруг? А свойства файла? А разнообразные настроечные окна? А апплеты панели управления? Это всё не диалоги?
label:
cli
jmp label

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Re: Определить по hWnd, диалоговое ли окно

Сообщение Space » 26.11.2009 (Чт) 23:30

э... А как достучаться, например, до строки "CFileDialog"?

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Определить по hWnd, диалоговое ли окно

Сообщение SLIM » 27.11.2009 (Пт) 0:27

iGrok писал(а):Да ладно? Это с чего вдруг? А свойства файла? А разнообразные настроечные окна? А апплеты панели управления? Это всё не диалоги?

Да, но я о тех, которые может вызвать программист. А диалог свойств файла я не слышал что можно как-то вызывать.
А MsgBox можно.

UPD:
Тут главное не перепутать диалоги и диалоговые окна
Пишите жизнь на чистовик.....переписать не удастся.....

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Определить по hWnd, диалоговое ли окно

Сообщение iGrok » 27.11.2009 (Пт) 1:25

Space писал(а):э... А как достучаться, например, до строки "CFileDialog"?

Никак. Это не имя класса окна. Это имя Cpp'шного класса.

SLIM писал(а):Тут главное не перепутать диалоги и диалоговые окна

А с каких пор msgbox перестал быть диалоговым окном?

И что тогда вообще такое "диалог"?
И почему я не могу написать свой диалог "свойства файла"?
label:
cli
jmp label

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Определить по hWnd, диалоговое ли окно

Сообщение Денис » 27.11.2009 (Пт) 8:18

В общем путаница та еще. Трудности перевода. Насколько я понимаю, диалогами является все, что представляет из себя окно, которое мы считаем окном. Понимаете? Окна, которые мы окнами не считаем, диалогами не являются!
Изображение
Например, Окно, которое выводит MsgBox, мы считаем окном, значит это диалог. А кнопка ОК в окне диалога, мы ее считаем кнопкой, а она на самом деле - окно, значит кнопка это не диалог.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16473
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Определить по hWnd, диалоговое ли окно

Сообщение Хакер » 27.11.2009 (Пт) 10:01

я думал, GetClassName будет возвращать CFileDialog и т.д., по подстроке Dialog определю окно как диалоговое, или докопаюсь до предка CDialog(?). А возвращает ThunderFormDC, ThunderRT6FormDC... :(


Ты с ума сошёл? CFileDialog это MFC-шный класс. Это обычный класс, он не имеет никакого отношения к классу окна. А MFC это вообще отдельная тема. Она не относится к VB6 вообще. Не надо читать что попало, не понимая, что это такое.

Денис не прав насчёт своего определение понятия диалог.

Понятие диалог с позиции проектирования UI точнее всего описал Antonariy. Есть ещё понятие диалог с позиции Win API, и оно прекрасно определено. Это целый раздел WinAPI-средств, со своими функциями, со своими правилами, своими принятными механизмами.

Я самым первым сообщением задал вопрос, без ответа на которого продолжать разговор нет смысла. Стоило ли?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Определить по hWnd, диалоговое ли окно

Сообщение Antonariy » 27.11.2009 (Пт) 11:14

Хакер писал(а):своими принятными механизмами
Я правильно ошибку исправил? :))
Лучший способ понять что-то самому — объяснить это другому.


Вернуться в Windows-программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList