Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с запуском диалога

318
11 июня 2007 года
nof
193 / / 03.04.2006
Народ, есть программа MFC под MSVC 2005.
В ней у меня есть некоторый класс с диалогом, но когда я его инициализирую и вызываю через DoModal(), он блокирует выполнение программы в целом. То есть главное окно перестаёт перерисовываться (там стоит моя обработка WM_PAINT), обрабатывать нажатия клавиш, мыши и тд.
Ну тот же эффект, как если MessageBox вызвать.
Не можете подсказать, как сделать чтобы вывзываемый диалог не блокировал исполнение программы?
538
11 июня 2007 года
AVDEY
188 / / 17.11.2005
Ты вызываешь модальний диалог, который блокирует все сообщения главного окна пока не закроется модальное окно.
Создай немодальний диалог

//CNoModalDlg - клас твоего диалога
CNoModalDlg *m_NoModalDlg;
//Выделяешь память
m_NoModalDlg = new CNoModalDlg;
//Создаешь
m_NoModalDlg->Create(UINT nIDTemplate, CWnd* pParentWnd = NULL );
//nIDTemplate - идентификатор ресурса диалога.
/*pParentWnd - указатель на объект родителя или владельца,
которому принадлежит объект диалога. Если он равен NULL,
то родительским окном является основное окно приложения.
*/
m_NoModalDlg->Create(IDD_NO_MODAL_DLG,NULL );
//И показываем на экран.
m_NoModalDlg->ShowWindow(SW_SHOW);
//Когда надо закрыть диалог с главного окна вызываем
m_NoModalDlg->DestroyWindow();
//И когда надо уничтожаем
delete m_NoModalDlg; m_NoModalDlg=NULL;
318
12 июня 2007 года
nof
193 / / 03.04.2006
Огромное спасибо!
Это то, что надо.
318
12 июня 2007 года
nof
193 / / 03.04.2006
Цитата: AVDEY
Ты вызываешь модальний диалог, который блокирует все сообщения главного окна пока не закроется модальное окно.
Создай немодальний диалог


В догонку, у меня ещё одна проблема из этой же серии. Главное окно приложения имеет таб, в котором 6 вкладок (ну то есть 6 отдельных диалогов). Инициализирую каждый из них вот так:

Код:
TC_ITEM TabItem;
    TabItem.mask = TCIF_TEXT;
    TabItem.pszText = "Чат";
    m_TabCtrl.InsertItem(0, &TabItem );

................
    CPage1* pPage1;

    pPage1 = new CPage1;
    TabItem.mask = TCIF_PARAM;
    TabItem.lParam = (LPARAM)pPage1;
    m_TabCtrl.SetItem(0, &TabItem);
    VERIFY(pPage1->Create(CPage1::IDD, &m_TabCtrl));
    pPage1->SetWindowPos(NULL, 2, 42, 0, 0, SWP_NOSIZE | SWP_NOZORDER);
    pPage1->ShowWindow(SW_SHOW);


Так вот, когда, например, прокручиваю скрол в edit box'е любого из этих табов, перерисовка главного диалога опять же прекращается :(
Есть идеи как это исправить?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог