Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
10 / 10 / 0
Регистрация: 10.07.2011
Сообщений: 75

Картинка в окне неправильной формы

10.07.2011, 17:51. Показов 1959. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нашел статью по созданию окон неправильной формы, делал все как там и вроде получалось, а потом решил создать кнопку таким же методом. Все бы хорошо, но кнопка получается просто черной, картинка в ее окно не выводится, хотя регион окна нормальный и окно создается по форме картинки.
Сам код обширный, приведу часть отвечающую за вывод картинки:

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
//создание окна кнопки
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR     lpCmdLine,int      nCmdShow)
{
//..........
//вот фрагмент создания окна для кнопки
HWND hWnd_button = CreateWindow(WIN_CLASS_NAME,
                                                             _T("Title"),
                                                             WS_POPUP,
                                                             620, 400, 100, 30,       
                                                             hWnd,                        
                                                             NULL,                          
                                                             g_hInst,                       
                                                             NULL);
 if (!hWnd_button)
        return FALSE;
    SetWindowRgn(hWnd_button, hRgn_button, TRUE);
    ShowWindow(hWnd_button, nCmdShow);     
    UpdateWindow(hWnd_button);
//..........
}
//вывод
LRESULT CALLBACK WndProc(HWND hWnd,                     
                         UINT message,                  
                         WPARAM wParam, LPARAM lParam)  
{
    switch (message) 
    {
    case    WM_CREATE:
        {
hBmpFon2 = (HBITMAP)LoadImage(NULL, L"key_play_off.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
        }
    case    WM_PAINT:
        {
                    PAINTSTRUCT ps_button;
        HDC hdc1 = BeginPaint(hWnd_button, &ps_button);
               hBmpFon2 = (HBITMAP)LoadImage(NULL,L"Menu.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
               
GetObject(hBmpFon2 , sizeof(HBITMAP), &hBmpFon2 );
             
               HDC hdcBuffer_button = CreateCompatibleDC(hdc1);
            
               HBITMAP hBmpBuffer_button = CreateCompatibleBitmap(hdc1, key_play.bmWidth, key_play.bmHeight);
              
               SelectObject(hdcBuffer_button, hBmpBuffer_button);
               
               BitBlt(hdc1, 0, 0, key_play.bmWidth, key_play.bmHeight, hdcBuffer_button, 0, 0, SRCCOPY);
           
           
               
               HDC hdcComp1 = CreateCompatibleDC(hdc1);
               
               SelectObject(hdcComp1, hBmpFon2);
               
               MaskBlt(hdcBuffer_button, 0, 0, key_play.bmWidth, key_play.bmHeight, hdcComp1, 0, 0, Key_play_mask, 0, 0, SRCCOPY);
 
               
               DeleteDC(hdcBuffer_button);
               DeleteObject(hBmpBuffer_button);
               DeleteDC(hdcComp1);
        EndPaint(hWnd_button, &ps_button);
        
 
        }
Код работает, основное окно выводится с картинкой, а вот конкретно это, без нее, помогите плз разобратся что не так с кодом.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.07.2011, 17:51
Ответы с готовыми решениями:

DIV неправильной формы
Здравствуйте! Подскажите пожалуйста, как можно создать div неправильно формы такой, как указан внизу на изображении? Я его изобразил...

Splash screen неправильной формы
Здравствуйте, проблема следущая: надо сделать начальный экран системы(splash screen) который представляет собой картинку, проблема в том...

Столкновение объектов неправильной формы
Здравствуйте. Есть два объекта неправильной формы. Если я использую код: onClipEvent(enterFrame) { if ( _root.obj1.hitTest ( _root.obj2 ) )...

4
 Аватар для VadimTagil
54 / 44 / 11
Регистрация: 15.07.2011
Сообщений: 160
03.08.2011, 22:56
1. key_play - что такое?
2. в чем смысл вызова функции GetObject с такими параметрами, обычно ее используют для заполнеyия стрктуры BITMAP

Добавлено через 2 минуты
и почему у кнопки стиль WS_POPUP когда надо WS_CHILD?
0
 Аватар для bretba
63 / 58 / 13
Регистрация: 24.07.2011
Сообщений: 343
04.08.2011, 00:34
Цитата Сообщение от Arkanoid Посмотреть сообщение
Нашел статью по созданию окон неправильной формы
Если не трудно,дай ссылочку...сорри что оффтоплю...давно хотел тоже почитать
0
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
04.08.2011, 07:28
Вот выложил исходник как вариант создание формы под любой BMP/DIB файл, отсекает цвет по первому пикселю правда медленная операция. Ну и создание кнопки с наложение битовой картинки только без отсечения, с отсечением тоже можно реализовать при событие WM_DRAWITEM как обычным рисованием GDI.
Вложения
Тип файла: rar forms.rar (45.8 Кб, 47 просмотров)
0
 Аватар для VadimTagil
54 / 44 / 11
Регистрация: 15.07.2011
Сообщений: 160
04.08.2011, 10:27
вроде с любой кнопкой можно связать значок или картинку, сообщение BM_SETIMAGE
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.08.2011, 10:27
Помогаю со студенческими работами здесь

Изображение в блоке неправильной формы
Добрый день! Скажите, пожалуйста, каким образом вставить фоновую картинку в блок, таким образом чтобы она приняла его форму? Ссылка на...

Окно неправильной формы (геометрия)
Всем привет. Перекопал всё в поиске и не нашел кое-что... Я искал способ изменить графический вид формы. Т.е. сделать ее неправильной...

Данные с формы сохраняются в неправильной кодировке
Скрипт, который создает таблицу CREATE TABLE video_notes( id int AUTO_INCREMENT PRIMARY KEY, note TEXT NOT NULL, date...

Кнопки неправильной формы в Windows Forms
подскажите,пожалуйста,как можно реализовать следующее: загружаю на форму картинку без фона (пример прилагается),нужно,чтобы при наведении...

Сверстать замещающие изображения неправильной формы в стиле единого круга
Приветствую, уважаемые форумчане! Совсем недавно начал ХТМЛ учить и стали интересовать возможные варианты верстки. Возник вопрос...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru