Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.15;
Скачать: CL | DM;

Вниз

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 вся ветка

Текущий архив: 2004.08.15;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.057 c
14-1090905985
Кириешки
2004-07-27 09:26
2004.08.15
Я знаю что на этот вопрос Вы нормально не ответите, но все же:


11-1078154025
ctapik
2004-03-01 18:13
2004.08.15
Занимаемая память программы (Task manager)


3-1089884745
bon
2004-07-15 13:45
2004.08.15
TDBGridEh


6-1087218878
andrey__
2004-06-14 17:14
2004.08.15
RasApi - запуск удал. подключ. из TServiceApplication


1-1091013467
Балкон
2004-07-28 15:17
2004.08.15
QuickReport и константы qrdMetafile qrdPrinter