Поиск:

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


Шустрый
*


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

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



Цитата(borisbn @  10.5.2011,  09:25 Найти цитируемый пост)
А зачем ? У TForm есть практически все нужные event'ы 


Мне кажется, что гораздо удобнее все нужные евенты описать в одном месте, чем для каждого писать свои процедуры.

1) Так работает (показывает в фрейме на форме):

Код

     TFrame * frame = new TFrame(TForm1->Frame21);
      frame->Parent = TForm1->Frame21;
      HWND ghWnd = frame->Handle;


2) Так открывается в новом окне:

Код

      TForm * frame = new TForm(TForm1->Frame21);
      frame->Parent = TForm1->Frame21;
      HWND ghWnd = frame->Handle;


3) Так выдает ошибку Access violation:

Код

    HWND ghWnd = Frame2->Handle;    // Frame2 просто добавлена в проект


По сути вопрос закрыт, осталось только понять как msg обрабатывать.

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


Эксперт
****


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

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



Цитата(Riviero @  10.5.2011,  14:13 Найти цитируемый пост)
2) Так открывается в новом окне:

хммм. не понятно. должно быть также как с frame. где-то у меня был проект, где одна форма лежала на другой. щаз поищу

Цитата(Riviero @  10.5.2011,  14:13 Найти цитируемый пост)
3) Так выдает ошибку Access violation:

это-то, как раз, понятно. 
Цитата(Riviero @  10.5.2011,  14:13 Найти цитируемый пост)
// Frame2 просто добавлена в проект

не Frame2, а TFrame2 добавлен, т.е. добавлен тип, а вот объект этого типа никто не создаёт, Frame2 указывает либо на мусор, либо на 0 (что, в общем-то, тоже мусор)

Цитата(Riviero @  10.5.2011,  14:13 Найти цитируемый пост)
 осталось только понять как msg обрабатывать.

посмотри TApplication::OnMessage

 smile 
Я тут тебе пытаюсь помочь, а ты цены сбиваешь  smile 



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


Шустрый
*


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

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



Цитата(borisbn @  10.5.2011,  14:31 Найти цитируемый пост)
посмотри TApplication::OnMessage


Не догнал я что-то как этим пользоваться...

Нашел такую тему.

SetClassLong Function

Replaces the specified 32-bit (long) value at the specified offset into the extra class memory or the WNDCLASSEX structure for the class to which the specified window belongs. 

Пишу 

Код

    LRESULT CALLBACK MainWndProc (HWND, UINT, WPARAM, LPARAM); 

    ghWnd = frame->Handle;
    SetClassLong(ghWnd, GCL_WNDPROC, (WNDPROC)MainWndProc);


Выдает ошибку : [BCC32 Error] Unit1.cpp(1928): E2034 Cannot convert 'long (__stdcall *)(void *,unsigned int,unsigned int,long)' to 'long'
PM MAIL   Вверх
borisbn
Дата 11.5.2011, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Riviero @  11.5.2011,  14:53 Найти цитируемый пост)
Не догнал я что-то как этим пользоваться...

забей. Только сейчас вспомнил попроще:
Цитата

typedef void __fastcall (__closure *TWndMethod)(Messages::TMessage &Message);

__property TWndMethod WindowProc = {read=FWindowProc, write=FWindowProc};


пишешь так:
Код

// h-файл
TWndMethod oldWndMethod;
void __fastcall WindowProcFunc( Messages::TMessage &Message );
// cpp-файл
void __fastcall TForm1::TForm1()
{
    oldWndMethod = WindowProc;
    WindowProc = WindowProcFunc;
}

void __fastcall TForm1::WindowProcFunc( Messages::TMessage &Message )
{
    switch ( Message.Msg )
    {
        case ...... : Message.WParam ... Message.LParam ...
        break;
    }
    oldWndMethod( Message );
}



Цитата(Riviero @  11.5.2011,  14:53 Найти цитируемый пост)
Нашел такую тему.SetClassLong Function

зачем тебе "голое" WinAPI. Пользуешь дебилдер - юзай по-полной...


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


Шустрый
*


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

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



Все получилось, спасибо!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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