Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.07.2009, 22:11   #11
jungle
Пользователь
 
Аватар для jungle
 
Регистрация: 22.11.2008
Сообщений: 65
По умолчанию

Тогда что можно сделать белым цветом через SetTextColor?
jungle вне форума Ответить с цитированием
Старый 25.07.2009, 22:14   #12
0nni
Форумчанин
 
Аватар для 0nni
 
Регистрация: 24.07.2008
Сообщений: 279
По умолчанию

нет, Static "узнает" цвет использую GetSysColor(COLOR_BTNTEXT); и делает его цветом текста, каждый раз при выводе текста, и больше ничего ни у кого не "спрашивает".
Сказал и загрустил от бесспорности своей правоты.
0nni вне форума Ответить с цитированием
Старый 25.07.2009, 22:17   #13
0nni
Форумчанин
 
Аватар для 0nni
 
Регистрация: 24.07.2008
Сообщений: 279
По умолчанию

Цитата:
Сообщение от jungle Посмотреть сообщение
Тогда что можно сделать белым цветом через SetTextColor?
Текущий цвет текста на контексте, но для этого ты должен сам рисовать содержимое Static.
Сказал и загрустил от бесспорности своей правоты.
0nni вне форума Ответить с цитированием
Старый 25.07.2009, 22:33   #14
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Есть сообщение WM_CTLCOLORSTATIC, но:

Цитата:
The WM_CTLCOLORSTATIC message is never sent between threads; it is sent only within the same thread.
Поэтому, если вы рисуете "где-то там", то может лучше просто через HDC? Если это ваш поток, то придется обрабатывать сообщение и переопределять кисть.
BaronTreep вне форума Ответить с цитированием
Старый 26.07.2009, 01:58   #15
jungle
Пользователь
 
Аватар для jungle
 
Регистрация: 22.11.2008
Сообщений: 65
По умолчанию

Не могу понять где ошибка! Компилируется, но ничего не происходит:

Код:
var  
  Wnd: HWND;                                   //дескриптор формы
  dc : HDC;
  fnt, oldFnt : HFONT;
  lf : TLogFont;
...................................................................
  // Создание окна:
  Wnd:= CreateWindowEx (0, WndClass, WndCaption, WS_SYSMENU or WS_MINIMIZEBOX,
                          450, 250, 146, 340, 0, MainMenu, hInstance, nil);

...................................................................

dc := GetDC(Wnd);                               //получаем контекст окна
lf.lfHeight := -20;
lf.lfWidth := 0;
lf.lfEscapement := 0;
lf.lfOrientation := 0;
lf.lfWeight := 400;
lf.lfItalic := 0;
lf.lfUnderline := 0;
lf.lfStrikeOut := 0;
lf.lfCharSet := RUSSIAN_CHARSET;
lf.lfOutPrecision := 0;
lf.lfClipPrecision := 0;
lf.lfQuality := ANTIALIASED_QUALITY;
lf.lfFaceName := 'Arial';
fnt := CreateFontIndirect(lf);                   //создаем шрифт

oldFnt := SelectObject(dc, fnt);               //выбираем шрифт в контекст
 
SetBkMode(dc, TRANSPARENT);	       //делаем фон под буквами прозрачным
SetTextColor(dc,RGB(80,220,100));           // установка цвета текста
TextOut(dc, 10, 10, 'Привет ВСЕМ', 11); //печатаем строку

SelectObject(dc, oldFnt);		       //возвращаем в контекст старый шрифт
ReleaseDC(wnd, dc);		       //освобождаем контекст
Если сделать так:

Код:
dc := GetDC(0);
то текст появляется, но как сделать на форме?

Последний раз редактировалось jungle; 26.07.2009 в 02:07.
jungle вне форума Ответить с цитированием
Старый 26.07.2009, 08:24   #16
0nni
Форумчанин
 
Аватар для 0nni
 
Регистрация: 24.07.2008
Сообщений: 279
По умолчанию

Ты когда нибудь рисовал через GDI? видимо нет.
BaronTreep, же дал правильное решение. В оконной процедуре сделай обработку WM_CTLCOLORSTATIC:
Код:
WM_CTLCOLORSTATIC :
  begin
    SetTextColor(WParam, $ff00ff); //Цвет текста
    DeleteObject(SelectObject(WParam, GetSysColorBrush(COLOR_BTNFACE))); //залвка
    SetBkMode(WParam, TRANSPARENT); //прозрачная заливка для текста
  end; { WM_CTLCOLORSTATIC }
Только не забудь static создать.
Сказал и загрустил от бесспорности своей правоты.

Последний раз редактировалось 0nni; 26.07.2009 в 08:50.
0nni вне форума Ответить с цитированием
Старый 20.09.2009, 23:22   #17
jungle
Пользователь
 
Аватар для jungle
 
Регистрация: 22.11.2008
Сообщений: 65
По умолчанию

WM_CTLCOLORST

Последний раз редактировалось jungle; 21.09.2009 в 17:20.
jungle вне форума Ответить с цитированием
Старый 21.09.2009, 00:38   #18
jungle
Пользователь
 
Аватар для jungle
 
Регистрация: 22.11.2008
Сообщений: 65
По умолчанию

Код:
WM_CTLCOLORSTATIC:
  begin
    if lParam = Static1 then
    begin
      Brush := CreateSolidBrush(RGB(255, 0, 0)); 
      SetTextColor(wParam, $FF0000);
      SetBkColor(wParam, RGB(255, 255, 255)); [COLOR="Navy"]
      Result := Brush;
      Exit
    end
  end;

Последний раз редактировалось jungle; 21.09.2009 в 17:20.
jungle вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цвет фона в блокноте. Alexxx92 Паскаль, Turbo Pascal, PascalABC.NET 4 18.05.2009 04:45
Как с помощью JavaScript изменить цвет фона ячеек в таблице,так что бы можно было выбрать цвет из списка Gotessa JavaScript, Ajax 1 09.05.2009 16:05
SetBkColor не меняет цвет фона EdNovice Win Api 3 18.02.2008 23:59
Цвет фона кнопки romets Win Api 10 23.01.2008 17:13
Цвет шрифта в Button chingiz Компоненты Delphi 5 02.09.2007 02:39