Проблема WS_CLIPCHILDREN WS_CLIPSIBLINGS в WinCE
От: HDDC  
Дата: 05.10.06 14:12
Оценка:
Доброго времени суток.
Известно, что в WinCE все окна создаются с такими стилями.

Опишу проблему на конкретном примере.
Допустим, у меня есть картинка (простой CWnd) с прозрачностью. Т.е. есть "прозрачные места". Извините за какой-то чудовищный слог. Хотелось бы, чтобы "за картинкой" (т.е более точно, в тех местах, где она прозрачна) отображлось то, что было отрисовано ранее (контролы, фон диалога и т.п.). Однако, например, если картинка — ребенок диалога, то он убирает ее прямоугольник из области отсечения (из-за стиля WS_CLIPCHILDREN) и его фон в этих местах не отрисуется. Поэтому в тех местах, где картинка прозрачна останется "старый бэкграунд" вплоть до рабочего стола.
В этом простейшем случае, еще можно как-то воздейстовать на ситуацию, на CTLCOLOR получая весь контекст при помощи GetDCEx и заливая чем нужно. Однаку если картинка находиться уже над контролом — дело плохо. Если пытаться брать весь конекст в отрисовке (WM_PAINT) контрола, то возникает "моргание", которое, конечно же недопустимо.

Вариант с "хайдить окно при отрисовке, ждать обновления, получать картинку бэкгранда, а затем отрисвываться самим" — не предлагать (а то видел тут аналогичный пост).

Ах, да... может можно просто убрать эти стили (и как — SetWindowLong отрабатывает но эффекта не производит)? Не вызовет это-ли злополоучное мигание?

Очень жду ваших комментариев.
Re: Проблема WS_CLIPCHILDREN WS_CLIPSIBLINGS в WinCE
От: kero Россия  
Дата: 05.10.06 16:34
Оценка:
>в тех местах, где картинка прозрачна останется "старый бэкграунд" вплоть до рабочего стола

+ WS_EX_TRANSPARENT ?

>SetWindowLong отрабатывает но эффекта не производит


+ SetWindowPos ?
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re[2]: Проблема WS_CLIPCHILDREN WS_CLIPSIBLINGS в WinCE
От: HDDC  
Дата: 05.10.06 19:00
Оценка:
Здравствуйте, kero, Вы писали:

>>в тех местах, где картинка прозрачна останется "старый бэкграунд" вплоть до рабочего стола


K>+ WS_EX_TRANSPARENT ?


>>SetWindowLong отрабатывает но эффекта не производит


K>+ SetWindowPos ?


Все очень здорово, но в WinCE стиль WS_EX_TRANSPARENT неть.... И это бы не помогло, наверное. Да — для данного уровня бы начало работать, но только для отдельного взятого окна — а их там предполагается — туча (имело в виду одного уровня). Ну да это бессмысленно я все пишу — этого стиля не существует просто.
Re[3]: Проблема WS_CLIPCHILDREN WS_CLIPSIBLINGS в WinCE
От: HDDC  
Дата: 05.10.06 19:12
Оценка:
Уф... что-то я заговариваться начал... (ужасные вещи пишу). Это все оттого, что спать охота..
Отвечу кратоко — стиля этого нет.
По поводу SetWindowPos — это я не понял — что и куда позиционрировать??? И в какой момент??????
В отрисовке чайлда? диалога??? кого и куда? Ничего не понял
Re[4]: Проблема WS_CLIPCHILDREN WS_CLIPSIBLINGS в WinCE
От: HDDC2  
Дата: 17.01.08 18:41
Оценка:
Здравствуйте, HDDC, Вы писали:

HDD>Уф... что-то я заговариваться начал... (ужасные вещи пишу). Это все оттого, что спать охота..

HDD>Отвечу кратоко — стиля этого нет.
HDD>По поводу SetWindowPos — это я не понял — что и куда позиционрировать??? И в какой момент??????
HDD>В отрисовке чайлда? диалога??? кого и куда? Ничего не понял

После довольно длительного молчания.
Все же скажу, что хорошего решения, видимо, не найти.
Да и не особо оно и нужно, если вдуматься.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.