WindowsXP, BorlandC++5.02 и <graphics.h>
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.94] |
|
|
| Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
WindowsXP, BorlandC++5.02 и <graphics.h>
|
Сообщ.
#1
,
|
|
|
|
Проблема такая.
Понадобилось решение задачи, результатом которой должны являться некие кривые. Вообще говоря, было бы достаточно функций line и putpixel (сам не программист, но когда-то подобные задачи решал). Поставил себе (на XP) BorlandC++5.02, начал писать программу, обьявил <graphics.h>, получил сообщение "graphics.h(20,52):Error directive: BGI graphics not supported under Windows". Был бы благодарен, если бы кто-нибудь обьяснил, как это преодолеть. Так же был бы благодарен за работающую ссылку на доступный простым смертным учебник по OpenGL (думаю, еще пригодится). Спасибо. |
|
Сообщ.
#2
,
|
|
|
|
Насколько я понял, ты пытаешься использовать BGI в программе, написанной под Win32.
А надо писать под ДОС. |
|
Сообщ.
#3
,
|
|
|
|
|
Сообщ.
#4
,
|
|
|
|
Цитата trainer @ 21.11.04, 12:08 Насколько я понял, ты пытаешься использовать BGI в программе, написанной под Win32. А надо писать под ДОС. А что же мне, разнесчастному, делать, если нужны простенькие рисовательные инструменты (образно говоря, синусоиду нужно изобразить, или там тепловую волну бегущую) под Win32? |
|
Сообщ.
#5
,
|
|
|
|
Под Win32 надо использовать WinAPI.
BGI - под ДОС. |
|
Сообщ.
#6
,
|
|
|
|
Цитата trainer, 21.11.04, 12:55 Под Win32 надо использовать WinAPI. Уточню: GDI |
|
Сообщ.
#7
,
|
|
|
|
Прошу прощения за тупость и настырность.
Но мне бы на конкретном примере. Например, я хочу провести линию из вехнего левого угла в нижний правый, а также увидеть отдельный пиксель с координатами (100,100). Вот так ![]() ![]() #include <graphics.h> void main() { line (0,0,640,480,6); putpixel (100,100,6); } ..., как мы выяснили, будет неправильно. А как правильно? Чего надоть подключить? |
|
Сообщ.
#8
,
|
|
|
|
Цитата Ламер, 21.11.04, 19:25 ..., как мы выяснили, будет неправильно. А как правильно? Чего надоть подключить? инициализируем: ![]() ![]() int gdriver = DETECT, gmode, errorcode; initgraph(&gdriver, &gmode,NULL); errorcode = graphresult(); if(errorcode != grOk){ printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); } дальше рисуем что хотим, в конце программы освобождаем: ![]() ![]() closegraph(); |
|
Сообщ.
#9
,
|
|
|
|
Инициализация, эт да. За 5 лет все забыл
Задал дословно: ![]() ![]() #include <graphics.h> void main() { int gdriver=DETECT, gmode, errorcode; initgraph(&gdriver, &gmode, NULL); errorcode = graphresult(); if(errorcode!=grOk) { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); } line (0,0,640,480,6); closegraph(); } Все равно: GRAPHICS.H(20,52):Error directive: BGI graphics not supported under Windows Постинги Мяута и Трэйнера я понял так, что подключать надо вообще другую библиотеку. M Просьба использовать тег кода для оформления [ code][ /code] (без пробелов) Leprecon |
|
Сообщ.
#10
,
|
|
|
|
Цитата Ламер, 21.11.04, 21:02 Постинги Мяута и Трэйнера я понял так, что подключать надо вообще другую библиотеку. Под Винды ДОСовскую графику заюзать никак не получится. Тебе же дали ссылку на ОпенГЛ. По мне - так лучше взять ДОСовский компил (ту же борландовскую трешку) и там написать |
|
Сообщ.
#11
,
|
|
|
|
Под Win32 ты не сможешь рисовать в консоли.(по крайней мере я не знаю способов)
Рисовать можно в окно. Для этого надо сначала создать окно(CreateWindow() и иже с ней), а для рисования исподьзовать функции GDI. Подключаемый хедер один - windows.h Пишешь у себя в проекте: ![]() ![]() #include <windows.h> Библиотеки обычно подключаются автоматически(Visual Studio'ей). Если нет, то надо руками подключить библиотеки Gdi32.lib, User32.lib. |
|
Сообщ.
#12
,
|
|
|
|
Цитата Ламер, 21.11.04, 15:25 Кто чего выяснил - я не знаю. как мы выяснили, будет неправильно. ![]() Я знаю, что в настройках проекта надо выбрать в качестве целевой платформы ДОС. И не забыть вызвать initgraph перед использованием других функций для работы с графикой. ![]() ![]() #include <conio.h> #include <graphics.h> int main(int,char**) { int max_x, max_y; int driver = DETECT; int mode = 0; initgraph(&driver,&mode,""); max_x = getmaxx(); max_y = getmaxy(); line(0,0,max_x,max_y,GREEN); putpixel(100,100,RED); while( !kbhit() ); closegraph(); return 0; } |
|
Сообщ.
#13
,
|
|
|
|
Создай новый проект, там выбири Executable (.EXE), DOS (Standart), в Memory Model - Large, установи голочку BGI. Можно еще написать исходник на C, и за тем скомпилить:
![]() ![]() bcc my.c +graphics.lib |
|
Сообщ.
#14
,
|
|
|
|
Последний вопрос, самый тупой.
Сделал, как Мяут сказал, сообщений об ошибке не последовало, но монитор показал черный экран и даже выключаться (при нажатии на кнопку on/off!) отказался. Полез в настройки, а он, оказывается, меньше, чем 800*600 не поддерживает. Есть преламерское мнение, что по этой причине хрен мне, а не досовскую графику. Я прав? |
|
Сообщ.
#15
,
|
|
|
|
Цитата Ламер, 21.11.04, 18:51 Полез в настройки, а он, оказывается, меньше, чем 800*600 не поддерживает. Не поддерживает XP. А BGI-дрова поддерживают. В случае чего, видюха запускает эмуляцию |