Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с окнами 
:(
    Опции темы
EyeLESS
  Дата 20.12.2006, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 19.12.2006

Репутация: нет
Всего: нет



Народ, у меня в программе два окна, после работы одного,я вызываю второе, но оно не появляется!
Вроде код нормальный, если менять местами диалоги, то будет вызываться то первое, то второе, то есть сами по себе они нормально фурычат, но вот друг за другом - никак! В чем проблема???



Код

BOOL CSockets_ClientApp::InitInstance()
{
    if (!AfxSocketInit())
    {
        AfxMessageBox(IDP_SOCKETS_INIT_FAILED);
        return FALSE;
    }

    AfxEnableControlContainer();

#ifdef _AFXDLL
    Enable3dControls();            
#else
    Enable3dControlsStatic();    
#endif

    CChatDlg dlgChat;
    CSockets_ClientDlg dlg;
    m_pMainWnd = &dlgChat;
    int nResponse = dlgChat.DoModal();
    if (nResponse == IDOK)
    {
        
        dlg.DestroyWindow();
        m_pMainWnd = &dlg;
        nResponse = dlg.DoModal();
        if (nResponse == IDOK)
        {
        }
        else if (nResponse == IDCANCEL)
        {
        }
    }
    else if (nResponse == IDCANCEL)
    {
        
    }

    return FALSE;
}

PM MAIL   Вверх
Greeen
Дата 20.12.2006, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 10
Всего: 18



Наверное ты ошибся здесь
Код
dlg.DestroyWindow();

Поменяй на
Код
dlgChat.DestroyWindow();



--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
EyeLESS
Дата 20.12.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 19.12.2006

Репутация: нет
Всего: нет



не...эт я просто туда-сюда гонял то одно окно, то другое, ошибка не здесь! Причем, блин, когда одно окно уничтожается, второе появляется на долю секунды, а потом исчезает!

PM MAIL   Вверх
Earnest
Дата 20.12.2006, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Тем не менее, это тоже ошибка: ну как может появится окно, которое только что разрушено?
И вообще, не надо вызывать DestroyWindow - после завершения модального цикла окно и так разрушено, без твоего участия.


--------------------
...
PM   Вверх
EyeLESS
Дата 20.12.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 19.12.2006

Репутация: нет
Всего: нет



я же еще раз говорю, что просто немного не тот кусок кода, в оригинале этой ошибки нет, просто не глядя копи-пастнул.К тому же дестроится еще не вызванное окно, соответственно, когда оно вызывается , оно уже как новенькое. И еще раз говорю, оно появляется на секунду, но потом исчезает, я не могу понять, в чем проблема=(((
PM MAIL   Вверх
Earnest
Дата 20.12.2006, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



Так покажи реальный код, который есть. 
Возможно, папой у него является бывшее главное окно (предыдущий диалог), вот оно и закрывается, вслед за папой.


--------------------
...
PM   Вверх
EyeLESS
Дата 20.12.2006, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 19.12.2006

Репутация: нет
Всего: нет



нашел проблему... все дерьмо было в строчке m_pMainWnd = &dlgChat....правда, я все равно не пойму, почему. smile

Добавлено @ 15:15 
Вот так работает

Код

    CChatDlg dlgChat;
    CSockets_ClientDlg dlg;
    
//    m_pMainWnd = &dlg;
    int nResponse = dlg.DoModal();
    if (nResponse == IDOK)
    {
        
//        m_pMainWnd = &dlgChat;
        nResponse = dlgChat.DoModal();
        if (nResponse == IDOK)
        {
        }
        else if (nResponse == IDCANCEL)
        {
        }
    }
    else if (nResponse == IDCANCEL)
    {
        
    }


Вот так - нет!!!
Код

    CChatDlg dlgChat;
    CSockets_ClientDlg dlg;
    
    m_pMainWnd = &dlg;
    int nResponse = dlg.DoModal();
    if (nResponse == IDOK)
    {
        
        m_pMainWnd = &dlgChat;
        nResponse = dlgChat.DoModal();
        if (nResponse == IDOK)
        {
        }
        else if (nResponse == IDCANCEL)
        {
        }
    }
    else if (nResponse == IDCANCEL)
    {
        
    }


Почему так, пока не могу понять.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0519 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.