така, внимателно прочетох описанието на проблема ти.
прави ми впечатление че се опитваш да затвориш прозорец(в случая диалог), когато същия е създал модален диалог. по замисъл на самите модални диалози, това е строго забранено. ако си забелязал, имаш ли активиран модален диалог, прозореца който го е създал не отговаря на съобщения. това е съвсем логично, понеже DoModal не се завръща докато не се затвори, а като не се завръща, значи седиш във функция която е блокирала разноса на съобщенията ти.
внимавай с таймерите и модалните диалози! по някаква странна логика при модален режим всички съобщения се спират, без таймерното. ако отвориш модален диалог във функцията на таймера, това автоматично означава забивка на програмата - екрана почва да се пълни с модални диалози, тъй като както казах таймера е някакво шибано изключение.
в случая смятам че първия ти диалог не се затваря защото има пуснат от него модален диалог. доколкото разбирам искаш при настъпване на стопиращото събитие и двата да изчезнат. предполагам че трябва да дадеш OnOK на двата диалога последователно - първо на втория, после на първия.
а за онова там с проверката на видимост - функцията връща BOOL, не е уместно да сравняваш BOOL със NULL. впрочем и двете са дефинирани като 0, затова така бачка. аз лично не ползвам нито BOOL, нито NULL, ползвам инт, 0, а също и не ползвам сравнение, а директно израза. виждал съм че микрософт ползват 0 вместо NULL в кода си и щом те го правят, значи може
