PAINTCTRUCT.rcPaint is empty ?! -- STD because !!!
- From
- Leonid Epifantcev (2:5005/5.44)
- To
- Boris Rudakov ()
- Date
- 1996-06-24T11:04Z
- Area
- SU.WINDOWS.PROG
Привет уважаемый Boris!
Однажды, 20 Jun 96 15:01, Boris Rudakov писал в направлении All:
BR> Найдена ошибка была методеом исключения. Не работает функция
BR> InvalidateRect. Я пришел к выводу, что она несрабатывает если явно
BR> задан прямоугольник обновления. Тогда я начал удивляться, и перенес ее
BR> вызов выше по тексту. Сработало. Тогда я стал опускать ее к прежней
BR> позиции, до тех пор, пока она опять не переатала работать. Между
BR> последней строкой, где она работала, и этим местом был только один
BR> вызов моей функции. Функция ассемберная, и несколько месяцев нареканий
BR> не вызывала. Я полез в ее текст. Глазу было не за что уцепиться -
BR> текст чуть более экрана, и вообще говоря, сперт мной из Борландовского
BR> TV. Единственное, что привлекло мое внимание после пары минут его
BR> разглядывания, была инструкция STD. Я, чисто проформы ради, при выхоле
BR> из функции, влепил CLD. И запустил. Когда я увидел, что все
BR> заработало, дыхание у меня перхватило, а мир начал рушиться. Я полез в
BR> дебаггер и начал трассировать InvalidateRect. Мои самые черные и
BR> мрачные подозрения подтвердились: при анализе прямоугольника
BR> обновления (буде он есть) они, ничтоже сумняшися, считывают его
BR> вершины через LODSW, ДАЖЕ НЕ ПОДУМАВ сделать CLD !!!! Нет, я так и
BR> знал, так и знал... какая еще ошибка может быть сделана при STD ?!
А как настчет неявного соглашения? По моему это нормально. апример в любом компилере (точнее библиотеках) есть правили сбросить этот флаг при инициализации библиотеки и дальше предпологать что он не меняется. Более того это и на производительности скажется. Т.к. прежде чем сбросить флаг надо запомнить его состояние и восстановить после работы :(.
BR> Самое смешное, что в паре мест у Борланда, я видел, как они аккуратно
BR> восстанавливают CLD, я еще подумал "зачем ?!". А затем, что кое-кому в
^^^^^^^^^^^^^^^^^^^ - правильно делают...
BR> Мелкософте надо руки повыдирать и в одно место засунуть :( Я, вообще
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - не надо :).
BR> то, отношусь к почитателям Мелкософта, но еще пара таких
BR> "прикольчиков"...
Просто рассматривай API Windows как большую библиотеку Ж8)))).
BR> Boris Rudakov, И конечно тут же я понравился бы всем,
С наилучшими пожеланиями, Leonid
--- GEcho 1.20/Pro
* Origin: Поручик! Молчать!!! (2:5005/5.44)