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

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

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

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

03.04.2012, 09:24. Просмотров 357. Ответов 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);
//и не забыть присваивать
Сори за флуд.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2012, 09:24     Не работает RectInRegion (HRGN, TRect), при явном пересечении возвращает ноль
Посмотрите здесь:
При нахождении количества локальных максимумов в последовательности for_each возвращает ноль C++
C++ HRGN, CombineRgn. Программа работает некоторое время и виснит.
C++ Дана матрица 5х5, поменять местами строку и столбец, на пересечении которых находится ноль
GetPrivateProfileInt всегда возвращает ноль C++
fwrite, возвращает ноль, хотя... C++
C++ Ввести данные структуры, и если на входе пустая строка, функция возвращает "ноль" (Прокомментировать каждую строку)
Что плохого в явном написании условия в if? C++
C++ Что возвращать при делении на ноль?
При компиляции объект cout выводит ноль C++
Не работает функция поиска по имени - возвращает значение 16 C++
C++ Программа работает нормально, но возвращает отрицательное число
Как заставить программу завершаться при делении на ноль? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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