Re[5]: Как из DialogProc проверить, была ли вызвана EndDial
От: Кодёнок  
Дата: 30.09.05 06:04
Оценка: 8 (2)
Здравствуйте, sergmann, Вы писали:

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 других бескровных путей я не нашёл.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.