unsigned char alha=100;
SetWindowLong(okno, GWL_EXSTYLE, WS_EX_LAYERED);
SetLayeredWindowAttributes(okno, 0, alha, LWA_ALPHA);
Прозрачное диалоговое окно
Как можно добиться прозрачности диалогового окна? Заранее благодарю.
Код:
где
okno это HWND окна, которое нужно сделать прозрачным;
alha - степень прозрачности от 0 (совсем не видно) до 255 (не прозрачно).
Код:
unsigned char alha=100;
SetWindowLong(okno, GWL_EXSTYLE, WS_EX_LAYERED);
SetLayeredWindowAttributes(okno, 0, alha, LWA_ALPHA);
SetWindowLong(okno, GWL_EXSTYLE, WS_EX_LAYERED);
SetLayeredWindowAttributes(okno, 0, alha, LWA_ALPHA);
где
okno это HWND окна, которое нужно сделать прозрачным;
alha - степень прозрачности от 0 (совсем не видно) до 255 (не прозрачно).[/QUOTE]
небольшую поправочку внесу, -перед вызовом SetWindowLong необходимо считать все флажки расширенного стиля окна функцией GetWindowLong, либо, если все стили заведомо известны прогером, перечислить их на месте вызова
SetWindowLong(MyHwnd, GWL_EXSTYLE, GetWindowLong(MyHwnd,GWL_EXSTYLE) | WS_EX_TRANSPARENT);
SetLayeredWindowAttributes(MyHwnd, 0, 100 ,0x00000002);
Виникає помилка:
error LNK2001: unresolved external symbol _SetLayeredWindowAttributes
а коли вказую LWA_ALPHA
SetLayeredWindowAttributes(MyHwnd, 0, 100 ,LWA_ALPHA);
помилка:unresolved external symbol _SetLayeredWindowAttributes не зявляється, зявляється інша-Пише невідомий ідентифікатор LWA_ALPHA
VC6++,winXP,windows.h підєднаний,win32 dll project
Порадьте щось.
User32.lib подключен?
Цитата: Alexandoros
User32.lib подключен?
Так он всегда сам линкуется, в MSVS.
Код:
#define _WIN32_WINNT 0x0501//самым первым
// Windows Header Files:
#include <windows.h>
/*
твой код
*/
//допустим сдесь обработчик прозрачности
int iAlpha = 30 //тоесть 30 процентов
SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes(hWnd, 0, (255 * iAlpha) / 100, LWA_ALPHA);
/*
твой код
*/
// Windows Header Files:
#include <windows.h>
/*
твой код
*/
//допустим сдесь обработчик прозрачности
int iAlpha = 30 //тоесть 30 процентов
SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes(hWnd, 0, (255 * iAlpha) / 100, LWA_ALPHA);
/*
твой код
*/
вот так будет работать без глюков и правильно
Цитата: Zorkus
Так он всегда сам линкуется, в MSVS.
Может он умудрился отключить стандартные либы ;)