Змінюй хід війни! Допомагай ЗСУ!

HELP! Нужна срочная помощь по C+ !

🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
Статус: Offline
Реєстрація: 16.04.2009
Повідом.: 76
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #1
HELP!!!!! Нужна срочная помощь по C++ !!!

Задача такова - создать компоненту, наследуясь от BitBtn, ничего в ней не изменять кроме того что надо её перерисовать - вобщем сделать её круглой...
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #2
Это тебе не по С++ а по Сибюлддеру помощь :)
Копать в сторону виндовых регионов: CreateEllipticRgn, SetWindowRgn и т.д.
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #3
Мне бы код...
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #4
Задание както криво звучит. Компонент наследуемый от Bitbtn. Во первых билдер не знаю есть похожая функция на вижуале она называется BitBlt. Думаю она выполняет тоже самое. Как мне кажется здесь нужно создать свой собственный контрол. Есть окна, есть кнопки, а нам нужно создать круглое окно. Берется создается класс который будет создавать круглое окно и рисовать на нем картинку. При вызове нашей функции мы должны создать окно размерами с изображение, наложить на него эллиптический регион ну, а потом нарисовать на нем картинку.
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #5
Во первых билдер не знаю есть похожая функция на вижуале она называется BitBlt. Думаю она выполняет тоже самое.
Идиот. Еще есть созвучные слова "Сартр" и "сортир", "Ван Гог" и "Ван Дамм". Смотри не перепутай.
На вижуале - это круто. Ничего, что это функция из СДК, а не из вижуала?

Как мне кажется здесь нужно создать свой собственный контрол.
Конечено свой! Наследование отменили на прошлой неделе под страхом смертной казни.
Есть окна, есть кнопки...
... а еще есть ничего не понимающие дураки.

ТС, почему бы тебе не взять библиотечку готовых скиновых компонентов? Пусть даже за денежку. Потому как код тоже будет за денежку ;) Кстати, а зачем тебе одна скиновая кнопка? Обычно в бюлдерном скиновом ифейсе скиновые и нескиновые компоненты не дружат между собой...
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #6
BFG-9000, успокойся остряк.
... а еще есть ничего не понимающие дураки.
Мне как-то всеравно кем вы хотите меня выставить. Могу сказать, что похожую кнопку я написал года четыре назад. Причем у нее можно было задавать картинки на разные состояния: нажата, отжата, пришла мышка, ушла мышка. И я действительно создал класс. И этот класс был наследуемый. И я нигде не кричал, что нужно писать класс с нуля. Это вы уже, что-то придумали. Судя по вашей агрессии у вас явно хреновый день. Не портите его другим.
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #7
Мне как-то всеравно кем вы хотите меня выставить.

не обижайся, но BFG-9000 в некоторой степени прав, ты написал фигню, "про класс BitBtn не знаю, но есть похожая функция на вижуале BitBlt" - и я поржал :іржач:
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #8
Ещё раз - нужно просто сделать "копию" BitBtn только круглую, где-то же задаёться форма Rectangle или типа того, где? - Должна быть ф-ция там TCanvas или Paint... я не знаю где именно они находяться (в каком классе)... и не надо писать посмотри там-то - там-то или это за денежку... если кто может помочь помогите пожалуйста.
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #9
Ещё раз - нужно просто сделать "копию" BitBtn только круглую, где-то же задаёться форма Rectangle или типа того, где? - Должна быть ф-ция там TCanvas или Paint... я не знаю где именно они находяться (в каком классе)... и не надо писать посмотри там-то - там-то или это за денежку... если кто может помочь помогите пожалуйста.

Ну так наследуйся от этой BitBtn а в конструкторе делай CreateEllipticRgn а потом SetWindowRegion.
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #10
Под рукой билдера нет, поэтому за точность не ручаюсь, но тебе нужно создать класс, наследуемый от TBitBtn, переопределить его метод Paint (не забыв вызвать унаследованый) и создать круглый регион вызовом CreateEllipticRgn().
Можно обработать событие OnCreate и регион создать в нём.
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #11
Ещё раз - нужно просто сделать "копию" BitBtn только круглую, где-то же задаёться форма Rectangle или типа того, где? - Должна быть ф-ция там TCanvas или Paint...

форма кнопки задается внутрях винды, при создании окна CreateWindow передаются размеры окна, окно будет прямоугольным с указанными размерами. Если тебе нужна своя отрисовка и не прямоугольная форма, то можешь в конструкторе создать REGION нужной формы и установить его окну кнопки с помощью Посилання видалено, этой функции нужно передать хэндл окна кнопки и регион который будет описывать форму окна кнопки. Однако кроме этого нужно еще и написать обработчик WM_PAINT... если нужны всякие там градиенты и т.п. то для непрямоугольных окон это дело непростое.
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #12
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #13
Попробую все варианты, кто может дайте .cpp готовый, просто времени в обрез - ещё аську и p2p надо написать - там пока вообще завал. Заранее спасибо.
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #14
если нужны всякие там градиенты и т.п. то для непрямоугольных окон это дело непростое.
Не бывает "непрямоугольных окон" :) Окно останется прямоугольным и на его DC (ну или канву если так кому-то ближе ;) )можно будет рисовать обычные прямоугольные битмапки и рассчитывать эффекты как на обычном прямоугольнике. Регион определяет исключительно область, которая будет копироваться на "подложку", т.е. на родительскую DC (канву).
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #15
Не бывает "непрямоугольных окон" :) Окно останется прямоугольным и на его DC можно будет рисовать обычные прямоугольные битмапки

ну это как посмотреть, прямоугольной останется память, а вот окно уже будет не прямоугольным :D Собственно говоря, к примеру текстуры в 3D играх всегда квадратные и всегда POT (размер стороны является степенью двойки), правда бывает некоторые видеокарты поддерживают не POT текстуры, но это редко используется (для совместимости). Тем не менее от этого видимое изображение текстуры не обязательно квадратное - квадратное только представление в памяти.

Регион определяет исключительно область, которая будет копироваться на "подложку", т.е. на родительскую DC (канву).

не совсем так, регион также определяет область на которую окно будет реагировать при перемещении и кликах мышью, невидимые участки не получат мышиных месаджей
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #16
помогите кодом, товарищи.
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #17
ну это как посмотреть, прямоугольной останется память, а вот окно уже будет не прямоугольным :D
Давай все-таки придерживаться официальной терминологии, согласно которой окно - это окно, а регион - это всего-лишь область окна:
The SetWindowRgn function sets the window region of a window. The window region determines the area within the window where the system permits drawing. The system does not display any portion of a window that lies outside of the window region

Окно - это и есть объект в памяти, а то что ты видишь на экране - это отрисовка окна по тем или иным правилам. А то по твоей логике если у окна атрибут SW_HIDE - так оно вообще не существует? ;)
просто времени в обрез - ещё аську и p2p надо написать
А гугль тебе точно не надо писать? Смотри, без гугля у тебя не получится полностью поработить интернет :D
Тебе же сказали, про что надо почитать - не ленись, в МСДН есть семплы и вообще там все просто. Учись, студент.
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #18
Создаешь новую компоненту в качестве класса предка = bitbtn, а потом уже юзаешь советы тех, кто выше сказывал.
 
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #19
Давай все-таки придерживаться официальной терминологии, согласно которой окно - это окно, а регион - это всего-лишь область окна:

да, регион это область окна, но с другой стороны на экране окно представляется областью, ограниченной регионом :D В конечном счете для пользователя окно - это область с которой он взаимодействует. С точки зрения системы да, тут нужно говорить с точки зрения официальной терминологии. Но системное окно у приложения может быть одно на все контролы. И тогда два, три и более окон видимых для пользователя самостоятельными сущностями, с точки зрения системы будут представляться как одно окно. :)

А то по твоей логике если у окна атрибут SW_HIDE - так оно вообще не существует? ;)

почему-же не существует, существует, но оно переведено в другое пространство (HIDE), поэтому его не видно :D Это как i=sqrt(-1) - числа вроде как нет, но вычисления с ним производить можно :)
 
Останнє редагування:
  • 🔴 19:58 Повітряна тривога в Харківський районСлідкуйте за подальшими повідомленнями.#Харківський_район
  • #20
А гугль тебе точно не надо писать? Смотри, без гугля у тебя не получится полностью поработить интернет :D

Ну и это еще не всё, для своего гугля неплохо было бы написать еще и свой браузер :)

⚠ Тільки зареєстровані користувачі бачать весь контент та не бачать рекламу.
тут много кнопок готовых видел (правда точно не помню для плюсов или для шарпа). Можешь скачать и посмотреть код, или заюзать сразу
 
Назад
Зверху Знизу