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

PW_PAINT: переполнение счетчика - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Добавить элемент в конец списка http://www.cyberforum.ru/cpp-beginners/thread562042.html
написал две функции, add заполняет список, а функция add1 добавляет элемент в конец списка, помогите разобраться с функцией add1 void add1(void) {pt=new magazin; int d; while (true){ if (pg->next==NULL) break; pg=pg->next; } pt=pg;
C++ Код Хаффмана Здравствуйте! Нужна ваша помощь.. Нашла архиватор, работающий по алгоритму Хаффмана. Создала файл text.txt с набором букв на английском и различных знаков. Поместила в папку с программой. Код программы: #include <iostream> #include <fstream> #include <vector> #include <string> #include <queue> #include <algorithm> http://www.cyberforum.ru/cpp-beginners/thread562009.html
Как в Visual Studio 2010 развернуть окно выполнения программы на весь экран? C++
Создаю в Студии 2010 консольное приложение. Запускаю программу F5. Появляется маленькое чёрное окошко и в нём выводятся нужные мне числа. У окошка вверху справа есть 3 стандартные кнопки: Свернуть, Развернуть и Закрыть. Но когда я нажимаю Развернуть, то окно становится размером не во весь экран, а только вполовину. Это так и задумано? Или можно как-то во весь экран его растянуть?
C++ Приведение типов.
Доброго времени суток! В общем, есть класс Matrix(прямоугольные над полем вещ. чисел). Необходимо реализовать приведение типов Matrix -> double и double -> Matrix. Значит, как я пытаюсь это сделать: class Matrix{ private: double** data; //.. public: //... Matrix& operator =(double a);
C++ графический вывод бинарного дерева http://www.cyberforum.ru/cpp-beginners/thread561993.html
Имеется текст проги создающей и выводящей бинарное дерево, но вывод дерева происходит горизонтально. Как сделать вывод в нормальном "древесном виде"? //Ïðîãðàììà ôîðìèðóåò äåðåâî èç ìàññèâà öåëûõ ÷èñåë è âûâîäèò åãî íà ýêðàí //root - êîðåíü äåðåâà #include <iostream.h> #include <conio.h> struct Node{ int d; //Äàííûå ýëåìåíòà Node *left; //Ññûëêà íà ëåâîå...
C++ Cуществует более одного экземпляра перегруженная функция pow При написание программы про решение задачи, выдает ошибку связанную с функцией pow. Подскажите как ее исправить. #include<stdio.h> #include<math.h> int main() { float x, y, z, a, b; printf("enter x, a, b;\n"); scanf("%f%f%f" , &x, &a, &b); y= log (((x-3)+4) /(x*x+12)); float m= pow(y+5,1.0/3); z=(m+a) / (sin (b)+m); подробнее

Показать сообщение отдельно
DU
1482 / 1058 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
30.04.2012, 13:51     PW_PAINT: переполнение счетчика
Не знаю в чем конкретно там у вас косяк, расскажу что я считаю неверным.
Сперва термины:
состояние - это координаты объекта, его положение и т.п.
Так вот у вас состояние изменяется при обработки сообщения о перерисовки. Это неверно.
Состояние должно менятся с течением времени, т.е. при событии от таймера. После смены в обработке этого же собития нужно инициировать перерисовку этого состояния. Обработка WM_PAINТ должна заключатся только в отрисовке текущего состояния.
А у вас еще там Sleep на 50 милисекунд вставлен. В течении этого времени основной поток засыпает и вообще не может ничего делать. В добавок к этому сообщения от таймера идут в частотой в 10 милисекунд, что в 5 раз меньше чем время засыпания. Деталей обработки сообщений я не знаю, но если вдруг просле пробуждени потока система понимает, что она за это время должна была сгенерить пять сообщений от таймера, она может захотеть послать все пять штук подряд. А каждое из них в свою очередь провоцирует событые WM_PAINT в котором поток опять засыпает. Что там при этом с очередью сообщений будет я тоже не знаю. Может новые сообщения просто не добавляются в очередь, может еще как-то.
Короче попробуйте такую схемку:

C++
1
2
3
4
5
6
7
8
case WM_TIMER:
  ChangeState();
  InvalidateRect(); // перерисовка случится при первой же возможности
  break;
 
case WM_PAINT:
  JustRedrawCurrentState(); // Без всяких Sleep, без изменения состояния и т.п.
  break;
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru