Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2008, 12:25   #1
Иван36
 
Регистрация: 31.03.2008
Сообщений: 4
По умолчанию UpdateData(false) в цикле? вывод числа в Edit box

Простейшая прога в MFC - окошко Edit box и Кнопка на которой:


r=0; // - это переменная edit1 ( int )
while(r<10)
{ r=r+1;
Sleep(500);
UpdateData(false);
}


ожидая увидеть перебор 0-10 вижу только 10 ...?
Иван36 вне форума Ответить с цитированием
Старый 31.03.2008, 12:27   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

попробуйте перерисовать окошко или таймером воспользоваться.
что-то вроде этого:
Код:
// обработчик кнопки
r = 0; // - это переменная edit1 ( int )
SetTimer(100,500,NULL);
...

// у окна на WM_TIMER
void CSssDlg::OnTimer(UINT nIDEvent) 
{
	if (nIDEvent == 100)
	{
		r++;
		UpdateData(false);
		if (r == 10) KillTimer(100);
	}
	else CDialog::OnTimer(nIDEvent);
}

Последний раз редактировалось pu4koff; 31.03.2008 в 12:43.
pu4koff вне форума Ответить с цитированием
Старый 31.03.2008, 13:21   #3
Иван36
 
Регистрация: 31.03.2008
Сообщений: 4
По умолчанию

спасибо - вроде ясно
а в чем причина не работоспособности исходного варианта хочется знать - вроде простейший код для старых машин а тут не пашет....
Иван36 вне форума Ответить с цитированием
Старый 31.03.2008, 14:34   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

ну тут цикл прост и простаивания никакого нет. процесс занят пробеганием по циклу и поэтому вроде как форма не реагирует ни на что. в том числе и не прорисовывается. как-то так. в делфях это обходится вставкой в цикл Application.ProcessMessagesзначит и в си че-нить подобное есть, но я хз что)
pu4koff вне форума Ответить с цитированием
Старый 31.03.2008, 14:39   #5
Иван36
 
Регистрация: 31.03.2008
Сообщений: 4
По умолчанию

slip блокирует оказывается выполнение диалога как понял
Иван36 вне форума Ответить с цитированием
Старый 31.03.2008, 18:33   #6
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
в делфях это обходится вставкой в цикл Application.ProcessMessagesзначит и в си че-нить подобное есть, но я хз что)
Код:
AfxGetThread()->PumpMessage();
Цитата:
Сообщение от Иван36 Посмотреть сообщение
slip блокирует оказывается выполнение диалога как понял
Для того, чтобы нарисовать новое число, Edit1 должен получить сообщение WM_PAINT, которое должна достать из очереди функция GetMessage (либо в CWinApp::Run(), либо в CDialog::DoModal() ), в которую управление попадет только после выхода из текущей функции (видимо здесь это OnBnClicked*****). Именно об этом и пишет pu4koff. Разумеется, такие вещи делать лучше таймером.
B_N вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод в edit текста с переменной NecroSlider Общие вопросы C/C++ 4 29.07.2008 14:42
вывод числа sergei64_89 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 25.05.2008 21:35
Вывод числа lenivec Общие вопросы Delphi 3 10.02.2008 22:45
Вывод столбцов StringGrid в Edit ***СкаЙ*** Помощь студентам 1 04.05.2007 08:16