Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Быки и коровы http://www.cyberforum.ru/cpp/thread60712.html
Доброе время суток. Пользователь загадывает число из 4 цифр, каждая из которых от 1 до 6, причем все цифры различны. Разработать алгоритм, который угадывает число по следующим правилам: выводится число и пользователь сообщает, сколько в нем "быков" и "коров", т.е. сколько цифр стоят на своих местах и сколько цифр содержатся в обоих числах, но совпадают лишь по значению. Например, пусть загадано...
C++ Вопрос о типах данных С++ Всем привет! У меня путаница вышла со всем этим разнообразием типов данных в С++. Вообще, тип long double должен занимать 3 машинных слова (или 12 байт). Но вот когда я пишу : #include <iostream.h> #include <cstddef> void main() { long double qq=10; size_t qwer=sizeof qq; cout <<qwer <<endl; http://www.cyberforum.ru/cpp/thread60672.html
C++ Инициализацию DirectDraw
Ув.Программисты помогите пожайлусто. Изучаю книгу "Фленов - DirectX и C++ Искусство программирования" Перешел к главе Инициализацию DirectDraw вот код: ddfunc.h #define _DDFUNC_H_ #include "d3dx9math.h" #include "ddraw.h" //Функция инициализации Direc3D // Функция инициализации Direct3D HRESULT DXDDInit(IDirectDraw7 **ppiDD,
Вывод повторяющихся слов текста из файла C++
Написать программу на Си, которая считывает текст из файла и записывает каждое слово в отдельный элемент массива. Вывести на экран: а) посчитать и вывести на экран количество вхождений каждого слова в текст, б) вывести 5 наиболее часто встречающихся слов. Размер массива должен определяться автоматически на основе данных, находящихся в файле Набросал вывод каждого слова и избавление от знаков...
C++ Доступ к protected членам базового класса http://www.cyberforum.ru/cpp/thread60380.html
Здравствуйте, форумчане! Ниже приведенный код при компиляции вызывает следующую ошибку: error C2248: 'Element::AddTo' : cannot access protected member declared in class 'Element' element.cpp 21. Всю жизнь считал, что protected члены базового класса доступны для производных классов. Разъясните, это я дурак, или лыжи не едут? #include <iostream> class Element {
C++ Подскажите решение... Доброе время суток! Имеются числа А1,А2,...,АN и B1,B2,...,BN. Составить из них N пар (Аi, Bj) таким образом, чтобы сумма произведений пар была максимальна (минимальна). Каждое Ai и Bj в парах встречаются ровно по одному разу. Возможно пригодится: Чтобы сумма произведений пар была максимальна (минимальна) необходимо упорядочить наборы A и B одинаковым (различным) образом и пары будут составлять... подробнее

Показать сообщение отдельно
IvanG
0 / 0 / 0
Регистрация: 03.11.2009
Сообщений: 5

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

03.11.2009, 09:58. Просмотров 1361. Ответов 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;
}
Вложения
Тип файла: zip screenmate(source and binary).zip (127.2 Кб, 55 просмотров)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 02:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru