hWnd окна

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

hWnd окна

Сообщение Invader » 10.01.2007 (Ср) 1:32

многие говорят что зная hWnd окна, можно делать сним что хочешь
но в поиске находил как правило: убить процесс либо закрыть окно...
а что вообще можно ему передать
как например можно изменить его прозрачность, определить другие объекты как текстбоксы кнопки и т.д. см справочник winApi но либо
мне попался не полный справочник либо я не додумываю. дело ещё в
том что проблема англ. msdsn ниче разобрать немогу.
но главное мне нужно понять как определяются другие объекты на форме окна и всё что с ним можно сделать
можно справочными материалами ,сылками, советами
очн надо разобраться
Последний раз редактировалось Invader 10.01.2007 (Ср) 23:04, всего редактировалось 1 раз.
умён и жаден,
характер отсуствует

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 10.01.2007 (Ср) 1:40

Автор, научись излагать мысли в доступной форме :)

Прозрачность - SetLayeredWindowAttributes
Узнать объекты на форме - EnumChildWindows
Определить тип объекта - GetClassName
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Сообщение Invader » 10.01.2007 (Ср) 2:06

Хочу полностью изменить окошки XP а к некоторым применить програмный ввод/вывод текста да интересует как свернуть принудительно - чтоб при оброщение к окну оно не разворачивалось
а ещё лутше вобще не прорисовывалось
да и по поводу Прозрачность - SetLayeredWindowAttributes
это конечно гуд
только вот код:

Dim Ret As Long
Dim Layered As Long

Ret = GetWindowLong(hWnd, GWL_EXSTYLE)

Ret = Ret Or WS_EX_LAYERED
SetWindowLong hWnd, GWL_EXSTYLE, Ret
SetLayeredWindowAttributes hWnd, 0, Layered, LWA_COLORKEY

при константах
Const LWA_COLORKEY = &H1
Const LWA_ALPHA = &H2
Const GWL_EXSTYLE = (-20)
Const WS_EX_LAYERED = &H80000


постояно вырезает на форме всё что чёрного цвета а всё окно остаётся
непрозрачным причём прозрачность 100 % и не регулируется
Последний раз редактировалось Invader 10.01.2007 (Ср) 2:25, всего редактировалось 1 раз.
умён и жаден,
характер отсуствует

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 10.01.2007 (Ср) 2:14

:roll:

SetWindowsHookEx WH_GETMESSAGE/RegisterShellHookWindow
SetWindowPlacement, LockWindowUpdate, ShowWindow
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Сообщение Invader » 10.01.2007 (Ср) 2:48

BV писал(а)::roll:

SetWindowsHookEx WH_GETMESSAGE/RegisterShellHookWindow
SetWindowPlacement, LockWindowUpdate, ShowWindow


как со всем этим работать ну может ресурс какой подскажешь
если нет то и на этом спасибо!
да с SetLayeredWindowAttributes разобрался работает всё гуд
умён и жаден,
характер отсуствует

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Сообщение Invader » 10.01.2007 (Ср) 22:51

да вот ещё не подскажете можно ли создать градиентную прозрачность окна ну скажем сверху прозрачность больше чем снизу
окна (может по маске)
и если я хочу поменять внешний вид всех окон винды мне нужно перебирать все hWnd окон либо в винде есть главное и достаточно к
нему применить изменения чтоб изменились другие
умён и жаден,
характер отсуствует

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.01.2007 (Чт) 0:13

Можно по маске, BV делал пример.
Перебирать нужно все.
Изображение

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 11.01.2007 (Чт) 0:29

Invader писал(а):как со всем этим работать ну может ресурс какой подскажешь


http://msdn.microsoft.com

Invader писал(а):да вот ещё не подскажете можно ли создать градиентную прозрачность окна ну скажем сверху прозрачность больше чем снизу


UpdateLayeredWindow ULW_ALPHA + PNG как маска

Invader писал(а):и если я хочу поменять внешний вид всех окон винды мне нужно перебирать все hWnd окон либо в винде есть главное и достаточно к
нему применить изменения чтоб изменились другие


Зависит от того, какие изменения ты хочешь применить.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Сообщение Invader » 11.01.2007 (Чт) 0:33

tyomitch писал(а):Можно по маске, BV делал пример.
Перебирать нужно все.


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

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Сообщение Invader » 11.01.2007 (Чт) 0:39

Уважаемый BV огромное пасибо
http://msdn.microsoft.com - спасибо но я разобрался через другие
источники с фразой "как с этим работать" это я погаричился

а насчёт изменений ну трудно правильно сказать ну скажем таже прозрачность с блакнотом получилось пологаю и другие окна поддадутся только как закрепить изменения с окнами если возможно
допустим после рестарта
умён и жаден,
характер отсуствует

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 11.01.2007 (Чт) 1:01

tyomitch писал(а):BV делал пример


BV не делал такого примера... вроде бы :roll:

Invader писал(а):а насчёт изменений ну трудно правильно сказать ну скажем таже прозрачность с блакнотом получилось пологаю и другие окна поддадутся только как закрепить изменения с окнами если возможно
допустим после рестарта


Никак. Придется перебирать все окна и устанавливать им вид каждый раз по новой.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Сообщение Invader » 11.01.2007 (Чт) 1:21

видел подобную релизацию прозрачности програмы WindowBlinds вроде так называлась vbasic не спсобен подобное создать или это
очень сложный процесс новозможный?
умён и жаден,
характер отсуствует

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 11.01.2007 (Чт) 3:23

Решил все таки написать пример :)
К сожалению, пока через GDI+.

vbskb_png vbskb_transparency vbskb_alpha
Вложения
_png_alpha.rar
(51.71 Кб) Скачиваний: 385
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Сообщение Invader » 11.01.2007 (Чт) 5:44

уменя просто нет слов просто супер на такой славный пример даже не
расчитывал видел через поиск все GDI+ но на других языках и ломано ничего не шло

только вот я не понял (из-за не знания) почему: " К сожалению, пока через GDI+."?
Громадное ЧЕЛОВЕЧЕСКОЕ спасибо :shock:
умён и жаден,
характер отсуствует

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Сообщение Dmitriy2003 » 11.01.2007 (Чт) 6:11

Dmitrich

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Сообщение Invader » 11.01.2007 (Чт) 8:25

Dmitriy2003 писал(а):2 Invader
http://bbs.vbstreets.ru/viewtopic.php?p=6633674#6633674 :)

и кчему му бы это
так насчёт gdi+ не понял - И главное - старайтесь не юзать GDI+, ибо есть зло ???

хотя постойте это в результате просто рисунок с прозрачнастью пере-
даётся на экран ни элементов формы на этом не изобразить и естествено не передать чужому окну свойства прозрачности по рисунку маске :cry:
умён и жаден,
характер отсуствует

schalexey
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 18.02.2005 (Пт) 17:41
Откуда: Сургут

Сообщение schalexey » 11.01.2007 (Чт) 9:10

Invader
зато какую заставку сделать можно ;)... единственное наверно )) если не рисовать руками эти самые элементы )

Вот еще пример:
Вложения
glassForm.zip
(33.5 Кб) Скачиваний: 191

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Сообщение Invader » 11.01.2007 (Чт) 9:36

ну с ручками всё впорядке нарисовать элементы эт можно уже не раз делали но это гуд для своёй проги а вот чтоб изменить окошки эксплоера скажем задать блакноту медузную прозрачность вот тема вопроса
кстати вот нашёл


// Создаем кисть с градиентом на все окно и полупрозрачностью
LinearGradientBrush brush(bounds, Color(130, 255, 0, 0), Color(255, 0, 0, 255),
LinearGradientModeBackwardDiagonal);

как то в vb6 применить это можно

а пример с прозрачным окошком хорош только время дайте с кодом разобраться
умён и жаден,
характер отсуствует

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Сообщение Invader » 11.01.2007 (Чт) 12:35

люди добрые раз так все отозвались не подскажете
SetLayeredWindowAttributes даст прозрачность окна
а классу скажем "Edit" можно передать отдельно прозрачность
умён и жаден,
характер отсуствует

schalexey
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 18.02.2005 (Пт) 17:41
Откуда: Сургут

Сообщение schalexey » 11.01.2007 (Чт) 13:20

Invader
думаю в названии все сказано ) SetLayeredWindowAttributes

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 11.01.2007 (Чт) 13:26

schalexey, а по твоему текстбокс -- это не окно? :)
Стили текстбокса задаются SetWindowLong, к примеру.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.01.2007 (Чт) 13:28

По-егойному, класс Edit -- это не одно окно.
Изображение

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 11.01.2007 (Чт) 13:59

Invader писал(а):да и вот вопрос как добиваются прозрачности только заголовка окна


Самое простое - установив Windows Vista с интерфейсом Aero. И все заголовки станут полупрозрачными.

Да, а что будет с заголовком если ты и Vista одновременно делают его полупрозрачным? :lol:
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Сообщение Invader » 11.01.2007 (Чт) 21:56

вобще установил Aero только в ХР? но раз все говорят зная hWnd
делай с окном чё хочеш ,тогда в моём понимании (что хочешь)
гораздо большее представление...
--------------------------------------------------------------------------------
schalexey, а по твоему текстбокс -- это не окно?
--------------------------------------------------------------------------------
если текстбокс - окно? то наверняка можно было описать его hWnd
в SetLayeredWindowAttributes

tyomitch а нельзя подробнее:
"По-егойному, класс Edit -- это не одно окно."
как то видел пример так там форма прозрачна а вот кнопки текстбоксы
видны и текст на форме виден но там просто помоему было присвоено
прозрачность на цвет формы, вернее определялся регион по цвету формы с вырезанием из неё
Последний раз редактировалось Invader 12.01.2007 (Пт) 1:50, всего редактировалось 1 раз.
умён и жаден,
характер отсуствует

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 12.01.2007 (Пт) 1:43

Чтобы сделать интерфейс "как в Vista", нужно к основному окну применить ту самую полупрозрачность по альфа-каналу PNG, а после на это окно добавить второе, обычное - "клиентскую часть".

Invader писал(а):так насчёт gdi+ не понял - И главное - старайтесь не юзать GDI+, ибо есть зло ???


Тут ведь дело вот в чем, размер GDI+ - 1.56 МБ, и входит она в состав Windows начиная только с Windows 2000... Ну, ладно, это разговор для отдельной темы :)

Invader писал(а):SetLayeredWindowAttributes даст прозрачность окна
а классу скажем "Edit" можно передать отдельно прозрачность


Нельзя, эта функция только для Top-Level Windows.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Сообщение Invader » 12.01.2007 (Пт) 1:59

я дико извеняюсь но вот с альфа-каналом PNG я не разобрался

нужно к основному окну применить ту самую полупрозрачность по альфа-каналу PNG
как это сделать -это по типу твоего примера если да то тогда
зная hWnd Блокнота и подставив твой код блокнот испарило :) не окончательно конечно но свойтв от PNG он не принял
умён и жаден,
характер отсуствует

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 12.01.2007 (Пт) 3:40

Этот метод не применим к чужим окнам.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Invader
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 18.01.2005 (Вт) 4:22
Откуда: Молдавия, Виноград

Сообщение Invader » 12.01.2007 (Пт) 4:20

ага я понял спасибо идея с прикреплением рисунка и клиентской области супер, всем Гиганское Спасибо :D
умён и жаден,
характер отсуствует

t116
Бывалый
Бывалый
 
Сообщения: 209
Зарегистрирован: 12.01.2007 (Пт) 12:11

Сообщение t116 » 12.01.2007 (Пт) 20:55

Есть форма с контролами и png рисунок содержащий скин для данной формы с учетом прозрачности по альфе.

Кто-нибудь может привести самый простой пример как установить этот скин на форму?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.01.2007 (Пт) 21:33

Этот пример лежит выше в этом топике.
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, YaCy [Bot] и гости: 102

    TopList