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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2014, 22:47   #1
serega6531
Пользователь
 
Регистрация: 01.04.2014
Сообщений: 10
Вопрос Фон позади элементов

Я пишу приложение с графикой на чистом WinAPI и мне нужно рисовать фон окна. Я делаю это так:
Код:
procedure DrawBG;
var
  Bitmap: TBitmap;
  DC: HDC;
  Canvas: TCanvas;
begin
  Canvas := TCanvas.Create;
  DC := GetWindowDC(wnd0);
  Canvas.Handle := DC;
  Bitmap := TBitmap.Create();
  Bitmap.PixelFormat := pf24bit;
  Bitmap.LoadFromResourceName(instance, 'BACKGROUND');
  Canvas.Draw(0, 0, Bitmap);
  Bitmap.Free;
  ReleaseDC(wnd0, DC);
  Canvas.Free;
end;
Но рисунок перекрывает элементы управления (кнопки, edit'ы), а мне нужно, чтобы они были поверх фона. Как это сделать? Прозрачность в нужных местах не подходит, т.к. некрасиво.
serega6531 вне форума Ответить с цитированием
Старый 12.05.2014, 23:12   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

WS_CLIPCHILDREN
waleri вне форума Ответить с цитированием
Старый 13.05.2014, 14:45   #3
serega6531
Пользователь
 
Регистрация: 01.04.2014
Сообщений: 10
По умолчанию

Это в свойства чего?
serega6531 вне форума Ответить с цитированием
Старый 13.05.2014, 14:59   #4
serega6531
Пользователь
 
Регистрация: 01.04.2014
Сообщений: 10
По умолчанию

Не помогло. Окно сейчас создаётся так:
Код:
wnd := CreateWindowEx($00000100, WND_CLASS_NAME0, 'Title', WS_VISIBLE or WS_SYSMENU or WS_MINIMIZEBOX or WS_CLIPCHILDREN, 100, 200, 510, 368, 0, 0, instance, nil);
Элементы создаются в WM_CREATE, DrawBG выполняется после создания окна.
serega6531 вне форума Ответить с цитированием
Старый 13.05.2014, 15:39   #5
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Виноват, не вгляделся в код.
Рисуйте фон из WM_ERASEBKGND или из WM_PAINT - в обоих случаях система предоставит HDC, в котором child окна "вырезаны"
waleri вне форума Ответить с цитированием
Старый 13.05.2014, 15:43   #6
ИринаЕ
Новичок
Джуниор
 
Регистрация: 13.05.2014
Сообщений: 1
По умолчанию Нужен сотрудник

Нужен срочно программист 1 С на постоянную работу в штат компании 1 С 8.2 комплексная, компания занимается торговлей складской техникой.
кто заинтересовался Invester72@mail.ru
ИринаЕ вне форума Ответить с цитированием
Старый 13.05.2014, 15:45   #7
serega6531
Пользователь
 
Регистрация: 01.04.2014
Сообщений: 10
По умолчанию

В WM_PAINT пробовал, не работает. Сейчас попробую в ERASEBKGND.
serega6531 вне форума Ответить с цитированием
Старый 13.05.2014, 15:50   #8
serega6531
Пользователь
 
Регистрация: 01.04.2014
Сообщений: 10
По умолчанию

Тоже нет. При наведении на какой-то элемент перестают быть видны остальные. Очень странно.
serega6531 вне форума Ответить с цитированием
Старый 13.05.2014, 19:04   #9
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Так надо не этим кодом рисовать а получать HDC от системы. Уж не знаю как это с TCanvas увязано.
waleri вне форума Ответить с цитированием
Старый 13.05.2014, 19:05   #10
serega6531
Пользователь
 
Регистрация: 01.04.2014
Сообщений: 10
По умолчанию

Как тогда рисовать?
serega6531 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив из 25 элементов. Найти сумму элементов, больших последнего элемента. Olzhakesh C# (си шарп) 6 10.05.2014 17:15
В массиве из п элементов много совпадающих элементов. Найти количество различных элементов Strax Фриланс 11 12.06.2010 20:13
В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива HazelHen Общие вопросы C/C++ 2 29.03.2009 15:16
Окно Позади всех окон Volkogriz Общие вопросы Delphi 5 27.11.2008 17:20
Всегда позади и всегда впереди в одном приложении Legat Win Api 4 27.10.2007 15:48