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)