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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Deimon
35 / 35 / 2
Регистрация: 29.08.2009
Сообщений: 178
#1

Не работает RectInRegion (HRGN, TRect), при явном пересечении возвращает ноль - C++

03.04.2012, 09:24. Просмотров 372. Ответов 0
Метки нет (Все метки)

Вот так вот обрубок кода (пишу в билдере, потому без main) Работает, компилируется без проблем. Но Сообщение не выводит что есть пересечние. Чувствую, что глупая ошибка, но не пойму где Буду рад любой помощи.

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
    class CObject
    {
        private:
            HRGN m_hRgn;
            TRect m_rect;
        public:
            CObject()
            {
                TPoint array[4];
                array[0]=TPoint(0,0);
                array[0]=TPoint(50,0);
                array[0]=TPoint(0,100);
                array[0]=TPoint(50,100);
                CreatePolygonRgn(array,4,WINDING);
                m_rect = TRect(0,0,50,100);
            }
            TRect ShowRect(void)
            {
                /*return TRect(m_rect.Left,
                            m_rect.Top,
                            m_rect.Right,
                            m_rect.bottom); */
                return m_rect;
            }
            HRGN ShowRgn(void)
            {
                return m_hRgn;
            }
    };
 
    class CBot
    {
        private:
            CObject m_obj;
 
        public:
            TRect* ShowRect(void)
            {
                return &m_obj.ShowRect();
            }
            HRGN ShowRgn(void)
            {
                return m_obj.ShowRgn();
            }
 
    };
    CBot bot;
    if (RectInRegion(bot.ShowRgn(),bot.ShowRect())) {
        ShowMessage("yes");
    }
Добавлено через 9 часов 57 минут
Немного изменил код, (забыл про присваивание функцией CreatePolyRegion переменной m_hRgn) Но все еще не выскакивает ни каких сообщений В чем может быть дело?
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
class CObject
    {
        private:
            HRGN m_hRgn;
            TRect m_rect;
            TPoint array[4];
        public:
            CObject()
            {
 
                array[0]=TPoint(0,0);
                array[0]=TPoint(50,0);
                array[0]=TPoint(0,100);
                array[0]=TPoint(50,100);
                m_hRgn = CreatePolygonRgn(array,4,WINDING); // добавлено m_hRgn =...
                m_rect = TRect(0,0,50,100);
                if (RectInRegion(ShowRgn(),ShowRect())) 
                                             {
                    ShowMessage("yes");
                }
            }
            TRect* const ShowRect(void)
            {
                return &TRect(m_rect.Left,
                            m_rect.Top,
                            m_rect.Right,
                            m_rect.bottom);
 
            }
            HRGN ShowRgn(void)
            {
                return m_hRgn;
            }
    };
 
    class CBot
           {
        private:
                                  CObject m_obj;
 
        public:
            TRect* ShowRect(void)
            {
                return m_obj.ShowRect();
            }
                                  HRGN ShowRgn(void)
            {
                                             return m_obj.ShowRgn();
            }
 
    };
    CBot bot;
    if (RectInRegion(bot.ShowRgn(),bot.ShowRect())) 
           {
        ShowMessage("yes");
    }
Добавлено через 3 минуты
Я дибил
C++
1
2
3
4
5
6
7
8
9
10
                array[0]=TPoint(0,0);
                array[0]=TPoint(50,0);
                array[0]=TPoint(0,100);
                array[0]=TPoint(50,100);
 
                array[0]=TPoint(0,0);
                array[1]=TPoint(50,0);
                array[2]=TPoint(0,100);
                array[3]=TPoint(50,100);
//и не забыть присваивать
Сори за флуд.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2012, 09:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не работает RectInRegion (HRGN, TRect), при явном пересечении возвращает ноль (C++):

При нахождении количества локальных максимумов в последовательности for_each возвращает ноль - C++
Задание: Найти количество локальных максимумов в последовательности с помощью for_each. #include <iostream> #include <algorithm> ...

HRGN, CombineRgn. Программа работает некоторое время и виснит. - C++
Задача: искать пересечения регионов и подсчитывать их. В итоге: программа компилится, работает, работает...а потом виснит (своеобразно)...

Дана матрица 5х5, поменять местами строку и столбец, на пересечении которых находится ноль - C++
Дана матрица 5х5, поменять местами строку и столбец, на пересечении которых находится ноль. for (i=0;i<5;i++) { for...

GetPrivateProfileInt всегда возвращает ноль - C++
Хотел считывать значение из INI-файла, но столкнулся с такой проблемой: #include <Windows.h> #include <iostream> #include...

fwrite, возвращает ноль, хотя... - C++
FILE *h; if ((h = fopen("1.p", "w")) == NULL) {printf("Can't create 1.p.\n");exit(1);} char buff; k+=size; ...

Вторая форма возвращает ноль при закрывании - C#
Добрый вечер. При клике на первой форме появляется вторая. На второй есть две кнопки, при нажатии на первую кнопку, первой форме...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2012, 09:24
Привет! Вот еще темы с ответами:

Поменять местами строку и столбец матрицы, на пересечении которых находится ноль - Pascal ABC
Задан квадратный двухмерный массив. Поменять местами строку и столбец, на пересечении которых находится ноль. Если такого элемента нет, то...

обрезание TRect при рисовании TStringGrid - C++ Builder
Всем привет. Хочу сделать свой компонент на основе стандартного ТStringGrid для отрисовки объединенных ячеек. То-есть переделываю...

Деление с остатком возвращает ноль - Assembler
Написал процедуру для перевода в десятичный символьный вид, а при делении выдает деление на ноль. Нуля нету(по регистру посмотрел)...

Функция (int) возвращает ноль - PHP
Добрый день! Пишу скрипт корзины, столкнулся с таким вопросом. Я делаю изменение кол-ва товара на ajax, что бы без перезагр. и у меня есть...


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

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

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