Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: После какого сообщения у диалога созданы  (Прочитано 10532 раз)
0 Пользователей и 1 Гость смотрят эту тему.
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« : 02-05-2006 08:40 » 

Создал диалог в ресурсах. В программе создаю его через CreateWindow как дочернее окно, но и в OnInitDialog и в OnCreate контролы делага пока еще не созданы, по приходу WM_Paint они уже созданы... А в какой конкретно момент они создаются чтобы я мог допустим поменять их размер?
« Последнее редактирование: 02-05-2006 09:03 от Джон » Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 02-05-2006 09:03 » 

 Покажи как ты это делаешь? В OnInitDialog обычно контроллы уже окна - можно вызывать все оконные ф-ции
 если у тебя не модальный диалог, то ты должен использовать ф-ю CDialog::Create(Id, Parent)
 Если ты используешь CreateWindow(), то в OnCreate твоего диалога ты должен вызывать все Create для каждого контрола, там же и размер задавать


зы Свои сообщения можно редактировать Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #2 : 02-05-2006 09:12 » 

Создаю вот так:

   //Создаем окно
    m_VideoDlg.Create(IDD_VIDEOVIEW_DLG, this);

   //Покажем окно просмотрщика
    m_VideoDlg.ShowWindow(SW_NORMAL);
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 02-05-2006 09:58 » 

Хм странно - всё правильно. И OnInitDialog не вызывается?
Ща попробовал у себя вот лог

Код:
CComStateDlg::OnInitDialog() line 71
AfxDlgProc(HWND__ * 0x0001086e, unsigned int 272, unsigned int 67696, unsigned int 67696) line 35 + 14 bytes
USER32! 77e01ef0()
USER32! 77e1310e()
USER32! 77e1372a()
USER32! 77e03d1e()
USER32! 77e03d9a()
CWnd::DefWindowProcA(unsigned int 272, unsigned int 67696, long 0) line 1011 + 32 bytes
CWnd::Default() line 258
CDialog::HandleInitDialog(unsigned int 67696, unsigned int 67696) line 624 + 8 bytes
CWnd::OnWndMsg(unsigned int 272, unsigned int 67696, long 0, long * 0x008cf0c8) line 1826 + 17 bytes
CWnd::WindowProc(unsigned int 272, unsigned int 67696, long 0) line 1596 + 30 bytes
AfxCallWndProc(CWnd * 0x016c80c8 {CComStateDlg hWnd=???}, HWND__ * 0x0001086e, unsigned int 272, unsigned int 67696, long 0) line 215 + 26 bytes
AfxWndProc(HWND__ * 0x0001086e, unsigned int 272, unsigned int 67696, long 0) line 379
AfxWndProcBase(HWND__ * 0x0001086e, unsigned int 272, unsigned int 67696, long 0) line 220 + 21 bytes
USER32! 77e01ef0()
USER32! 77e03523()
USER32! 77e16f5b()
USER32! 77e17677()
USER32! 77e1477a()
CWnd::CreateDlgIndirect(const DLGTEMPLATE * 0x00484ec0, CWnd * 0x01125d58 {CMainFrame hWnd=???}, HINSTANCE__ * 0x00400000) line 327 + 36 bytes
CDialog::CreateIndirect(const DLGTEMPLATE * 0x00484ec0, CWnd * 0x01125d58 {CMainFrame hWnd=???}, void * 0x00000000, HINSTANCE__ * 0x00400000) line 223
CDialog::CreateIndirect(void * 0x00484ec0, CWnd * 0x01125d58 {CMainFrame hWnd=???}, HINSTANCE__ * 0x00400000) line 200 + 22 bytes
CDialog::Create(const char * 0x0000009b, CWnd * 0x01125d58 {CMainFrame hWnd=???}) line 182 + 20 bytes
CDialog::Create(unsigned int 155, CWnd * 0x01125d58 {CMainFrame hWnd=???}) line 543 + 29 bytes
CComStateDlg::Create() line 65

Те начинается Create и заканчивается OnInitDialog

Вот так я вызываю

Код:
		m_pComStateDlgModeless = new CComStateDlg(this);
if (m_pComStateDlgModeless->Create())
{

}
SetActiveWindow();

Просмотри ещё раз внимательно свой код
« Последнее редактирование: 02-05-2006 10:02 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 02-05-2006 15:13 » 

USBLexus, попробуй через DialogBox(). Не знаю, есть ли такая ф-ия (или метод) в MFC, но в чистом Win32 API это работает.
Код:
....
DialogBox(hThisInst,MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)&DlgProc1);
....
case WM_INITDIALOG:
SendMessage((HWND)GetDlgItem(hwnd,IDC_RADIO2),BM_SETCHECK,BST_CHECKED,0);
....
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #5 : 03-05-2006 02:03 » 

OnInitDialog вызывается, только в нем контролы все еще не созданы их hwnd =NULL
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 03-05-2006 08:20 » 

Что-ты не так делаешь в другом месте. В OnInitDialog - элемены уже окна ВСЕГДА, так же как и основное окно. Кстати что у тебя с хэндлом основного окна?
Последовательность такая: OnInitDialog будет вызыван после Create диалога. В Create диалога должны быть созданы все статические контролы.
Покажи свою Create диалога.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #7 : 03-05-2006 08:46 » 

Джон,
Извини не понял что показать, функцию Create - ч ее не переопределял, стандартная

Если OnCreate

int CVideoDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
//
//Окно создано
//
{
   //Создаем битмап
    CDC* pDC=GetDC();
     m_DibObject.CreateBitmap(pDC, FrameWidth, FrameHeight);
      ReleaseDC(pDC);

   //Изменяем размер окна под картинку
//     CRect SliderRect;
//     m_FrameSlider.GetWindowRect(&SliderRect);
      this->SetWindowPos(NULL, 0, 0, FrameWidth, FrameHeight/*+SliderRect.Height()*/, SWP_NOREPOSITION);

return CDialog::OnCreate(lpCreateStruct);
}
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #8 : 03-05-2006 14:21 » 

Я вот это имел ввиду - где у тебя хранится?
//Создаем окно
    m_VideoDlg.Create(IDD_VIDEOVIEW_DLG, this);

Ок

я тут примерчик накидал - посмотри

В OnInitDialog изменяются размеры кнопки.


* TestModless.zip (20.66 Кб - загружено 826 раз.)
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
USBLexus
Опытный

ru
Offline Offline
Пол: Мужской
Кот рыжий


« Ответ #9 : 04-05-2006 02:40 » 

Исходники посмотрел спасибо! Помогли))
Не знаю почему, но заработало Вчера не работала а сегодня работает Странно все это Хм...
Записан

#define QUESTION(b) (2*b)||(!(2*b)) (c) William Shakespeare
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #10 : 04-05-2006 08:19 » 

Дык не за что.

Вчера не работала а сегодня работает

А это всегда так. Ты не знал? Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines