В Microsoft Visual Studio создаю Windows Forms проект – окно с картинкой. Как сделать определённый цвет окна полностью прозрачным, так как это делают через SetLayeredWindowAttributes в чистом API?
Код (Text): invoke SetLayeredWindowAttributes,hWnd,dTransparentColor,dTransparency,LMA_ALPHA or LMA_COLORKEY dTransparentColor - цвет, который станет полностью прозрачным dTransparency - степень непрозрачности всех остальных цветов (0-255), где 0 - полная прозрачность, а 255 - полная непрозрачность. Есть вопрос к знатокам на смежную тему: как сделать окошко неоднородной полупрозрачности? Видел пример на VB6, который показывал этот эффект, загружая картинку png с неоднородной прозрачностью и делал из этого окно. Таким способом можно получить края окна без "зубчиков", которые в вышеприведенном примере будут на закругленных частях изображения за счёт пикселей. Могу найти этот пример, там используется API. Я пытался, но у меня ничего не получилось с портированием VB'шного кода в MASM.
Ну это тогда тебя надо отправлять в MSDN, чтобы ты почитал справку по .NET Framework. Или спроси на любом форуме с .NET тематикой. Это очень просто делается, тоже в одну строчку.
Нет, но ты не указал, какая у тебя VS, я подумал, что "современная".. ) Если ты пишешь не на .NET, то решение на API - это для тебя.
Да, я знаю, но т. к. это проект Windows Forms наверное лучше было бы через MFC. Но если всё-таки делать через API, тогда как получить hWnd окна?
vg В .NET: HWND = юзай myForm.Handle. А вообще есть атрибут управляющий прозрачностью, вроде бы myForm.Transparent (указываешь в диапазоне от 0.0 до 1.0, т.е. полупрозрачный = 0.50 в double формате). Если унаследованный класс, что то типа этого: Код (Text): System.Windows.Forms.Form то это .NET. Можешь готовый exe'шник пихнуть в peid, он покажет тебе что у тебя.
mc black А... ну если уж на MFC, то по моему там есть оператор HWND и мембер m_hWnd. если не ошибаюсь (MFC не юзал): Код (Text): HWND hWnd = (HWND)myForm; // myForm is a CWnd based object. должно работать