Прозрачные окна на C++. Привожу пример, как можно придать прозрачность разнообразным окнам. Для этого нам послужит функция SetLayeredWindowAttributes
BOOL SetLayeredWindowAttributes( HWND hwnd, //хэндл окна COLORREF crKey, //цвет который будет прозрачен BYTE bAlpha, //степень прозрачности(0-255) DWORD dwFlags //флаг, если LWA_COLORKEY – отображаться не будут те цвета которые указаны во втором параметре, если LWA_ALPHA – тогда прозрачность );
Для работы этой функции необходимо, чтобы у окна были дополнительное свойство WS_EX_LAYERED, оно устанавливается с помощью функции SetWindowLong.
#include <windows.h> BOOL (WINAPI *SetNotePadLayer)(HWND,COLORREF,BYTE,DWORD); int main() { HINSTANCE hMod; HWND hwnd; ShellExecute(NULL,"open","notepad.exe",NULL,NULL,SW_SHOWNORMAL); hMod = LoadLibrary("user32.dll"); if(hMod) { SetNotePadLayer =(int(__stdcall*)(HWND,COLORREF,BYTE,DWORD))GetProcAddress(hMod,"SetLayeredWindowAttributes"); if(SetNotePadLayer) { do { hwnd = FindWindow("Notepad",NULL); SetWindowText(hwnd,"www.prog.h14.ru"); }while(hwnd==NULL); if(SetWindowLong(hwnd,GWL_EXSTYLE,0x80000)) { if(!SetNotePadLayer(hwnd,0,150,0x02)) {MessageBox(NULL,"Error SetNotePadLayer","Error",MB_OK|MB_ICONSTOP);} }else{MessageBox(NULL,"Error SetWindowLong","Error",MB_OK|MB_ICONSTOP);} }else{MessageBox(NULL,"Error GetProcAddress","Error",MB_OK|MB_ICONSTOP);} }else{MessageBox(NULL,"Error load user32.dll","Error",MB_OK|MB_ICONSTOP);} if(!FreeLibrary(hMod)){MessageBox(NULL,"Error FreeLibrary","Error",MB_OK|MB_ICONSTOP);} return 0; }