Автор
|
Тема: Окно инструментов как в Photohop-е
|
Sancho |
опубликован 24-05-2001 21:19 MSK
Доброго всем времени суток! Есть один вопросик: как я в своем приложении могу создать окно инструментов наподобии Фотошоповского окнаинструментов (ну то, в котором кисточки лассо и т. д.) Очень надобно! Проект горит!!! Ответы можно присылать по почте: 21sancho@mail.ru Язык: C++ | VisualC++. Заранее благодарен за ответы!
|
Demo_S
|
опубликован 24-05-2001 22:58 MSK
а в чем собственно говоря трудность заключается? |
Sancho
|
опубликован 25-05-2001 08:39 MSK
2 Demo_s! Трудность вот в чем! Создаю я окно с помощью CreateWindowEx, устанавливая при этом соответствующие стили и свойства окна (WS_EX_TOOLWINDOW, WS_CAPTION, WS_POPUP и некоторые другие). Но! В момент запуска приложения окно инструментов активно, а главное окно - НЕАКТИВНО (т. е. его CAPTION перекрашивается в другой цвет). При передаче фокуса главному окну обратная картина: инструменты неактивны, а главное - активно. Ео ведь в Шопе и главное окно и окно инструментов и другие плавающие окна с закладками ВСЕГДА АКТИВНЫ!!! Как это сделать я не знаю! Вот и прошу помощи! |
Jimmy
|
опубликован 25-05-2001 09:34 MSK
А там по-моему бычный CWnd, нарисованный "под" окно. А перетаскивание и кнопки заголовком реализ. с пом. обработки соотв событий. |
Jimmy
|
опубликован 25-05-2001 09:37 MSK
... и кнопки заголовкоВ... I'm sorry |
OlegN
|
опубликован 25-05-2001 00:50 MSK
В пакете VC++ 6.0 есть неплохая утилита Spy++ Я ее часто использую когда нужно подшпионить за удачными окнами в других программах. Делаю приболизительно так. Получаю все стили нужного окна и его Parent-a, просматриваю сообщения, и т.д. Так что пошпионь за фотошопом, может что и нашпионишь. |
Sancho
|
опубликован 27-05-2001 10:20 MSK
2 OlegN! Запробовал я эту утилитку (Spy++). Штуковина хорошая. Но! Применение стилей, показанных ею для окон фотошопа, такого результата не дало! :(( Тут что-то другое...2 Jimmy! Поясни, плз, что есть CWnd и с чем его едят. (Перекопал помощь по АПИ - нашел очень мало информации и практически ничего не понял) Спасибо всем за ответы! |
Jimmy
|
опубликован 27-05-2001 18:14 MSK
http://www.msdn.microsoft.com/library/default.asp?ShowPane=false&URL=/library/devprods/vs6/visualc/vcmfc/_mfc_cwnd.htmВ двух словах: CWnd - класс, "стоящий у истоков" CFrameWnd, CView, CDialog и многих других мфсишных классов. Объектом данного класса является просто прямоугольный кусок экрана с контекстом. Т.е. можно рисовать. Ну и естественно отлавливать события разные (напр. "мышиные"). Таким образом средствами данного класса можно "нарисовать" фрейм самому и реализовать различные перетаскивания, сворачивания-разворачивания т.д. Возможно так заделано в фотошопе. Вот. |
kiborg
|
опубликован 04-06-2001 05:47 MSK
На самом деле нужно отслеживать сообщение WM_ACTIVATE и при любом флаге активности делать заголовок активным.//------------------------------------------ case WM_ACTIVATE : SendMessage(hwnd,WM_NCACTIVATE,(WPARAM)TRUE,0L); return 0;
|