Кто нибудь знает корректные пути повторить следующую функциональность?
Требуется — в "ручную" отключить command routing для активного MDI child окна,
и сделать его заголовок серым.
Такая функциональность есть например в Visual Basic 6 или Interdev.
Когда пользоватьель щелкает по toolbar с properties активное MDI child окно становится неактивным.
Сейчас я сделал крайне криво — создается невидимый MDI child фрейм и если control на toolbar получает фокус, то сначала он активирует это окно, а затем
опять себя.
Есть крайне неприятный минус в этом решении — При maximized MDI окнах получение фокуса контрола на toolbar все их опять каскадирует, и это естественно потому как у fake MDI фрейма стиль WS_OVERLAPPED. Да и двойной приход к контролу WM_SETFOCUS (второй раз сам себе) череват проблемами.
Вообще хотелось бы избавиться от этого окна... но работа с MDI это всего менее десятка messages из Winuser.h.. других средств я не знаю.
Может есть какие нибудь идеи по этому поводу (я уж не говорю про решения, хоть натолкнете меня на мысль какую)?
Здравствуйте dandreev, Вы писали:
D>Кто нибудь знает корректные пути повторить следующую функциональность?
D>Требуется — в "ручную" отключить command routing для активного MDI child окна, D>и сделать его заголовок серым.
Собсна про команд рутинг всё написано в MSDN в одноимённой статье.
Серый заголовок -- имхо взять да деактивировать фрэйм.
D>Такая функциональность есть например в Visual Basic 6 или Interdev. D>Когда пользоватьель щелкает по toolbar с properties активное MDI child окно становится неактивным.
D>Сейчас я сделал крайне криво — создается невидимый MDI child фрейм и если control на toolbar получает фокус, то сначала он активирует это окно, а затем D>опять себя. D>Есть крайне неприятный минус в этом решении — При maximized MDI окнах получение фокуса контрола на toolbar все их опять каскадирует, и это естественно потому как у fake MDI фрейма стиль WS_OVERLAPPED. Да и двойной приход к контролу WM_SETFOCUS (второй раз сам себе) череват проблемами.
Приход можно отследить.
D>Вообще хотелось бы избавиться от этого окна... но работа с MDI это всего менее десятка messages из Winuser.h.. других средств я не знаю.
D>Может есть какие нибудь идеи по этому поводу (я уж не говорю про решения, хоть натолкнете меня на мысль какую)?
Кста, о птицах. А почему бы не рисовать заголовок окна вручную?
Я это к чему. Ни слова не нашёл в MSDN про деактивирование mdi окна.