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

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

Восстановить пароль Регистрация
 
Deimon
 Аватар для Deimon
34 / 34 / 2
Регистрация: 29.08.2009
Сообщений: 178
03.04.2012, 09:24     Не работает RectInRegion (HRGN, TRect), при явном пересечении возвращает ноль #1
Вот так вот обрубок кода (пишу в билдере, потому без 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), при явном пересечении возвращает ноль
Посмотрите здесь:

fwrite, возвращает ноль, хотя... C++
C++ HRGN, CombineRgn. Программа работает некоторое время и виснит.
При компиляции объект cout выводит ноль C++
При нахождении количества локальных максимумов в последовательности for_each возвращает ноль C++
C++ Ввести данные структуры, и если на входе пустая строка, функция возвращает "ноль" (Прокомментировать каждую строку)
C++ Что возвращать при делении на ноль?
GetPrivateProfileInt всегда возвращает ноль C++
Что плохого в явном написании условия в if? C++

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

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

Текущее время: 13:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru