Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прозрачный для мыши контрол 
:(
    Опции темы
Superklug
Дата 1.6.2009, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Доброго времени суток!
Появилась такая задача: необходимо сделать контрол (в моем случае TImage) прозрачным для действий мыши. Т.е. чтобы все клики на этом контроле посылались окну, которое под моим приложением (оно имеет стиль StayOnTop).
Для формы можно просто установить стиль WS_EX_TRANSPARENT, а как сделать это не для всего окна, а для отдельного контрола?
PM MAIL   Вверх
Superklug
Дата 2.6.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Пока только так:
Код

void __fastcall TfmMain::NewImageWndProc(TMessage &Message)
{

    if((Message.Msg>=WM_MOUSEFIRST)&&(Message.Msg<=WM_MOUSELAST))
    {
        TPoint p1,p2;
        p1.x=Message.LParamLo;
        p1.y=Message.LParamHi;
        p2.x=p1.x+Image->Left+fmMain->ClientOrigin.x-fmMain->Left;
        p2.y=p1.y+Image->Top+fmMain->ClientOrigin.y-fmMain->Top;
        HRGN ClientRgn = CreateRectRgn(0,0,fmMain->Width,fmMain->Height);
        HRGN PixelRgn = CreateRectRgn(p2.x,p2.y,p2.x+1,p2.y+1);
        CombineRgn(ClientRgn,ClientRgn,PixelRgn,RGN_DIFF);
        SetWindowRgn(Handle,ClientRgn,True);
        SendMessage(WindowFromPoint(p1),Message.Msg,Message.WParam,Message.LParam);
        DeleteObject(ClientRgn);
        DeleteObject(PixelRgn);
    }
    else
        OldImageWndProc(Message);
}


Работает вроде. Но во-первых меняется внешний вид окна. Во-вторых этот выколотый пиксель видно иногда бывает...

Если кто-то знает как определить какое окно в данный момент находится за моим окном в точке, куда указывает курсор, подскажите... 
 smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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