Помочь челу...

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Помочь челу...

Сообщение d3drm » 21.05.2005 (Сб) 1:44

В общем чел попросил сделать ему задания, интернета у него нет, сдать надо в понедельник, а я сегодня утром уезжаю на выходные. Если у кого-нибудь время будет, прошу просмотреть задания и сделать хоть что-нибудь. Будем признательны мы с ним вместе. Вот текст заданий:

Работа 7 (индивидуальное задание А). Вывод в главное окно приложения текста и фигур. Вос­пользовавшись в качестве образца приложением 10-1 из книги [1] (стр. 89) или 5-2 из книги [2] (стр. 165), составьте программу в соответствии с индивидуальным заданием А.
Работа 8 (индивидуальное задание В). Меню. Воспользуйтесь программой из предыдущей работы в качестве заготовки. Включите в проект файлы заголовков и ресурсов. Опишите в файле ресурсов меню в соответствии с индивидуальным заданием и добавьте в приложение обработку сообщений от меню. В каче­стве образца можно воспользоваться приложением 11-1 из книги [1] (стр. 95) или 6-1 из книги [2] (стр. 180) (из которых надо взять только часть, связанную с меню).
Работа 9 (индивидуальное задание С). Модальный диалог в качестве главного окна приложения.
Составьте программу без главного окна, выводящую на рабочий стол Windows при своем запуске модаль­ный диалог с указанными в индивидуальном задании элементами управления. В качестве образца можно воспользоваться приложением 11-1 из книги [1] (стр. 95) или 6-1 из книги [2] (стр. 180) (из которых надо взять только часть, связанную с диалогом). Текст программы будет включать в себя следующие элементы:
• главную функцию WinMain () всего с двумя предложениями - вызовом функции DialogBox () для создания диалогового окна и предложением return 0 для возврата в Windows;
• оконную функцию диалогового окна DlgProc ();
• функции обработки сообщений диалогового окна (в минимальном варианте сообщений WM_INITDIALOG об инициализации диалога и WM_COMMAND от элементов управления диалогового окна; в различных индивидуальных заданиях дополнительно требуется обработка тех или иных сообщений, на­пример, WMCTLCOLORDLG или WMCTLCOLORSTATIC).
Включите в файл ресурсов указанные в индивидуальном задании элементы управления, а в оконную функцию диалогового окна - макросы для обработки дополнительных сообщений. Для каждого обрабаты­ваемого сообщения предусмотрите вызываемую им функцию.
Краткая справка по программным средствам, используемым в этой работе:
1. Общий формат элементов управления, размещаемых в диалоговом окне: CONTROL "текст", идентификатор, "класс элемента", стиль, координаты
2. Возможные классы и соответствующие им стили элементов:
класс STATIC, стили SSLEFT, SSCENTER (для текста), SSICON (для пиктограммы), SSBITMAP (для рисунка), SS_WHITEFRAME, SSBLACKFRAME (для рамки); класс LISTBOX, стили WSVSCROLL, WSBORDER, LBSSORT; класс СОМВОВОХ, стили WSVSCROLL, WS_BORDER, CBSSORT; класс BUTTON, стили BSPUSHBUTTON, BSAUTORADIOBUTTON.
3. Сообщения, которые необходимо обрабатывать, чтобы изменять цвет диалогового окна или элемен­тов управления в нем:
WMCTLCOLORDLG WMCTLCOLORSТАТIС WMCTLCOLORLISTBOX WMCTLCOLQREDIT
Формат функций, обрабатывающих эти сообщения: HBRUSH OnCtlColor.. . (HWND hwndDlg, HDC hdc, HWND hwndCtl, int c)
Здесь:
hwndDlg - дескриптор диалогового окна;
hdc - дескриптор контекста устройства диалогового окна или конкретного элемента в нем. Позволяет изменять, в частности, цвет шрифта или фона под ним;
hwndCtl - дескриптор элемента управления в диалоговом окне;
с - константа, характеризующая тип элемента управления (в программе не используется).
Функции должны возвращать дескриптор кисти, которой красится диалог или элемент в нем.
Если требуется выяснить, от какого элемента управления пришло сообщение, следует сравнивать зна­чение параметра hwndCtl с дескрипторами имеющихся в диалоге элементов управления. Получить значе­ние дескрипторов по известным нам идентификаторам (задаваемым в файле ресурсов) можно с помощью функции GetDlgl tem ().
4. Для заполнения списка символьными строками следует при обработке сообщения WMINITDIALOG организовать цикл с вызовом двух функций: wsprintf () и SendDlgltemMessage () . Первая функция будет преобразовывать выводимые числа в символьную форму и формировать символьную строку, добав­ляемую в список, а вторая - посылать диалогу сообщение LB_ADDSTRING для добавления в список этой строки. Формат вызова функции SendDlgltemMessage ():
SendDlgltemMessage(hwndDlg, idCtl, LB_ADDSTRING, 0, (LPARAM) str);
Здесь:
hwndDlg - дескриптор диалогового окна;
idCtl - идентификатор элемента управления, которому посылается сообщение, в данном случае иден­тификатор списка; :
LBADDSTRING - символическое обозначение посылаемого сообщения (могут быть и другие, напри­мер, LBDELETESTRING);
str - выводимая в список строка.
Работа 10 (индивидуальное задание D). Вывод графика в главное окно приложения. Программа составляется на основе работы 7, но вместо текста и фигур в окно выводится график. В середине главного окна большого размера (600x400 пикселов) нарисуйте горизонтальную и вертикальную оси координат и выведите вокруг этих осей график указанной в задании математической функции. Абсциссы и ординаты точек графика вычисляйте в цикле (число шагов цикла указано в задании); абсцисса будет обозначать но­мер пиксела по горизонтальной оси, ордината - номер писксела по вертикальной оси. Каждую точку гра­фика рисуйте небольшим цветным квадратиком размером в 2-3 пиксела. Не забудьте сдвинуть график в середину окна так, чтобы он правильно изображался относительно начала координат; при этом переверните его относительно горизонтальной оси, поскольку вертикальная нумерация пикселов в окнах Windows начи­нается от верхнего края окна, а не от нижнего края рисунка, как это принято при изображении любых гра­фиков.
Работа 11 (индивидуальное задание Е). Работа с файлами. Составьте программу, которая с помощью 32-разрядных функций работы с файлами CreateFile (), WriteFileO, SetFilePointer () и ReadFile () выполняет базовые операции с файлами, именно, создание нового файла, запись в него дан­ных и их контрольное чтение. Зарезервируйте в памяти массив и запишите в него в цикле указанный в ин­дивидуальном задании ряд чисел. Создайте файл с произвольным именем. Выведите созданный массив в файл. Прочитайте файл в другой, пустой массив такого же размера. Выведите в окно сообщения первый и последний элемент прочитанного массива. Программа состоит из одной функции WinMain () без каких-либо окон или элементов управления (кроме окна вывода сообщения).
С помощью программы Norton Commander выведите на экран созданный вами файл в форме шестна-дцатеричных чисел и убедитесь, что файл имеет длину и содержимое, соответствующие заданию.
Работа 12. Проецирование файлов на память. Воспользуйтесь файлом, созданным в предыдущей ра­боте. С помощью функций CreateFileMappingO и MapViewOfFile () выполните проецирование файла на память. Обращаясь к содержимому файла с помощью полученного указателя, измените одно из данных, записанных ранее в файл. С помощью программы Norton Commander выведите на экран созданный вами файл в форме шестнадцатеричных чисел и убедитесь, что файл действительно модифицирован.
Работа 13. Потоки. Воспользуйтесь программой из работы 8 (индивидуальное задание В), в которой выбором пунктов меню переключались изображения на экране. Исключите из приложения меню, а также все функции, связанные с обработкой сообщений от меню. В функции обработки сообщения WM_CREATE запустите вторичный поток, который периодически, например, с частотой 1 Гц, осуществляет переключе­ние тех же изображений. Запуск потока осуществляется функцией CreateThread (); рабочая функция потока, имя которой указывается в качестве третьего параметра функции CreateThread (), должна иметь прототип DWORD WINAPI имя функции (LPVOID). В этой функции с помощью оператора while (1) организуйте бесконечный цикл переключения изображений с усыплением потока в каждом ша­ге цикла на заданное время с помощью функции Sleep ().

Индивидуальные задания
Задание А14. Составьте программу, в которой в главное окно серого цвета выводятся три вложенных друг в друга квадрата с размерами сторон 300, 200 и 100 пикселов, соприкасающиеся левыми верхними уг­лами. Внешний квадрат закрасить фиолетовым цветом, средний - темно-синим, а внутренний - светло-синим.
Задание В14. Составьте программу с меню "Отражение", состоящим из пунктов с названиями "Сле­ва" и "Справа". Выбор каждого пункта меню должен приводить к выводу в главное окно серого цвета либо левой, либо правой половины синего круга. Полукруги рисуются с помощью функций Pie () или Chord().
Задание С14. Включите в состав диалога кнопку "Закрыть", комбинированный список с линейкой вертикальной прокрутки, а также статический элемент, куда функция DlgDirListComboBox () поместит имя выбранного файла. Введите в оконную процедуру диалога обработку сообщений WM_CTLCOLORDLG и WM_CTLCOLORSTATIC. Покрасьте окно диалога и статический элемент в бледно-фиолетовый цвет, а текст в статическом элементе - в темно-фиолетовый. Заполните комбинированный список упорядоченным со­держимым текущего каталога диска, воспользовавшись для этого функцией DlgDirListComboBox(), которую следует вызвать при обработке сообщения WM_INITDIALOG. Выведите в комбинированный спи­сок только файлы .ЕХЕ.
Задание D14. Выведите график функции/= е~х cos5x, вычисляя координаты 200 точек для положитель­ных значений х и 200 - для отрицательных. Для переменной х задайте шаг 1/100; ординаты графика умно­жайте на 50.
Задание Е14. Запишите в файл последовательный ряд из 10000 целых четных чисел в убывающем по­рядке.
ХЎ

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.05.2005 (Сб) 5:32

Если кто возьмётся, имейте в виду: это всё про C++.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 21.05.2005 (Сб) 9:55

Блин....если был бы VB то с удовольствием.....а так... я пас :(
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 23.05.2005 (Пн) 11:34

Ну вот...уже понедельник...раньше надо было скидывать :(

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 23.05.2005 (Пн) 11:45

В списке не хватает еще темной и светлой фасоли, которую надо по мешкам разложить :)

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 24.05.2005 (Вт) 11:58

RayShade, я думал это только у нас преподы фасолью балуются ))) только у нас вместо мешков стаканы были. вернее один стакан и оттуда фасоль доставалась, а не клалась )))
ХЎ


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 49

    TopList