Подскажите неразумному, а лучше пример дайте, как сделать Modeless dialog главным окном приложения и/или подскажите, как скрыть при запуске модальное окно(DoModal), чтоб не моргало(я смог добиться только того, что у меня окно прорисовывается и сразу исчезает)...
Пришлите, пожалуйста, примерчик, если есть на maxb@newmail.ru
Здравствуйте megadoZ, 20.04.2001 08:15:10 вы писали:
>Подскажите неразумному, а лучше пример дайте, как сделать Modeless dialog главным окном приложения и/или подскажите, как скрыть при запуске модальное окно(DoModal), чтоб не моргало(я смог добиться только того, что у меня окно прорисовывается и сразу исчезает)... > >Пришлите, пожалуйста, примерчик, если есть на maxb@newmail.ru
Просто создаёшь диалог через Create (а не DoModal), затем записываешь адрес объекта класса диалога в переменную CWinApp::m_pMainWnd и возвращаешь из InitInstance TRUE.
Чтобы завершить приложение, пошли PostQuitMessage(0) из обработчика WM_DESTROY или WM_CLOSE или ещё откуда-нибудь.
А в остальном всё более и менее как обычно.
С уважением,
Александр
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Здравствуйте rudankort, 21.04.2001 00:38:47 вы писали:
>Просто создаёшь диалог через Create (а не DoModal), затем записываешь адрес объекта класса диалога в переменную CWinApp::m_pMainWnd и возвращаешь из InitInstance TRUE.
CMainDlg dlg;
m_pMainWnd = &dlg;
dlg.Create(CMainDlg::IDD);
return TRUE;
Я сделал вот так и у меня диалог появляется на секунду и исчезает(приложение закрывается). В чём моя ошибка? > >С уважением, >Александр > >
Здравствуйте megadoZ, 20.04.2001 08:15:10 вы писали:
>Подскажите неразумному, а лучше пример дайте, как сделать Modeless dialog главным окном приложения и/или подскажите, как скрыть при запуске модальное окно(DoModal), чтоб не моргало(я смог добиться только того, что у меня окно прорисовывается и сразу исчезает)... > >Пришлите, пожалуйста, примерчик, если есть на maxb@newmail.ru
Можно и над модальным диалогом извратиться — добавь в свой класс диалога
функцию DoModal(), перепиши в нее содержимое CDialog::DoModal() из исходников MFC —
(dlgcore.cpp), найди в этой функции строки
// enter modal loop
DWORD dwFlags = MLF_SHOWONIDLE;
и своем классе замени их на
// enter modal loop
DWORD dwFlags = 0; // MLF_SHOWONIDLE;
Здравствуйте Odissey, 23.04.2001 01:55:27 вы писали:
>Можно и над модальным диалогом извратиться — добавь в свой класс диалога >функцию DoModal(), перепиши в нее содержимое CDialog::DoModal() из исходников MFC — >(dlgcore.cpp), найди в этой функции строки > > // enter modal loop > DWORD dwFlags = MLF_SHOWONIDLE; > >и своем классе замени их на > > // enter modal loop > DWORD dwFlags = 0; // MLF_SHOWONIDLE; > >мелькать не будет :)
А что делать с этими функциями, он на них ругается, а ещё на DELETE_EXEPTION
void AFXAPI AfxHookWindowCreate(CWnd* pWnd);
BOOL AFXAPI AfxUnhookWindowCreate();
Помогите!!! Ну чайник я, чайник....
Здравствуйте megadoZ, 23.04.2001 00:28:26 вы писали:
>Здравствуйте rudankort, 21.04.2001 00:38:47 вы писали: > >>Просто создаёшь диалог через Create (а не DoModal), затем записываешь адрес объекта класса диалога в переменную CWinApp::m_pMainWnd и возвращаешь из InitInstance TRUE. > > CMainDlg dlg; > m_pMainWnd = &dlg; > dlg.Create(CMainDlg::IDD); > return TRUE; >Я сделал вот так и у меня диалог появляется на секунду и исчезает(приложение закрывается). В чём моя ошибка?
Ошибка в том, что ты объявил диалог локально. На выходе из функции деструктор его убивает. :( Добавь объект диалога в класс приложения или сделай его статическим/глобальным.
С уважением,
Александр
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Здравствуйте megadoZ, 23.04.2001 05:09:02 вы писали:
>Здравствуйте Odissey, 23.04.2001 01:55:27 вы писали: > > >>Можно и над модальным диалогом извратиться — добавь в свой класс диалога >>функцию DoModal(), перепиши в нее содержимое CDialog::DoModal() из исходников MFC — >>(dlgcore.cpp), найди в этой функции строки >> >> // enter modal loop >> DWORD dwFlags = MLF_SHOWONIDLE; >> >>и своем классе замени их на >> >> // enter modal loop >> DWORD dwFlags = 0; // MLF_SHOWONIDLE; >> >>мелькать не будет :) > >А что делать с этими функциями,
он на них ругается, а ещё на DELETE_EXEPTION >void AFXAPI AfxHookWindowCreate(CWnd* pWnd); >BOOL AFXAPI AfxUnhookWindowCreate(); >Помогите!!! Ну чайник я, чайник.... >
вставь в .cpp перед своей DoModal() строку
#define DELETE_EXCEPTION(e) do { e->Delete(); } while (0)
если еще ругательства останутся, приведи их полоностью, я эту штуку давненько проделывал, суть помню, а детали мог подзабыть. Но тот проект у меня компилируется и
работает нормально.
Здравствуйте TriDeMAX, Вы писали:
TDMAX>Доброго дня!
TDMAX>Кто-нибудь задавался целью вести учет сетевого и интернет траффика на отдельном интерфейсе? TDMAX>Вопрос возник потому, что стандартные функции API возвращают лишь статистику по интерфейсу которую невозможно разделить на интернет траффик и сетевой траффик. А задача стоит так: если пользователь в офисе пытается скачать больше, чем ему положено в день, то интернет мы ему обрубаем. При этом хотелось бы обойтись без прокси серверов и всего такого, т.к. у народа прямые адреса и они им нужны. TDMAX>Может где-то есть статистика по маршрутизированным пакетам?
TDMAX>Заранее благодарен, TDMAX>Максим
А операционку поменять? Unix|Lynux поставить?
там как раз это и обсуждается — и с конкретным примером.
Osco do Casco
Re[4]: Modeless Main Dialog
От:
Аноним
Дата:
08.08.03 07:16
Оценка:
Здравствуйте, rudankort, Вы писали:
R>Здравствуйте megadoZ, 23.04.2001 00:28:26 вы писали:
>>Здравствуйте rudankort, 21.04.2001 00:38:47 вы писали: >> >>>Просто создаёшь диалог через Create (а не DoModal), затем записываешь адрес объекта класса диалога в переменную CWinApp::m_pMainWnd и возвращаешь из InitInstance TRUE. >> >> CMainDlg dlg; >> m_pMainWnd = &dlg; >> dlg.Create(CMainDlg::IDD); >> return TRUE; >>Я сделал вот так и у меня диалог появляется на секунду и исчезает(приложение закрывается). В чём моя ошибка?
R>Ошибка в том, что ты объявил диалог локально. На выходе из функции деструктор его убивает. Добавь объект диалога в класс приложения или сделай его статическим/глобальным.
Народ, подскажите, у меня такая же проблема, и я не догоняю, что может быть не так. Вроде сделал диалог глобальным (точнее он таковым был), но не помогает. Что подскажите?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, rudankort, Вы писали:
R>>Здравствуйте megadoZ, 23.04.2001 00:28:26 вы писали:
>>>Здравствуйте rudankort, 21.04.2001 00:38:47 вы писали: >>> >>>>Просто создаёшь диалог через Create (а не DoModal), затем записываешь адрес объекта класса диалога в переменную CWinApp::m_pMainWnd и возвращаешь из InitInstance TRUE. >>> >>> CMainDlg dlg; >>> m_pMainWnd = &dlg; >>> dlg.Create(CMainDlg::IDD); >>> return TRUE; >>>Я сделал вот так и у меня диалог появляется на секунду и исчезает(приложение закрывается). В чём моя ошибка?
R>>Ошибка в том, что ты объявил диалог локально. На выходе из функции деструктор его убивает. Добавь объект диалога в класс приложения или сделай его статическим/глобальным.
А>Народ, подскажите, у меня такая же проблема, и я не догоняю, что может быть не так. Вроде сделал диалог глобальным (точнее он таковым был), но не помогает. Что подскажите?
Проверь, что возвращаешь в InitInstance... должно быть return TRUE;