![]() |
Тестирование, на Visual C++
Нужно создаться тест. Вопрос и 4 или более вариантов ответов. Никаких заморочек не надо.
Не хочу плодить много форм (надо 10 вопросов), поэтому решил после каждого вопроса менять подписи у Radio Box'а и сам вопрос в Edit Box'е, т.е. всё будет на одной форме, но её содержание будет меняться по ходу выполнения программы. Однако тут появилась трабла - после ответа на первый вопрос, события Radio Box'ов перестаются работать. Может можно как-то обновить окно или ещё что? Вот код: Код:
#include "stdafx.h" |
Цитата:
И вообще у тебя ошибка в логике в функции void CTestDualityProblem_2::OnButtonNext(). В каждом условии стоит в конце стоит temp++ и получается так, что за один вызов этой функции все условия выполняются по порядку. Вот так будет лучше: Код:
void CTestDualityProblem_2::OnButtonNext() |
Вложений: 1
Да, ошибку в логике я потом сам нашёл, после публикации этой темы. :p
Однако дело не в этом. Попытаюсь объяснить, что происходит при выполнении программы: Окно с заголовком "Вопрос 1 из 10". Выбираю один из Radio Box'ов, жму кнопку "Далее". Ничего не меняется. :confused: Жму ещё раз "Далее" - содержание окна меняется (меняются подписи у Radio Box'ов и Edit Box'а), заголовок теперь "Вопрос 2 из 10". Далее снова жму кнопку - окно меняется на третий вопрос... Т.е. получается, что после первого нажатия кнопки, содержание окна почему то не изменяется, но результаты в файл записываются правильно. Полагаю, что трабла пустиковая и абсолютно бестолковая... :) Попутный вопрос: как убрать пометку у Radio Box'а? А то при переходе к следующему вопросу, в окне остаётся включённым ответ на предыдущий. Это не правильно. :) Если мой проблема не понятно, то смотри вложение, там весь исходный код. |
Вложений: 1
Ты опять же запутался в построенной тобой логике и невнимательно посмотрел мой код :p . Смотри: Когда ты нажимаешь кнопку Next, то у тебя проверяет значение test, далее обрабатывает это значение, а именно, проверяет q и записывает результат в файл, ну а затем нужно обновить данные в полях. А у тебя получается, к примеру, если test == 1 то при нажатии кнопки Next он проверяет q и записывает в файл, а затем test++. Затем, при следующем нажатии Next у тебя проверяет test, который равен 2, обрабатывает, проверяет q, записывает в файл результат, а затем только выводит 2 вопрос! Посмотри код в моем предыдущем топике повнимательнее.
Я бы на твоем месте сделал по другому: обновление полей текста вопроса и ответов зарядил в OnPaint, в зависимости от значения test. Смотри вложение. Снятие пометок чекбоксов тамже. |
Млин, так и думал, что всё просто. :rolleyes:
Огромное спасибо! :молись: Теперь я задался другим вопросом. После ответов на все вопросы, в конце хочу, чтобы показывался итоговый результат. В принципе, это не проблема, но... При ответе на каждый из вопросов, я записываю номер ответа, сам ответ и его "правильность" в файл, плюс ещё в начале имя отвечающего, т.е. файл в итоге будет выглядеть примерно так: -------------------------------------------- SuperMan вопрос 1: "Helicopter" - правильно вопрос 2: "Tracy McGrady" - не правильно ... итог: тест пройден -------------------------------------------- С записью всего этого в файл тоже проблем нет, разберусь. :cool: Однако как потом считать всё это и отобрать только то, что относится к текущему ответчику (в файле будет содержатся инфа не только об одном ответчике)? Ввод имени отвечающего у меня производится в другой форме (в предыдущей). Получается нужно в начале считать из файл последнюю строку (имя) в какую-нибудь переменную, перед тем, как начать отвечать на вопросы, затем считать весь файл, найти ранее считанное имя и вывести на экран всё, что идёт после этого имени (включая само имя). :help: :confused: :eek: :idontnow: :) Как вообще считать строку? :rolleyes: Может можно как-то проще всё сделать? Уж извиняйте меня, но новичок я в Visual Cpp... Вспомнил ещё вопрос: Можно ли как-то вытащить подпись у помеченного Radio Box'а (выбранного варианта)? Понимаю, что можно так (для первого вопроса): Код:
char answer[20]; |
| Часовой пояс GMT +4, время: 10:41. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.