Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
3 / 3 / 1
Регистрация: 28.12.2009
Сообщений: 73

Прозрачный фон у Radio Button

05.03.2017, 18:14. Показов 2997. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Есть окно, на котором отображается картинка. На нем создаю radio кнопку. Подскажите пожалуйста, как мне сделать для нее прозрачный фон?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <windows.h>
#include <stdio.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
ATOM RegMyWindowClass(HINSTANCE, LPCTSTR);
HBITMAP hBitmap;
HINSTANCE hInstance;
 
int APIENTRY WinMain(HINSTANCE hInstance,
    HINSTANCE         hPrevInstance,
    LPSTR             lpCmdLine,
    int               nCmdShow)
{
    LPCTSTR lpzClass = TEXT("My Window Class!");
    if (!RegMyWindowClass(hInstance, lpzClass))
        return 1;
    HWND hWnd = CreateWindow(lpzClass, TEXT("Window"), WS_OVERLAPPEDWINDOW|WS_VISIBLE , 300, 300, 190, 200, NULL, NULL, hInstance, NULL);
 
    if(!hWnd) return 2; 
    MSG msg = {0};
    int iGetOk = 0;
    while ((iGetOk = GetMessage(&msg, NULL, 0, 0 )) != 0)
    {
        if (iGetOk == -1) return 3;
        TranslateMessage(&msg);    
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
 
ATOM RegMyWindowClass(HINSTANCE hInst, LPCTSTR lpzClassName)
{
    WNDCLASS wcWindowClass = {0};
    wcWindowClass.lpfnWndProc = (WNDPROC)WndProc;
    wcWindowClass.style = CS_HREDRAW|CS_VREDRAW;
    wcWindowClass.hInstance = hInst;
    wcWindowClass.lpszClassName = lpzClassName;
    wcWindowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wcWindowClass.hIcon = NULL;
    return RegisterClass(&wcWindowClass);
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HWND hRadioButton;
 
    switch (message)
    {
        case WM_CREATE:
        {
            hBitmap = (HBITMAP)LoadImage(hInstance, "myimage.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
            hRadioButton = CreateWindowExA(0, "BUTTON", "radio button", (WS_CHILD | WS_VISIBLE | BS_RADIOBUTTON), 10, 10, 100, 20, hWnd, (HMENU)3001, hInstance, NULL);
            break;
        }
 
        case WM_PAINT:
        {
            BITMAP bm;
            PAINTSTRUCT ps;
            HDC hdc     = BeginPaint(hWnd, &ps);
            HDC hdcMem  = CreateCompatibleDC(hdc);
            SelectObject(hdcMem, hBitmap);
            GetObject(hBitmap, sizeof(bm), &bm);
            BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hdcMem, 0, 0, SRCCOPY);
            DeleteDC(hdcMem);
            EndPaint(hWnd,&ps);
        }
        break;
 
        case WM_DESTROY:
            PostQuitMessage(0);
        break;
 
        default:  
            return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
Название: radio_button.png
Просмотров: 83

Размер: 33.6 Кб
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.03.2017, 18:14
Ответы с готовыми решениями:

Radio Button
как вернуть радио кнопку в начальное положение как бы обнулить её. Саму кнопку создаю так : rBut = CreateWindow( ...

Отключить группу Radio Button
НА форме есть несколько групп Radio Button. Как можно отключить одну группу Radio Button, т.е. чтобы все в одной группе стали не...

Прозрачный фон Label
Пытаюсь сделать прозрачным, пока не получилось - решил сделать такого же цвета, как и фон, с чекбоксом прокатило, а с STATIC нет. ...

11
 Аватар для Asaido
30 / 11 / 2
Регистрация: 24.02.2017
Сообщений: 47
05.03.2017, 20:42
никак
0
3 / 3 / 1
Регистрация: 28.12.2009
Сообщений: 73
05.03.2017, 21:07  [ТС]
Подождем других форумчан. Возможно, Вы просто не в курсе.
0
 Аватар для rao
903 / 424 / 159
Регистрация: 02.04.2014
Сообщений: 1,206
05.03.2017, 22:22
Ёшкин кот, когда же вы научитесь пользоваться поиском? хотя бы по форуму!
Вылазит дофигальён тем по запросу "transparent" и везде примерно одно и тоже. Первая попавшаяся:
Как сделать прозрачный фон у checkbox в окне?
1
 Аватар для Asaido
30 / 11 / 2
Регистрация: 24.02.2017
Сообщений: 47
05.03.2017, 22:59
exkilla, в примере выше не хватает только SetBkMode
C++
1
2
3
4
5
6
7
8
9
    case WM_CTLCOLORSTATIC:
    {
        if((HWND)lParam == hRadio)
        {
            SetBkMode((HDC)wParam, TRANSPARENT);
            return (LRESULT)GetStockObject(NULL_BRUSH);
        }
        return 0;
    }
1
3 / 3 / 1
Регистрация: 28.12.2009
Сообщений: 73
05.03.2017, 23:28  [ТС]
Asaido, я забыл добавить в свой пример:

C++
1
#pragma comment(linker, "/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'"")

С новым стилем такой способ не работает.

Добавлено через 7 минут
В теме, которую скинул rao, есть решение для checkbox с новым стилем:

В качестве решения я сделал так. После создания чекбокса, беру часть фона родителя в которую он попадает и создаю кисть. В сообщение WM_CTLCOLORSTATIC её возвращаю. Работает.
Как мне применить это решение к моему коду?
0
 Аватар для Asaido
30 / 11 / 2
Регистрация: 24.02.2017
Сообщений: 47
05.03.2017, 23:28
exkilla, УМВР
(Win8.1)
0
3 / 3 / 1
Регистрация: 28.12.2009
Сообщений: 73
05.03.2017, 23:30  [ТС]
Windows 7 x64.
При включении нового стиля все так, как на картинке в первом посте.
Без включения нового стиля - все ОК.
0
 Аватар для Asaido
30 / 11 / 2
Регистрация: 24.02.2017
Сообщений: 47
05.03.2017, 23:32
exkilla, а, нет, забудь. из-за специфической настройки гаммы не увидел разницы в цвете
1
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
06.03.2017, 00:12
Лучший ответ Сообщение было отмечено exkilla как решение

Решение

exkilla, см. последнее ( №22 ) сообщение в этой теме
Цитата Сообщение от Добрый миломан Посмотреть сообщение
хорошо было бы на этот компонент еще нанести картинку родителя
1
3 / 3 / 1
Регистрация: 28.12.2009
Сообщений: 73
06.03.2017, 00:49  [ТС]
Alex5, спасибо. Получилось.

Название: radio_button2.png
Просмотров: 79

Размер: 35.4 Кб
0
 Аватар для Asaido
30 / 11 / 2
Регистрация: 24.02.2017
Сообщений: 47
06.03.2017, 11:34
exkilla, только там SetBkMode не нужен и сообщение WM_CTLCOLORBTN не присылается от check/radio кнопое
C++
1
2
3
4
5
6
7
8
9
10
11
    case WM_CTLCOLORSTATIC:
    {
        if((HWND)lParam == hRadio)
        {
            RECT rc;
            GetClientRect((HWND)lParam,&rc);
            FillRect((HDC)wParam, &rc, hBlueBrush); 
            return (LRESULT)GetStockObject(NULL_BRUSH);
        }
        return 0;
    }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.03.2017, 11:34
Помогаю со студенческими работами здесь

Прозрачный фон через AlphaBlend
Подскажите пожалуйста, как отобразить изображение png формата с прозрачным фоном через функцию AlphaBlend, использую gdi+.При компиляции...

Как сделать фон компонента Radio Button прозрачным?
Может кто сталкивался с такой проблемой, подскажите пожалуйста. Думал сделать изначально через свойство Transparent, а потом когда дошла...

Прозрачный фон иконки и фон диалогового окна
Делаю всё в VS 2010, mfc! 1)Как поставить вместо стандартного фона диалогового окна, свой фон, например картинку? 2)Как сделать так...

Radio Button
Пытаюсь разобраться с MFC по книге Т. Сидориной. Там есть пример по созданию группы Radio Button. Написано: «… только у первой кнопки...

Radio Button
Как можно привезать Radio Button чтоб при выборе одного или иного менялось значение переменой? В проекте надо чтоб можно было изменять...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru