Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамические окно в frame 
V
    Опции темы
Riviero
Дата 25.4.2011, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 25.3.2010

Репутация: 2
Всего: 3



1)Как запихнуть динамически создаваемое окно в frame на форме?

2)Обязательно ли оно должно быть типа TFrame?

Это сообщение отредактировал(а) Riviero - 25.4.2011, 10:51
PM MAIL   Вверх
borisbn
Дата 25.4.2011, 14:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Цитата(Riviero @  25.4.2011,  10:50 Найти цитируемый пост)
1)Как запихнуть динамически создаваемое окно в frame на форме?

Код

TForm * form = new TForm();
form->Parent = frame_or_other_control_that_will_contain_a_form;
form->Align = alClient; // это чтоб окно заполнило всего парента


Цитата(Riviero @  25.4.2011,  10:50 Найти цитируемый пост)
2)Обязательно ли оно должно быть типа TFrame?

см. п 1) smile


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Riviero
Дата 26.4.2011, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 25.3.2010

Репутация: 2
Всего: 3



А как может быть компонент на форме Parent-ом?
PM MAIL   Вверх
borisbn
Дата 26.4.2011, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Parent-ом может быть любой класс, наследованный от TWinControl. Хоть TButton. В него можно положить любой компонент, наследованный от TControl, в том числе и TForm


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Riviero
Дата 26.4.2011, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 25.3.2010

Репутация: 2
Всего: 3



Получается, если я создаю окно через CreateWindow() параметр Parent я указываю Frame->Handle?

PM MAIL   Вверх
borisbn
Дата 26.4.2011, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Цитата(Riviero @  26.4.2011,  14:07 Найти цитируемый пост)
Получается, если я создаю окно через CreateWindow() параметр Parent я указываю Frame->Handle?

 smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Riviero
Дата 28.4.2011, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 25.3.2010

Репутация: 2
Всего: 3



Пишу 
Код

     HWND Parent = Form1->Frame21->Handle;


Выдает ошибку. Access violation.
PM MAIL   Вверх
Riviero
Дата 6.5.2011, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 25.3.2010

Репутация: 2
Всего: 3



Все еще нужна помощь.
Суть проблемы: я создаю окно для рисования в нем, но нужно как-то его поместить на уже готовую форму.
PM MAIL   Вверх
borisbn
Дата 6.5.2011, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Цитата(Riviero @  6.5.2011,  10:25 Найти цитируемый пост)
 создаю окно для рисования в нем, но нужно как-то его поместить на уже готовую форму.


Цитата(borisbn @  25.4.2011,  14:54 Найти цитируемый пост)

TForm * form = new TForm();
form->Parent = frame_or_other_control_that_will_contain_a_form;


чем не устраивает ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Riviero
Дата 6.5.2011, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 25.3.2010

Репутация: 2
Всего: 3



Я винапи, конечно, не очень силен...
Код

    WNDCLASS   wndclass;
    HINSTANCE hInstance;
    int nCmdShow = 1;
    HWND Parent1 = NULL;//(HWND)Form1->Frame21->Handle ;
    CHAR *appName = szAppName.c_str();
    /* Register the frame class */
    wndclass.style         = 0;
    wndclass.lpfnWndProc   = (WNDPROC)MainWndProc;
    wndclass.cbClsExtra    = 0;
    wndclass.cbWndExtra    = 0;
    wndclass.hInstance     = hInstance;
    wndclass.hIcon         = LoadIcon (hInstance, Application->Name.c_str());
    wndclass.hCursor       = LoadCursor (NULL,IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW+5);
    wndclass.lpszMenuName  = appName;
    wndclass.lpszClassName = appName;

    if (!RegisterClass (&wndclass) )
    {
      return FALSE;
    }
    /* Create the frame */
    ghWnd = CreateWindow (appName,
             appName,
         WS_OVERLAPPEDWINDOW | WS_VSCROLL,
             CW_USEDEFAULT,
             CW_USEDEFAULT,
             WIDTH,
             HEIGHT,
             Parent1,
             NULL,
             hInstance,
             NULL);


Делается вот так.

Цитата(borisbn @  6.5.2011,  13:37 Найти цитируемый пост)
TForm * form = new TForm();
form->Parent = frame_or_other_control_that_will_contain_a_form;



Цитата(Riviero @  28.4.2011,  14:44 Найти цитируемый пост)
код C++ Builder
1:
     HWND Parent = Form1->Frame21->Handle;


Выдает ошибку. Access violation. 

PM MAIL   Вверх
borisbn
Дата 6.5.2011, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Цитата(Riviero @  6.5.2011,  14:11 Найти цитируемый пост)

HWND Parent = Form1->Frame21->Handle;
Выдает ошибку. Access violation.

1. Если ты используешь VCL, то зачем тебе HWND ?
2. Form1 уже создан, когда эта строчка вызывается ? Чему он равен ? А чему равен Form1->Frame21 ?
3. Пробовал так
Код

TForm * form = new TForm();
form->Parent = Form1->Frame21;

?

Добавлено через 1 минуту и 2 секунды
только щаз дошло
Цитата(Riviero @  6.5.2011,  10:25 Найти цитируемый пост)
я создаю окно для рисования в нем

окно не VCL-ное ? WinAPI-шное, штоле ?



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Riviero
Дата 6.5.2011, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 25.3.2010

Репутация: 2
Всего: 3



Цитата(borisbn @  6.5.2011,  14:15 Найти цитируемый пост)
окно не VCL-ное ? WinAPI-шное, штоле ?


да, апишное.
Цитата(borisbn @  6.5.2011,  14:15 Найти цитируемый пост)
код C++ Builder
1:
2:
TForm * form = new TForm();
form->Parent = Form1->Frame21;



Если бы я знал как после этого в openGl там рисовать...

PM MAIL   Вверх
borisbn
Дата 7.5.2011, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Цитата(Riviero @  6.5.2011,  14:25 Найти цитируемый пост)
Если бы я знал как после этого в openGl там рисовать...

в OpenGl ты передаёшь HWND. Для этого у TForm усть TFrom::Handle типа HWND.
т.е. вместо
Код

HWND wnd = CreateWindow(...);
glFunction( wnd );

используй Handle
Код

TForm * form = new TForm();
form->Parent = Form1->Frame21;
glFunction( form->Handle );



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Riviero
Дата 10.5.2011, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 136
Регистрация: 25.3.2010

Репутация: 2
Всего: 3



А как мне тогда к WNDPROC подобраться?
PM MAIL   Вверх
borisbn
Дата 10.5.2011, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Цитата(Riviero @  10.5.2011,  09:22 Найти цитируемый пост)
А как мне тогда к WNDPROC подобраться?

А зачем ? У TForm есть практически все нужные event'ы


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0551 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.