Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
IvanG
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 5
#1

screenmate: SetWindowRgn - не всегда меняет форму окна - C++

03.11.2009, 09:58. Просмотров 1408. Ответов 1
Метки нет (Все метки)

Решил разобраться с устройством Скринмейтов (программок бегающих по экрану). Долго мучился с разрезанием картинки и т.д. (С++ знаю не очень...), но тем не менее добился кое-каких результатов.
Скринмейтом полученное творение назвать нельзя, т.к. форма окна и картинка меняется по нажатию клавишь ВВЕРХ, ВНИЗ, выход на Escape. Ну естественно анимации нет. Картинку выдрал из другого скринмейта

Так вот, теперь собственно о проблеме:
При нажатии клавиш вызывается функция RePaint, которая выводит на окошко другую картинку и устанавливает новую форум окна посредством SetWindowRgn, но тут не все просто, у меня почему то она не всегда меняет форму окна. И тут нет проблем с неправильно заданым регионом и т.д.
Получается что когда мотаешь картинки и форму окна на кнопки ВВЕРХ/ВНИЗ, картинки меняются всегда, а вот форма иногда подтупливает и остается прежняя
Картинки и формы(регионы) заданы в двух разных массивах.

Прикрепляю архив с компиленным бинарником и исходниками

Код функции RePaint (может в ней проблема?)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void RePaint()
{
    PAINTSTRUCT ps;
    HDC hdcBits;
    HDC hdc;
    SetWindowRgn(hWnd, mask[ind_image], true);
    hdc = BeginPaint(hWnd, &ps);
    hdcBits=::CreateCompatibleDC(hdc);
    SelectObject(hdcBits, bAr[ind_image]);
    BitBlt(hdc, 0, 0, 50, 50, hdcBits, 0, 0, SRCCOPY);
    DeleteDC(hdcBits);
    EndPaint(hWnd, &ps);
    //InvalidateRgn(hWnd, mask[ind_image],false);
    InvalidateRect(hWnd, 0, false);
    return;
}
0
Вложения
Тип файла: zip screenmate(source and binary).zip (127.2 Кб, 56 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2009, 09:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос screenmate: SetWindowRgn - не всегда меняет форму окна (C++):

Открытие (окна) второй формы всегда по центру относительно первой (формы) - C++ Builder
Форма №1 - основное окно программы (можно свободно перемещать по экрану). Форма №2 - окно настроек (в нем можно что-то изменить и закрыть;...

Окна меняют форму - C++ Builder
1)Кто подскажет как сделать так что бы при запуске проги все ярлыки и меня пуск убегали от мышки , лучше если сразу листинг я по ним лучше...

Какой стиль окна отвечает за то, что оно всегда активно, пока в него не ввести текст? - C++ WinAPI
Друзья! Есть программка. Там есть всплывающее окно. Пока в него текст не введёшь, все остальные окна этой программы неактивны и при тыкании...

Изменить форму окна - C++ WinAPI
Здраствуйте. Я пишу программу на WIN API в VC++2008. Вопрос такой: как изменить форму окна, чтобы был не прямоугольник, а скажем, например...

Открыть форму главного окна - C++ WinAPI
Доброго времени суток. Подскажите как в visual 2013 открыть форму главного окна, чтобы туда я мог добавить пару кнопок. Созданные мной...

кнопка меняет форму - HTML, CSS
помогите пожалуйста нужно на сайте сделать кнопку которая при наведении на нее или нажатии меняет форму. объясните как это вообще можно...

1
IvanG
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 5
03.11.2009, 14:40  [ТС] #2
Присмотрелся к этой проблем получше и выяснил, что по одному и тому же региону (HRGN), функция SetWindowRgn не изменяет форму окна больше 1го раза...
Кто-нить знает как с этим бороться?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2009, 14:40
Привет! Вот еще темы с ответами:

Элемент меняет форму при сжатии экрана - HTML, CSS
Есть элемент nav позицианирован как nav{ position: absolute; top: 361px; left: 476px; font-family: arial; font-size: 10pt; ...

Фризы в винде, курсор меняет цвет и форму - Компьютерное железо
Конфигурация компа - из этой конфигурации поменял я оперативку и хард. Всем привет! Итак недавно я избавился от одной проблемы (долго...

SetWindowText не меняет заголовок окна стороннего приложения - Visual Basic .NET
Здравствуйте, я хочу поменять заголовок окна приложения: Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA"...

Построение движущегося окна, которая меняет цвет - Matlab
Всем доброго времени суток))) дали задание Нарисовать движущееся окно, которое меняет цвет. Траектория движения : в центре монитора...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru