![]() |
|
|
![]()
|
|
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Как установить свойство Transparent для Static?
Property Window не помогло. |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 9 Всего: 12 |
А если получить указатель на СStatic и сделать ModifyStyle() и ModifyStyleEx() ?
-------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Вся проблема в том, что я не могу создать эту переменную - указатель на СStatic.
"Cannot add member variable to a control with ID IDC_STATIC" Почему? |
|||
|
||||
| sfdev |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 30.1.2006 Репутация: нет Всего: нет |
Можно попробовать сделать наследника от CStatic, в котором обрабатывать WM_PAINT, а там написать SetBkMode(TRANSPARENT) и рисовать нужный текст. А потом засабкласить твой статик в диалоге.
FROM MSDN: NOTE: Adding a static control in the Visual C++ 6.0 and Visual C++ .NET designers generates a default ID of IDC_STATIC for the control. The Dialog Editor does not permit you to associate a member variable with a control with the ID of IDC_STATIC. Change the ID of the static control in the Properties window to an ID that is defined by your application so that you can add a member variable of type CStatic to the dialog class. |
||||
|
|||||
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Так создал переменную для CStatic - m_static1.
Но вот в OnPaint m_static1.ModifyStyleEx(NULL, WS_EX_TRANSPARENT) возвращает 1. Но никакого эффекта. Неужели нельзя как-то иначе (без субклассинга), с использованием переменной CStatic задать эффект TRANSPARENT? |
|||
|
||||
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Перефразирую вопрос:
субклассировать и т.д. - это можно. Но в смогу ли я в DesignTime на CDialog увидеть CStatic? Очевидно, что нет. Если я не могу видеть CStatic в DesignTime, то я бы просто использовал бы TextOut, задав координаты. Вопрос в том чтобы в DesignTime видеть расположение CStatic на CDialog. А TRANSPARENT можно задать в коде. Интересно, а как это делается на VB 6? Ведь там в DesignTime элементу управления Label (CStatic) уже на форме можно задать свойство TRANSPARENT и оно работает! |
|||
|
||||
| AlexPro |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 9.11.2005 Где: Санкт-Петербург Репутация: 3 Всего: 4 |
Почему нет? Кидаешь Static Text на свой диалог, меняешь его ID на что-нибуть вразумительное (т.к. через IDC_STATIC ты не сможешь пользоваться им в программе), кликаешь по элементу правой кнопкой - выбираешь Add Variable - и используешь как тебе понравится. Последний пункт необязательный - можно получить доступ через GetDlgItem, но так удобнее. Или я чего недопонимаю? |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
IDC_STATIC==0 Всегда Поменяй ID и будет тебе счастье CWnd*static=GetDlgItem(IDC_STATIC1) Добавлено @ 15:36
Помогло, помогло..Ты просто не знаешь, что ты хочешь..Какой ,ты думаешь эффект получить? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
ID для CStatic я поменял (например, IDC_STATIC_1), переменную создал. Не могу просто убрать задний фон у CStatic (т.е. убрать фон у прямоугольника CStatic-а), так чтобы виден был текст CStatic, а между буквами видно, скажем, окно (например, CDialog), на котором оно находится. Это я и называю TRANSPARENT BACKGROUND. Вот этот эффект я и хочу получить (как в VB 6). |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Не получится....
Нужно самому делать руцями.. Читаем мануал- "WS_EX_TRANPARENT это означает создать прозрачное окно, а именно-любые окна ТОГО же уровня,накрываемые этим окном, ПОЛУЧАТ сообщения WM_PAINT в ПЕРВУЮ ОЧЕРЕДЬ-тем самым создавая эффект прозрачности А тебе нужно руками рисовать -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| maq |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Это я и пытался сделать с самого начала... типа (пишу по-памяти):
но опять ничего. (Хотя в VB 6 этот вариант отлично работает! правда для окна пробовал) Потом пытался скопировать фон под CStatic с помощью BltBit из DC окна в DC CStatic. Тоже ничего. |
||||
|
|||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Что тебе конкретно нужно сделать?
Сделать цветной текст на цветном фоне диалога? -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Обычный текст на градиентном фоне окна.
Фон окну я дал, а фон CStatic мешает |
|||
|
||||
| Aveic |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 9.2.2006 Где: Да все мы из одно й ямы Репутация: нет Всего: нет |
я конечно знаю, что все это тема уже надоела, но может maq лучше сделать так. Зачем тебе создавать целый элемент CStatic, в котором ты просто хочешь отобразить текст в фиксированной позиции. Может просто заместить в твоем диалоге функциюю OnPaint() и там в нем нарисовать текст, установим перед этим прозрачность. А?
А... Я незнаю, мож я неправ |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Дык надо проавильный тип статика использовать. В твоем случае подойдет только статитческий текст. Просто в методе ОnPaint() твоего статика нужно отрисовывать с dc.SetBkMode(TRANSPARENT);
-------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |