Конференция "WinAPI" » А какое сообщение возникает когда...
 
  • pushkin42 © (07.11.08 12:28) [0]
    происходит перемещение или изменение размера TPanel на форме?

    Т.е.: Есть форма, на ней лежат 2 панельки, надо отловить момент, когда первая панелька станет Visible=False и сделать действие над второй панелькой.

    Вопрос в том, какое сообщение получают контролы при таком событии? WM_PAINT и WM_SIZE пробовал; WM_PAINT отрабатывается только если форму заставить перерисоваться командой Repaint или что-то над ней пронести, чтобы она сама перерисовалась. Перерыл все сообщения - вышло так: форма получает сообщения 45131 и 33 (что они значат - я не нашел), но при этом если повесить обработчик на любое из них, он не срабатывает.
  • clickmaker © (07.11.08 12:45) [1]
    WM_SHOWWINDOW, WM_SIZE
  • pushkin42 © (07.11.08 12:47) [2]
    Не помогло.
  • pushkin42 © (07.11.08 12:52) [3]
    WM_WINDOWPOSCHANGING помогло вроде, но как мне получить Handle элемента, который был изменен? В какой переменной типа Msg: TMessage содержится это значение?
  • Сергей М. © (07.11.08 12:57) [4]
    Ну тогда тряси бубен.

    Ибо справка неумолимо твердит, что

    The WM_SHOWWINDOW message is sent to a window when the window is about to be hidden or shown
  • clickmaker © (07.11.08 12:59) [5]
    WM_WINDOWPOSCHANGING у формы?
  • pushkin42 © (07.11.08 13:02) [6]
    var TMyForm=class(TForm
    [...]
     protected
       procedure AlertVisibility(var msg: TMessage); message WM_WINDOWPOSCHANGING;
    [...]
    end;

    вот как-то так

    Видимо WM_SHOWWINDOW обрабатывается только для формы, а не для контролов на ней...
  • clickmaker © (07.11.08 13:06) [7]
    > Видимо WM_SHOWWINDOW обрабатывается только для формы, а
    > не для контролов на ней...

    а как ты пробовал для контролов?
  • Сергей М. © (07.11.08 13:13) [8]

    > WM_SHOWWINDOW обрабатывается только для формы, а не для
    > контролов на ней


    Кому послано, тот и обрабатывает.
    С какого перепугу оно будет послано форме, если ее видимость изменилась ?
    Изменилась ведь видимость окна панели, а не окна формы ..
  • Сергей М. © (07.11.08 13:14) [9]

    > если ее видимость изменилась


    если ее видимость не изменилась
  • DVM © (07.11.08 21:22) [10]

    > pushkin42 ©   (07.11.08 13:02) [6]

    вспоминается анекдот про мужика который потерял в одном месте ключи, а искал их в другом месте под фонарем, т.к. там светлее.

    Панель - это окно и сообщения приходят ей, а не тому окну-форме, на которой она(панель) лежит. Вот и лови их в оконной процедуре панели, а не формы.
 
Конференция "WinAPI" » А какое сообщение возникает когда...
Есть новые Нет новых   [134435   +33][b:0][p:0]