Modeless Main Dialog
От: megadoZ  
Дата: 20.04.01 14:15
Оценка:
Подскажите неразумному, а лучше пример дайте, как сделать Modeless dialog главным окном приложения и/или подскажите, как скрыть при запуске модальное окно(DoModal), чтоб не моргало(я смог добиться только того, что у меня окно прорисовывается и сразу исчезает)...

Пришлите, пожалуйста, примерчик, если есть на maxb@newmail.ru
Re: Modeless Main Dialog
От: rudankort Россия RSDN.ru
Дата: 21.04.01 06:38
Оценка:
Здравствуйте 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 или ещё откуда-нибудь.

А в остальном всё более и менее как обычно.


С уважением,
Александр
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re[2]: Modeless Main Dialog
От: megadoZ  
Дата: 23.04.01 06:28
Оценка:
Здравствуйте 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;
Я сделал вот так и у меня диалог появляется на секунду и исчезает(приложение закрывается). В чём моя ошибка?
>
>С уважением,
>Александр
>
>
Re: Modeless Main Dialog
От: Odissey Россия http://malgarr.blogspot.com/
Дата: 23.04.01 07:55
Оценка: 6 (1)
Здравствуйте 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;

мелькать не будет :)
Re[2]: Modeless Main Dialog
От: megadoZ  
Дата: 23.04.01 11:09
Оценка:
Здравствуйте 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();
Помогите!!! Ну чайник я, чайник....
Re[3]: Modeless Main Dialog
От: rudankort Россия RSDN.ru
Дата: 23.04.01 13:28
Оценка:
Здравствуйте 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;
>Я сделал вот так и у меня диалог появляется на секунду и исчезает(приложение закрывается). В чём моя ошибка?

Ошибка в том, что ты объявил диалог локально. На выходе из функции деструктор его убивает. :( Добавь объект диалога в класс приложения или сделай его статическим/глобальным.


С уважением,
Александр
--
Я думал, ты огромный страшный Бажище,
А ты недоучка, крохотный Бажик...
Re[4]: Modeless Main Dialog
От: megadoZ  
Дата: 23.04.01 13:43
Оценка:
Спасибо
Re[3]: Modeless Main Dialog
От: Odissey Россия http://malgarr.blogspot.com/
Дата: 24.04.01 03:02
Оценка:
Здравствуйте 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)

если еще ругательства останутся, приведи их полоностью, я эту штуку давненько проделывал, суть помню, а детали мог подзабыть. Но тот проект у меня компилируется и
работает нормально.
Re[4]: Modeless Main Dialog
От: megadoZ  
Дата: 24.04.01 09:39
Оценка:
Спасибо
Re[4]: Мониторинг сетевого подключения.
От: Аноним  
Дата: 07.05.02 05:42
Оценка:
Здравствуйте TriDeMAX, Вы писали:

TDMAX>Доброго дня!


TDMAX>Кто-нибудь задавался целью вести учет сетевого и интернет траффика на отдельном интерфейсе?

TDMAX>Вопрос возник потому, что стандартные функции API возвращают лишь статистику по интерфейсу которую невозможно разделить на интернет траффик и сетевой траффик. А задача стоит так: если пользователь в офисе пытается скачать больше, чем ему положено в день, то интернет мы ему обрубаем. При этом хотелось бы обойтись без прокси серверов и всего такого, т.к. у народа прямые адреса и они им нужны.
TDMAX>Может где-то есть статистика по маршрутизированным пакетам?

TDMAX>Заранее благодарен,

TDMAX>Максим
А операционку поменять? Unix|Lynux поставить?
Re: Modeless Main Dialog
От: Osco Португалия http://progs.biz
Дата: 07.05.02 09:06
Оценка:
Здравствуйте megadoZ, Вы писали:

Z>Подскажите неразумному, а лучше пример дайте, как сделать Modeless dialog главным окном приложения


Вот ссылка:

http://progs.biz/vc/mfc/lessons/022.shtml

там как раз это и обсуждается — и с конкретным примером.
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>Ошибка в том, что ты объявил диалог локально. На выходе из функции деструктор его убивает. Добавь объект диалога в класс приложения или сделай его статическим/глобальным.


Народ, подскажите, у меня такая же проблема, и я не догоняю, что может быть не так. Вроде сделал диалог глобальным (точнее он таковым был), но не помогает. Что подскажите?
Re[5]: Modeless Main Dialog
От: megadoZ  
Дата: 08.08.03 07:20
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, 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;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.