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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2015, 22:31   #1
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию windows 8.1 и WM_PAINT...

Здравствуйте.

Возник вопрос и ни как не получается его решить
У меня Windows 8.1 x64 + Delphi XE8

Хотел у Form.caption изменить шрифт, но процедуры :

procedure WMNCPaint(var Msg: TWMNCPaint); message WM_NCPAINT;
procedure WMPaint(var Msg: TWMPaint); message WM_PAINT;
procedure WMACTIVATE(var Message : TWMActivate); message WM_ACTIVATE;
procedure WMSize(var Msg: TWMSIZE); message WM_SIZE;

не работают.

Я, так понимаю windows 8.1 их заглушает, т.е. запросы выполняются, но после
windows делает свою перерисовку. И ничего не получается.

Объясните как правильно сделать, пожалуйста (Замучился уже),
что бы работали: WM_PAINT, WM_ACTIVATE....

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 18.05.2015, 07:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Я, так понимаю
Ты в низ бряк ставил? Он не срабатывает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.05.2015, 10:40   #3
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты в низ бряк ставил? Он не срабатывает?
Пока писал, понял, что проблема, не в процедурах.
Они нормально работают.

А вот способ перерисовки Form.caption, т.е. изменение его шрифта, который
работал до Windows 7 (включительно), для windows 8.1 не подходит.

Отсюда вопрос.
Как это правильно сделать для windows 8.1

Делал через canvas и DrawText .

Вот делал компонент, но для windows 8.1 не работает.

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.

Последний раз редактировалось volod3000; 18.05.2015 в 23:58.
volod3000 вне форума Ответить с цитированием
Старый 18.05.2015, 14:34   #4
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Вот смотрите если запустить следующий код:

Цитата:
Код:

Type
  TForm1 = class(TForm)
   
  private
    procedure WMNCPaint(var Mes: TWMNCPaint); message WM_NCPAINT;
.....................
.....................
.....................

procedure TForm1.WMNCPaint(var Mes: TWMNCPaint);
  var
  ACanvas: TCanvas;
  begin
  ACanvas := TCanvas.Create;
  try
  ACanvas.Handle := GetWindowDC(Form1.Handle);
  with ACanvas do
  begin
  Brush.Color := clActiveCaption;
  Font.Name := 'Verdana';
  Font.Size := 10;
  Font.Color := clCaptionText;
  Font.Style := [fsBold];
  TextOut(GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CXBORDER),
  Round((GetSystemMetrics(SM_CYCAPTION) - Abs(Font.Height)) / 2) + 1,
  ' SwissDelphiCenter');
  end;
  finally

  ReleaseDC(Form1.Handle, ACanvas.Handle);
  ACanvas.Free;

  end;
  end;
На windows 8.1 ничего не произойдет, вопрос почему ?
Хотя на меньших версия windows все нормально.

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 18.05.2015, 14:59   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Для начала проверьте что возвращает GetWindowDC...
waleri вне форума Ответить с цитированием
Старый 18.05.2015, 15:48   #6
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Для начала проверьте что возвращает GetWindowDC...
А, что его проверять, больше нуля.

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Старый 19.05.2015, 13:04   #7
volod3000
Форумчанин
 
Аватар для volod3000
 
Регистрация: 18.12.2008
Сообщений: 266
По умолчанию

Так понимаю вариантов нет ?

Мало открыть человеку глаза, большинство еще просит указать дорогу и ждет волшебного пенделя.
volod3000 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить WM_PAINT из очереди daur0792 Win Api 1 01.06.2013 17:15
InvalidateRect не приводит к сообщениям WM_PAINT Jugger Win Api 4 21.05.2012 18:07
спираль в WM_PAINT Ultor Win Api 3 30.03.2012 23:33
Visual studio 2008 MFC WM_Paint jahoope1 Помощь студентам 4 14.09.2011 23:32
Wm_paint и Wm_create ZverGB Общие вопросы C/C++ 1 24.05.2010 16:55