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

Как сделать "Старт", "Пауза", Стоп"? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ ребус http://www.cyberforum.ru/cpp-beginners/thread746515.html
# include <iostream> # include <stdio.h> # include <conio.h> # include <math.h> using namespace std; int main() {int d=0,r=0,u=0,g=0,s0,s1,sum; cout <<"Rebus"; do { * do { * * * if(r==d) continue; do { * * * * * if((u==d) || (u==r)) continue; do { * * * * * * if((g==d) || (g==r) || (g==u)) continue; * * * * * * s0=((d*1000)+(r*100)+(u*10)+g); * * * * * * s1=((g*1000)+(u*100)+(r*10)+d); * * * * *...
C++ Как правильно перегружать унарный минус? Дайте правильный прототип перегрузки унарного минуса. http://www.cyberforum.ru/cpp-beginners/thread746508.html
Деление длинного на длинное C++
#ifndef INTEGERLONGS_HPP_INCLUDED #define INTEGERLONGS_HPP_INCLUDED //================================================================================================= namespace Longs { class TInteger; }; //================================================================================================= class Longs::TInteger {
C++ Как переделать эту прогу в шаблон классов "Двусвязный список" произвольных элементов
#include <iostream.h> #include <stdlib.h>2 #include <conio.h> using namespace std; struct Element { public: double data; //сами данные
C++ Контейнеры STL и виды деревьев http://www.cyberforum.ru/cpp-beginners/thread746500.html
подскажите, или покажите где есть эта информация например я знаю, что контейнеры map и set реализованы через красно-черное дерево через "какие" деревья\другие структуры данных реализованы остальные контейнеры? vector, string, list, etc и по каким причинам(от деревьев и их "родных" структур данных) один контейнер лучше другого по каким-либо параметрам. Векторы являются неэффективными для...
C++ простые числа от 1 до 10000 Написать программу, которая выводит на экран все простые числа в диапазоне от 1 до 10000 и находит их количество. подробнее

Показать сообщение отдельно
Avazart
Эксперт С++
7148 / 5325 / 276
Регистрация: 10.12.2010
Сообщений: 23,574
Записей в блоге: 17
07.01.2013, 00:14
Цитата Сообщение от kravam Посмотреть сообщение
базара нет, если я где-то сказал, что будет синхронизация с потоком окна- покажи мне это.
Цитата Сообщение от kravam Посмотреть сообщение
Вот когда будут GDI-функции, тогда и будем разоваривать. И синхронизация будет и всё на свете.
Вообще то я говорил про именно синхронизацию и именно при перерисовке... да и TC просил именно рисование т.е. GDI ( собственно GDI было и в его примерах если вы не заметил )

Так что с базара не съежай...

Цитата Сообщение от kravam Посмотреть сообщение
ну то на то и вышло. У тебя нет синхронизации и у меня нет. Но у меня-то нет осмысленно, а у тебя потому, что билдер не написал синхронизацию.
У меня осмысленно есть синхронизация и есть собственно рисование ...
C++
1
2
3
Form1->Canvas->Lock();
// ... рисование
Form1->Canvas->Unlock();
Цитата Сообщение от kravam Посмотреть сообщение
да он сказал не подумав, а ты повторяешь.
В pthread для корректного завершения потока предусмотрено:
асинхронное аннулирование- ну это немедленно (то есть не корректное, а так себе)
Да собственно речь как раз и шла о не корректном завершении, и я писал же о
хотя не уверен в работе pthread, но думаю он вызывает TerminatedThread() что плохо
Добавлено через 18 минут
Цитата Сообщение от kravam Посмотреть сообщение
Впрочем прикола ради- ты бы показал, что ли, что ты писал руками. Может заценю в натуре брошу всё и перейду на билдер.
Ок ...

TMyThread.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//---------------------------------------------------------------------------
#ifndef TMyThreadH
#define TMyThreadH
//---------------------------------------------------------------------------
#include <System.Classes.hpp>
//---------------------------------------------------------------------------
class TMyThread : public TThread
{
private:
    TRect Rect;  /* Добавил  Область в котрой бегает кривая*/
    TPoint P1;    /* Добавил   начальная точка*/
    TPoint P2;    /* Добавил  конечная точка */
    TColor Color; /* Добавил  цвет кривой*/
 
protected:
    void __fastcall Execute(); 
    void __fastcall Paint();  /* Добавил  только что бы показать  как пользоваться Synchronize() */
public:
    __fastcall TMyThread(bool CreateSuspended);
    __fastcall TMyThread(bool CreateSuspended,TPoint P,TRect Rect,TColor Color); /* Добавил  */
};
//---------------------------------------------------------------------------
#endif
Итого 4 строчки полей и 1 строчка конструктора

TMyThread.cpp
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
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
 
#include "TMyThread.h"
#include "Unit1.h"
#include <time.h> /* Добавил для рандома */
 
#pragma package(smart_init)
//---------------------------------------------------------------------------
__fastcall TMyThread::TMyThread(bool CreateSuspended)
    : TThread(CreateSuspended)
{
}
//--------------------------Далее мой  конструтор с инитом полей ------------------------------------
__fastcall TMyThread::TMyThread(bool CreateSuspended,TPoint P,TRect Rect,TColor Color)
    : TThread(CreateSuspended)
{       
    this->Rect= Rect;  
    this->P1= P;  // Начальная точка  
    this->Color= Color; 
}
//---------------------------------------------------------------------------
void __fastcall TMyThread::Execute()
{  // вписал тело потока
    while(!Terminated) // если поток не останавливаем
     {      // не хитрый рандом
         srand(P1.x+P1.y+time(0)); 
         P2.x= rand()%Rect.Width()+Rect.Left;
         P2.y= rand()%Rect.Height()+Rect.Top;
         Sleep(100); // ЖдемС имитируя грамосткие вычисления ...
                  /* Далее рисование с синхронизацией */
         // Synchronize(&Paint);  что бы показать  Synchronize()
         Form1->Canvas->Lock(); // блокирование канвы
         try    
            {     // рисование
                Form1->Canvas->MoveTo(P1.x,P1.y); // рисуем от  СюДва
                Form1->Canvas->Pen->Width= 5; // толщина линии
                Form1->Canvas->Pen->Color= Color; // Цвет линии
                Form1->Canvas->LineTo(P2.x,P2.y); // до СеЛи
            }
         __finally //  полюбЭ разблокируем  
            {
                 Form1->Canvas->Unlock();
            }
 
         P1= P2; // конец последней точки становится началом
     }
}
//--------------------Это можно не писать если не юзать Synchronize() -----------------
void __fastcall TMyThread::Paint()
{
    // Альтернатива   Canvas->Lock() / Canvas->Unlock();
    Form1->Canvas->MoveTo(P1.x,P1.y);
    Form1->Canvas->Pen->Width= 5;
    Form1->Canvas->Pen->Color= Color;
    Form1->Canvas->LineTo(P2.x,P2.y);
}
//---------------------------------------------------------------------------
Тут конечно строк по более но и задумка куда по более вашей ...
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru