Автор
|
Тема: Спрятать диалог ?
|
MatrixST |
опубликован 31-01-2002 18:22 MSK
Как можно инициализировать диалог чтобы его небыло видно но он постоянно выполнялся пока не будет подана какаято команда ?
|
Muran
|
опубликован 31-01-2002 20:36 MSK
dlg.ShowWindow(SW_HIDE); |
MatrixST
|
опубликован 01-02-2002 18:54 MSK
Muran - к диалогу такая штука не рименяется !Dialog1 dlg; dlg.DoModal(); Как тут можно сделать диалог не видимым ! Чтобы он даже не появился ?
|
reporter
|
опубликован 01-02-2002 22:56 MSK
На хрена тебе тогда диалог, если он и показываться не будет. Запускай отдельный поток, там делай все свои вычисления... |
Muran
|
опубликован 02-02-2002 12:49 MSK
2MatrixST не правда, можно сделать так: Dialog1 dlg; dlg.Create(IDD_DIALOG1,this); dlg.ShowWindow(SW_HIDE); и всё. Диалог создасться и начнет работать, но его не будет видно. Не веришь, попробуй. |
Muran
|
опубликован 02-02-2002 12:53 MSK
IDD_DIALOG1 - это ID диалога. Должен существовать. |
DmitryRyvkin
|
опубликован 02-02-2002 03:28 MSK
И когда ж он по вашему закончит свое существование ? При разрушении стека при выходе их ф-ции ? Если немодальный он ? Вобщем, скажите, вы именно так пробовали ? И получилось ? |
Muran
|
опубликован 02-02-2002 12:38 MSK
2DmitryRyvkin: да, я так пробовал, диалог завершает свою работу когда закрывается главное окно, или по вызову CDialog::OnOk(), OnCancel(); |
MatrixST
|
опубликован 02-02-2002 12:48 MSK
2Muran При компиляции выдает такую ошибку : error C2664: 'int __thiscall CDialog::Create(const char *,class CWnd *)' : cannot convert parameter 1 from 'const int' to 'const char *' 2reporter : А диалог мне нужен для того чтобы на него компонент прицепить, чтобы он все время работал !
|
Muran
|
опубликован 02-02-2002 15:38 MSK
2MatrixST: Ты глючиш. Привожу код, который у меня компилится и работает как надо:dlg.Create (IDD_DIALOG1,this); dlg.ShowWindow (SW_HIDE); Создается в функции InitDialog главного диалога, но можно вставить куда угодно. IDD_DIALOG1 - это ID диалога в ресурс-вьювере. this - ну это наверное понятно что. Create имеет 3 определения, одно из которых - вышепреведенное. Если не получается, то могу выслать готовую прогу. |
Muran
|
опубликован 02-02-2002 15:40 MSK
2MatrixST: а какой у тебя компилятор? Я пишу под VC++ 6.0 SP2 |
MatrixST
|
опубликован 02-02-2002 20:57 MSK
2Muran ;) Мне ужо стыдно ! Елементарная задача, но не получается ! Может гдето я и сплужил, с кем не бывает :)Если могешь вышли исходник проги на st-matrix@mail.ru Заранее спасибо |
Student
|
опубликован 02-02-2002 23:00 MSK
По-моему, все очень просто: создаем диалог с родителем==NULL и выносим его за пределы экрана. Вызываем ShowModal(), но в самом диалоге запрещаем выход по ESC и т.д. |
ADK
|
опубликован 04-02-2002 06:07 MSK
CDialog::Create у меня используется почти во всех программах. Тот же механизм немодальных применяю на API. Всё работает!!! Если главное окно, не забудь запустить цикл сообщений в InitInstance - Run() |
dvorobjov
|
опубликован 09-02-2002 23:01 MSK
Замени dlg.Create(IDD_DIALOG1,this); на dlg.Create(MAKEINTRESOURCE(IDD_DIALOG1),this); |
Moroz
|
опубликован 12-02-2002 19:40 MSK
сть два варианта: 1. HideApplication(); 2. В OnPaint() нафигачить что-то вроде if(flag) ShowWindow(SW_HIDE) else ShowWindow(SW_SHOW)Ну или нечто подобное. |
ADK
|
опубликован 13-02-2002 06:13 MSK
Решение №2 заведомо кривое |
al
|
опубликован 13-02-2002 13:53 MSK
Решение элементарно - надо убрать диалог с экрана? Так убери (пеемести) его за пределы экрана - об этом уже говорил Student |
Drugan
|
опубликован 13-02-2002 13:57 MSK
Когда я писал троян, мне тоже нужно было спрятать диалог (и с экрана и из ситрея и т.д.), так вот, с экрана я его убирал так:mydlg.ShowWindow(SW_HIDE); И все работает! Muran прав! ;(onflict |