Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Вниз

Transparent label on WinAPI   Найти похожие ветки 

 
AlexZ   (2004-07-03 19:49) [0]

Добрых суток, мастерам! Возник один вопрос насчёт создания label"a с прозрачным фоном. Уверен на 99,9% - что это не тег, указываемый в стилях (создаю label по CreateWindow).
Намекнул бы кто по этому поводу...


 
Nick Denry ©   (2004-07-04 01:02) [1]

Примерно:

var Label : HWND; TDC : HDC;
....................
TDC := GetDC(Label);
SetBkMode(TDC, TRANSPARENT);
.................
ReleaseDC(TDC);//
или WM_PAINT


 
AlexZ   (2004-07-04 02:25) [2]

Дело в том, что "примерно" - я знаю как, и кручусь возле этих функций, однако написанные мной коды неработают, т.к. проверено на практике. Теоретически, Ваш ответ правильный.
Подсмотрел я FAQ (Q:="Как вывести надпись с прозрачным фоном на Bitmap" - то, что надо!), там на VCL. Переписал на АПИ, запустил - фон прозрачным НЕ становиться.
Решение так и не найдено, но всё равно - спасибо за ответ.


 
Григорьев Антон ©   (2004-07-04 07:12) [3]

Вывести прозрачную надпись на канву и сделать прозрачным окно статитческого текста - принципиально разные задачи. Окно по умолчанию занимает отведённый ему прямоугольник целиком. Чтобы элемент был прозрачным, во-первых, родительское окно не должно иметь стиль WS_CLIPCHILDREN, во-вторых, сам элемент должен поставить пустой обработчик на WM_ERASEBKGND, а то по умолчанию его окно будет закрашиваться при обработке этого сообщения. ИМХО, возиться с этим слишком муторно - я бы просто выводил текст в обработчике WM_PAINT основного окна.


 
Nick Denry ©   (2004-07-04 13:54) [4]

Как альтернатива предложенному уже мной (это не только теория :))
можно обработывать соообщение WM_CTLCOLORSTATIC

   WM_CTLCOLORSTATIC : {Обработка label"s}
     Begin
       SetBkMode(Wparam,TRANSPARENT);
       Result:=GetStockObject(Null_Brush);
        // if (wparam<>0) and (lparam=label6) then
           begin
             SetTextColor(wparam,rgb(0,0,255));
           end;

      End;


Это работает в *любом случае * с окнами класса STATIC. Отнеситесь внимательно к этому :

Return Values

If an application processes this message, the return value is the handle of a brush that Windows uses to paint the background of the static control.


 
AlexZ   (2004-07-05 00:10) [5]

Ок! Спасибо за ответы! Задача решена - тема закрыта :)



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.039 c
1-1091435727
Andrey
2004-08-02 12:35
2004.08.15
Изменений цвета TTreeNode


14-1091173497
Layner
2004-07-30 11:44
2004.08.15
Мышь(оптическая) сама бегает в win2000 :)


1-1091021969
mouse_web
2004-07-28 17:39
2004.08.15
PageControl


9-1083066784
karlsn
2004-04-27 15:53
2004.08.15
Вопрос про OpenGl


3-1090415150
AlexanderSK
2004-07-21 17:05
2004.08.15
Как правильнее использовать транзакции?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский