|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Май 11, 2004 01:22:30 Имеется окно со стилем WS_EX_TRANSPARENT. При первой перересовке окна всё ОК, но если пересовывается какое-нибудь (не родительское) окно под ним, то WM_PAINT для прозрачному окну не посылается. Можно ли это исправить, не сабклассируя/суперклассируя все дочерние окна? |
|
|
Дата: Май 11, 2004 01:29:42 Есть такая вещь, у меня тоже была такая проблема. Я не помню точно, как я ее решил (вроде обошелся без стиля WS_EX_TRANSPARENT), но вроде... хотя вот тебе MSDN: WS_EX_TRANSPARENT Specifies that a window created with this style is to be transparent. That is, any windows that are beneath the window are not obscured by the window. A window created with this style receives WM_PAINT messages only after all sibling windows beneath it have been updated. надеюсь помог |
|
|
Дата: Май 11, 2004 01:42:23 Если под нашим прозрачным окном расположен, к примеру, Edit Control, то при каждом вводе символа в Edit Control он перерисовывается и закрашивает собой кусок прозрачного окна. При этом WM_PAINT прозрачному окну не отсылается |
|
|
Дата: Май 11, 2004 01:52:04 попробуй стиль WS_CLIPSIBLINGS |
|
|
Дата: Май 11, 2004 02:33:11 · Поправил: Loger Не помогает :( |
|
|
Дата: Май 11, 2004 02:39:01 |
|
|
Дата: Май 11, 2004 02:59:31 Loger глянул я код. проблема в другом. добавь такой код, после создания первых двух окон: CreateWindowEx(NULL,"EDIT",NULL,WS_BORDER | WS_CHILD | WS_VISIBLE,5,15,70,20,hWnd,NULL,hInstance,NULL); и ты поймешь, что если одно дочернее окно лежит под другим, но получает фокус, то оно его перекроет, как это обойти я пока не знаю... |
|
|
Дата: Май 11, 2004 03:40:06 проблема еще в том, что при перекрытии одного чайлда другим, я не знаю какое сообщение приходит окну. WM_WINDOWPOSCHANGED не подошло =(( |
|
|
Дата: Май 11, 2004 04:01:13 WS_CLIPCHILDREN ? |
|
|
Дата: Май 11, 2004 22:54:06 Позиция EDIT окна не изменяется. Оно просто перерисовывается поверх прозрачного, а WM_PAINT никому не отсылает |
|
|
Дата: Май 12, 2004 00:32:31 не меняется z-order точнее говоря, хотя после alt-tab все ok. в чем трабл? |
|
|
Дата: Май 12, 2004 19:19:15 Трабл в том, что EDIT, перерисовываясь, закрашивает часть прозрачного окна, а оно после этого не перерисовывается, т. к. ему не приходит WM_PAINT |
|
|
Дата: Май 12, 2004 20:16:16 так как же оно его перекрывает, если все известные мне сообщения о перекрытии не приходят окну? согласен, я могу быть дураком, но z-order не меняется. дай фокус EDIT'у, он перерисует твое прозрачное окно, затем переключись на другую задачу, так чтобы твое окно (точнее его чайлды) было перекрыто, затем снова переключись на свою задачу, и вуаля вроде бы все нормально. надо поглубже копнуть в MSDN на предмет дочерних окон, как там происходит перекрытие при передаче фокуса, и при потере. |
|
|
Дата: Май 13, 2004 01:56:00 z-order действительно не меняется, но проблема не в нём (Transparent window всегда перересовывается после других). Проблема в том, что EDIT при получении фокуса закрашивает ту часть экрана, на которой размещено прозрачное окно. По здравому смыслу после этого он должен отправить прозрачному окну сообщение о перерисовке, но те, кто писал Windows, как известно, имеют свои представления о здравом смысле. |
|
|
Дата: Май 13, 2004 02:11:28 Loger Ключевые слова для поиска в MSDN: kbinfo kbWndw kbWndwProp KB92526 Может фиг с ним с этим дурацким стилем? Ведь есть LayeredWindows???? |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.072 |