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

Потоки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Контейнер для файлов http://www.cyberforum.ru/cpp-beginners/thread340466.html
Всем привет, у меня вопрос. Вот у меня есть файл формата допустим *.dat, как мне в этот файл засунуть файлы формата допустим *.jpg? Пожлуйста помогите, очень надо.
C++ Сравнить строки и по количеству символов, и по коду народ какая функция строки сравнивает, и по количеству символов, и по коду strcmp - как-то плохо сравнивает у меня строка "9" больше строки "333" http://www.cyberforum.ru/cpp-beginners/thread340461.html
Инициализация вектора в стиле С++0х C++
У меня связка последний Code::Blocks+ последний minigw, но в коде вот такая инициализация вектора: vector<int> ar={1,2,3,4,5,6}; почему-то не работает, притом что остальные фичи от C++0x которые я...
C++ вопрос из С++ для специалистов
По скольку я не могу задавать вопросы в разделе С++ для специалистов,задаю его здесь Была тема Написать функцию, определяющую содержит ли односвязный список циклы (например, последний ссылается...
C++ Вопрос чайника http://www.cyberforum.ru/cpp-beginners/thread340411.html
Что означают эти значки (в с++!!!!) : 1) :: 2) -> где они используються и зачем они нужны, скажите простым человеческим языком
C++ Произведение матриц O(n^2) Кто нибудь может скинуть код произведения матриц со сложностью O(n^2)? Никак не получается решить задачу со стандартной функцией, Time Limit ( подробнее

Показать сообщение отдельно
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
09.08.2011, 20:19
bambino, тебе нужен вывод для видимой области консольного окна, синхронизация вообще здесь не нужна если вывод едёт весь в одном потоке, для текущего можно осуществлить ввод.
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <windows.h>
#include <time.h>
#define  MAX_DOGS   5
 
HANDLE hout;
bool   tabort = true;
 
 
DWORD __stdcall Thread(LPVOID);
void  Draw(COORD pos, WORD color, TCHAR sign);
void  Clear(COORD pos, TCHAR sign);
void  InitObj(COORD* pos, UINT size, SHORT width);
 
 
int main(void){
 
    HANDLE  thread;
    DWORD   tid;
    hout     = GetStdHandle(STD_OUTPUT_HANDLE);
 
    CONSOLE_SCREEN_BUFFER_INFO  info;
    ZeroMemory(&info, sizeof(CONSOLE_SCREEN_BUFFER_INFO));
    GetConsoleScreenBufferInfo(hout, &info);  // получения размера буфера консоли
 
    thread = CreateThread(NULL, 0U, Thread, (LPVOID)&info, THREAD_PRIORITY_NORMAL, &tid);
 
    // при нажатие на клав-escape выход
    while(! GetAsyncKeyState(VK_ESCAPE));
    tabort = false;
    Sleep(100u);
    CloseHandle(thread);
    return 0;
}
 
// поток для рисования собак
DWORD __stdcall Thread(LPVOID param) {
   CONSOLE_SCREEN_BUFFER_INFO  info = *(CONSOLE_SCREEN_BUFFER_INFO*)param;
   COORD  obj[MAX_DOGS], tmp;
   int i;
   InitObj(obj, MAX_DOGS, info.dwSize.X);
 
   while(tabort) {
 
      for(i = 0; i < MAX_DOGS; i++) { // цикл по всем собакам
          tmp  = obj[i];
          obj[i].Y++;
          Draw(obj[i], 12, '@');
          Clear(tmp, ' ');
          //   SetConsoleCursorPosition(hout, obj[i]);
          if(obj[i].Y >= 28 /*info.dwSize.Y*/) {  
                Clear(obj[i], ' ');
                InitObj(&obj[i], 1, info.dwSize.X);
                break;
          }
      }
 
      Sleep(100u); 
   }
   ExitThread(0u);
   return 0;
}
 
// расстановка координат собак
void  InitObj(COORD* pos, UINT size, SHORT width) {
     srand(time(NULL));
     width--;
     while(size--) {
       (*pos).X = rand() % width;
       (*pos).Y = -rand() % 4;
       ++pos;
     }
}
 
// функция для рисования символа
void    Draw(COORD pos, WORD color, TCHAR sign) {
    DWORD dw = 0u;
    WriteConsoleOutputCharacter(hout, &sign,  1, pos, &dw);
    WriteConsoleOutputAttribute(hout, &color, 1, pos, &dw);
}
 
// функция для затирания символа
void  Clear(COORD pos, TCHAR sign) {
    DWORD dw = 0u;
    FillConsoleOutputAttribute(hout, 0,    1, pos, &dw);
    FillConsoleOutputCharacter(hout, sign, 1, pos, &dw);
}
Сейчас я с похмелья голова побаливает.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru