1. Уважаемые участники и гости, 19 октября codeby будет работать в режиме "Только чтение". Регистрация новых участников будет закрыта. 20 октября портал продолжит работу в прежнем режиме.

Прозрачность окон в ОС Windows

Тема в разделе "Общие вопросы по С и С++", создана пользователем biz, 16 апр 2008.

Статус темы:
Закрыта.
  1. biz

    biz Гость

    Репутация:
    0
    Хотелось бы разъяснить вопрос прозрачности окон в ОС Windows... Что и как проще всего зделать.
     
  2. biz

    biz Гость

    Репутация:
    0
    Публикую культовый способ (т.е. его часть):
    Код:
    	...
    HBITMAP		hDIB;
    long *			p_dib;
    
    POINT			ptSrc;
    POINT			ptWindow;
    SIZE			szWindow;
    HDC			hDCMemory;
    BLENDFUNCTION	blend;
    
    ZeroMemory( &bmi, sizeof( BITMAPINFO ) );
    bmi.bmiHeader.biSize		= sizeof( BITMAPINFOHEADER );
    bmi.bmiHeader.biWidth		= 200;  // ширина окна
    bmi.bmiHeader.biHeight		= -100; // высота (минус нужен для того, чтобы изображение бфло не upside-down)
    bmi.bmiHeader.biPlanes		= 1;
    bmi.bmiHeader.biBitCount	= 32;
    bmi.bmiHeader.biCompression	= BI_RGB;
    hDIB = CreateDIBSection( GetDC( hWnd ), &bmi, DIB_RGB_COLORS, (void **)&p_dib, NULL, 0 );
    
    ... заполняем p_dib прозрачным изображением ...
    
    ptSrc.x = 0;
    ptSrc.y = 0;
    ptWindow.x = x;
    ptWindow.y = y;
    szWindow.cx = width;
    szWindow.cy = height;
    
    hDCMemory = CreateCompatibleDC( NULL );
    SelectObject( hDCMemory, hDIB );
    
    blend.BlendOp			= AC_SRC_OVER;
    blend.BlendFlags		= 0;
    blend.SourceConstantAlpha	= 255;  // общая прозрачность окна
    blend.AlphaFormat		= AC_SRC_ALPHA;
    
    UpdateLayeredWindow( hWnd, NULL, &ptWindow, &szWindow, hDCMemory, &ptSrc, 0, &blend, ULW_ALPHA );
    ...
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей