![]() |
|
|
![]()
|
|
| 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);
-------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Coocky,
, т.е. создать класс производный от CStatic и использовать его? Ты это имел ввиду? |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Дело в том, что статиков-3 вида.
Один из них-статический текст. Кидаешь этот элемент на диалог...Даешь ему ID- к примеру MyStatic. Далее делаешь, как я писал-свой класс, производный от CStatic- CMySuperStatic ,ну и рисуешь в нем в OnPaint-код тебе дал.. Затем включаешь описание заголовка своего статика в класс диалога. Обьявляешь переменую в хедере класса диалога CMySuperStatic stat; Затем в void ТвойДиалог::DoDataExchange(CDataExchange* pDX) пишешь DDX_Control(pDX,MyStatiс, stat); Все -работаешь, как с обьектом. При изменении текста, можешь делать stat.SetWindowText("Hello"); stat.Invalidate(); -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Coocky, не понял, какие 3 вида. Я использовал контрол "Static Text" из тулбокса (VS .NET 2005) |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Правильно.. Еще есть GroupBox, Picture Control -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Coocky, а если я допустим создам класс производный от CStatic смогу ли я разместить (и видеть) его на диалоговом окне в DesignTime?
|
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Извини, но я незнаю, что такое DesignTime -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
DesignTime (стадия разработки, дизайна) - т.е. когда ты просматриваешь проект, можешь добавить или удалить контролы и т.д. Короче, если проект не запущен (т.е. не нажата кнопка "Run"!)
RunTime (стадия запуска) - т.е. когда ты запустил проект (т.е. после того как нажата кнопка "Run"!) |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Буду знать
Ну давно уже написал -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Но если я создам свой класс CMyStatic, и кину "CStatic" контрол на диалаговое окно, то у меня в коде это, естественно, будет класс CStatic, а не CMyStatic. Верно?
|
|||
|
||||
| Coocky |
|
||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
-------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||
|
|||||
| maq |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 28.10.2005 Репутация: нет Всего: нет |
Coocky, спасибо!
Все получилось... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |