Форма пропускает клики мыши сквозь себя

Тема в разделе "WASM.WIN32", создана пользователем Cyrus, 29 ноя 2007.

  1. Cyrus

    Cyrus New Member

    Публикаций:
    0
    Регистрация:
    29 ноя 2007
    Сообщения:
    1
    Как сделать чтобы при нажатии кнопки мыши на форме эффект был бы такой же, как если бы формы не было. Т.е. если под текущим окном есть какое-нить окно с кнопкой(или другим объектом) и курсор находится в области этой кнопки, то при нажатии на активной форме нажалась эта кнопка.

    Вот, что я написал:
    Код (Text):
    1. HWND __fastcall GetNextWindowFromPos(HWND handle, LPPOINT Point)
    2. {
    3.   HWND ZHANDLE = handle;
    4.   HWND CHANDLE = NULL;
    5.   tagRECT Rect;
    6. //Поиск окна согласно Z-порядка
    7.   while(ZHANDLE = GetNextWindow(ZHANDLE, GW_HWNDNEXT))
    8.   {
    9. //Проверка попадает ли курсор в область окна
    10.     GetWindowRect(ZHANDLE, &Rect);
    11.     if(IsWindowVisible(ZHANDLE) && (Point->x >= Rect.left) && (Point->x <= Rect.right) && (Point->y >= Rect.top) && (Point->y <= Rect.bottom))
    12.     {
    13. //Поиск дочернего объекта
    14.       while(CHANDLE = FindWindowEx(ZHANDLE, CHANDLE, NULL, NULL))
    15.       {
    16.         GetWindowRect(CHANDLE, &Rect);
    17.         if(IsWindowVisible(ZHANDLE) && (Point->x >= Rect.left) && (Point->x <= Rect.right) && (Point->y >= Rect.top) && (Point->y <= Rect.bottom))
    18.         {
    19.           return CHANDLE;
    20.         }
    21.       }
    22.       return ZHANDLE;
    23.     }
    24.   }
    25.   return 0;
    26. }
    27.  
    28. ...
    29.  
    30. void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
    31.       TShiftState Shift, int X, int Y)
    32. {
    33.   tagPOINT pos;
    34.   HWND TargetWindow;
    35.  
    36.   GetCursorPos(&pos);
    37.   if(TargetWindow = GetNextWindowFromPos(Handle, &pos))
    38.   {
    39.     SendMessage(TargetWindow, WM_LBUTTONDOWN, MK_LBUTTON, (pos.y << 16) | pos.x);
    40.   }
    41. }
    Но ни какой реакции от других окон.
     
  2. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы