Re[6]: Как из DialogProc проверить, была ли вызвана EndDial
От: sergmann  
Дата: 30.09.05 07:40
Оценка:
Здравствуйте, Кодёнок, Вы писали:

S>>К сожалению, этот флаг, видимо, является недокументированной особенностью, и его проверка действительно является хаком.


Кё>Документировано — никак Если тебе нужно недокументированное знание, то DM_GETDEFID в случае установленного флага завершения всегда возвращает ноль. Это найдено в исходниках w2k. Можешь проверить для остальных систем, и если тоже справедливо — используй на свой страх и риск у меня это работает на xp sp2 (даже если нет кнопок в диалоге вообще) Т.е. если не был вызван EndDialog, то DM_GETDEFID всегда возвращает не ноль (а именно — DC_HASDEFID + единица, т.е. IDOK)


Кё>
Кё>        case DM_GETDEFID:
Кё>            pwndT1 = GetParentDialog(pwnd);

Кё>            if (!PDLG(pwndT1)->fEnd && PDLG(pwndT1)->result)
Кё>                return(MAKELONG(PDLG(pwndT1)->result, DC_HASDEFID));
Кё>            else
Кё>                return 0;
Кё>            break;
Кё>


Кё>Кроме DM_GETDEFID других бескровных путей я не нашёл.


Большое спасибо! Обязательно попробую!
Serg
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.