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

HRGN, CombineRgn. Программа работает некоторое время и виснит. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создайте программу расчета периметров http://www.cyberforum.ru/cpp-beginners/thread539881.html
Создайте программу расчета периметров (длина окружности для круга) и площади различных фигур (квадрат, треугольник, круга, прямоугольник), рисования фигур с заданными параметрами и выход полученных результатов на экран. Данную программу необходимо реализовать через виртуальные функции getdata(), putdata(), draw(). Исходные данные необходимо получить из главный программы.
C++ Два вопроса от новичка Здравствуйте, читаю книгу Прата С. (5 издание), помогите: Почему эта программа после выполнения закрывается, если ввести строку где посередине будет '#'? (Например: 12345#123, ответ выводит правильно) Вроде в конце стоят доп. cin.get(); почему они не срабатывают...уже ставил и cin.clear(); и пустой счетчик (while) в качестве ожидания. #include <iostream> #include <cstring> #include... http://www.cyberforum.ru/cpp-beginners/thread539856.html
C++ Определить, является ли введенный с клавиатуры символ десятичной цифрой, буквой или другим символом
Написать программу, выводящую на экран сообщение является ли введенный с клавиатуры символ десятичной цифрой, буквой или другим символом. Основная программа запрашивает символ, вызывает функцию и в зависимости от возвращенного значения выводит сообщение. Функция возвращает 1 если символ числовой, 0 если буквенный и -1 для остальных символов.
Дано символ C - исходная ориентация локатора и целые числа N1 и N2 - две посланные команды. Вывести ориентацию после выполнения этих команд C++
Здравствуйтевот само условие в C++ сколкьо думал,сам то я начинающий но к правильному решению прийти немогу,прошу помощи. Локатор Ориентированный на одну из сторон света ("W" - заход, "E" - сход, "N" - север, "S" - восток) и может принимать три цифровые команды поворота: 1 - на лево, 2 - на право, 3 - на 180 "градусов"). Дано символ C - исходная ориентация локатора и целые числа N1 и N2 - две...
C++ Учебник visual c++ для студента http://www.cyberforum.ru/cpp-beginners/thread539760.html
Всем добрый день. Поднимаю полностью избитую тему, нужен хороший учебник. Я пишу на visual studio 2010, типы проектов win32 console aplication(принципиально), пишу базовые программы, использую только стандартные библиотеки. Пробовал читать некоторые учебники, которые либо содержали голый код с минимумом комментариев, либо отвлечённые фразы. Хочется книгу по делу(не десятки страниц с темами...
C++ if then else => на срр begin if i=0 then a:=b*(c0-d0) else if i=nx then a2:=b2*(c0-d0) else x1:=by*(y0-y0)-ay*(y0-y0); как этот фрагмент будет выглядеть на с++? подробнее

Показать сообщение отдельно
Deimon
 Аватар для Deimon
34 / 34 / 2
Регистрация: 29.08.2009
Сообщений: 178
06.04.2012, 13:29     HRGN, CombineRgn. Программа работает некоторое время и виснит.
Задача: искать пересечения регионов и подсчитывать их.
В итоге: программа компилится, работает, работает...а потом виснит (своеобразно) При чем время до зависания напрямую зависит от скорости наступления события OnTime Таймера.
Помогите понять что вызывает такой эффект. Я не очень понимаю как устроена структура регионов и может быть я делаю с ними то, чего не стоило бы делать



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
57
58
59
60
61
62
63
64
65
66
67
68
//Unit1.h
struct GPS
{
    short x;
    short y;
};
enum NAMEOBJECT
{
    PLAYER = 0,
    SOLDER
};
void ShowRegionByName(HRGN hRgn, GPS gps, NAMEOBJECT name) {
 
 
    switch (name)
    {
        case PLAYER :
            break;
        case SOLDER :
            TPoint tp[29];
            tp[0] = TPoint(21,0);
            tp[1] = TPoint(30,0);
            tp[2] = TPoint(34,5);
            tp[3] = TPoint(34,11);
            tp[4] = TPoint(30,14);
            tp[5] = TPoint(37,8);
            tp[6] = TPoint(37,33);
            tp[7] = TPoint(34,44);
            tp[8] = TPoint(31,72);
            tp[9] = TPoint(34,77);
            tp[10] = TPoint(34,60);     //
            tp[11] = TPoint(26,60);     //
            tp[12] = TPoint(28,60);      //
            tp[13] = TPoint(25,60);      //
            tp[14] = TPoint(25,64);
            tp[15] = TPoint(21,72);
            tp[16] = TPoint(20,60);      //
            tp[17] = TPoint(19,69);      //
            tp[18] = TPoint(11,68);      //
            tp[19] = TPoint(12,54);      //
            tp[20] = TPoint(13,78);
            tp[21] = TPoint(14,65);
            tp[22] = TPoint(10,63);
            tp[23] = TPoint(3,68);
            tp[24] = TPoint(7,58);
            tp[25] = TPoint(13,46);
            tp[26] = TPoint(17,20);
            tp[27] = TPoint(21,17);
            tp[28] = TPoint(18,4);
            hRgn = CreatePolygonRgn(tp,29,WINDING);
            OffsetRgn(hRgn, gps.x, gps.y);
            break;
 
    }
 
 
}
 
int result;
bool RegionX(GPS pos, NAMEOBJECT name) {
    HRGN temp, temp1, temp2;
    ShowRegionByName(temp1,pos,name);
    GPS poss;
    poss.x = Random(100);
    poss.y = Random(100);
    ShowRegionByName(temp2,poss,SOLDER);
    return CombineRgn( temp,temp1,temp2,RGN_AND);
}
C++
1
2
//OnCreate(Form1)
result = 0;
C++
1
2
3
4
5
6
7
8
9
10
11
//OnTime (Timer1)
    for (int i = 0; i < 100; i++) {
        GPS newpos;
        newpos.x=Random(100);
        newpos.y=Random(100);
        if (RegionX(newpos,SOLDER))
        {
            result++;
        }
    }
    Form1->Caption= result;
Добавлено через 3 часа 58 минут
Объясните кто-нибудь, почему в таком примитивном и явном примере возвращяет false
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    HRGN temp;
    HRGN temp1;
    HRGN temp2;
 
 
 
    temp1 = CreateRectRgn(10,10,100,100);
    temp2 = CreateRectRgn(20,20,110,110);
 
           bool BOOL = (bool)CombineRgn(temp,temp1,temp2,RGN_AND);
    DeleteObject(temp);
    DeleteObject(temp1);
    DeleteObject(temp2);
    ShowMessage(BoolToStr(BOOL));
Добавлено через 17 часов 7 минут
черт с той задачей, объясните фокус с последним кодом
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 21:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru