Показать сообщение отдельно
Старый 30.03.2007, 10:33   #20  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Он сохраняет послеждний формран (вернее, ObjectIndent), причем в данном конкретном случае наблюдается состояние, когда формрун не null, но при этом любое обращение к нему ведет к крешу.

Обращение нужно для проверки того, что формран не перестал быть активным. Это проверяется сравнением HWND формрана и верхнего окна. Соответстенно при получении HWND вормрана оно рушилось. Исправление. Стал хранить HWND формрана в отдельной перменной и сравнивать ее:
X++:
                    if(infolog.setLastActivatedForm())
                        activeFormRun=infolog.parmLastActivatedForm().object();
                    if(activeFormRun && activeFormRun.hWnd()==topmost)
                    {
                        #log('ObjectIdent')
                        currentFormRun=new ObjectIdent(activeFormRun);
                        currentFormRun_hwnd = topmost;
                        #log('/ObjectIdent')
                    }
                    else
                    {
                        #log('this.currentFormRun')
                        fr = this.currentFormRun();
                        if(fr)
                        {
                            // раньше было fr.hwnd != hwnd
                            if(hwnd!=currentFormRun_hwnd)
                            {
                                currentFormRun=null;
                                currentFormRun_hwnd = 0;
                            }
                            #log('/this.currentFormRun().hWnd()')
                        }
                        #log('/this.currentFormRun')
                    }