C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 Прозрачные окна / Окна и интерфейс / Visual 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; }