Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Альтернатива Conio.h в Dev-C++

Ответить
Настройки темы
C/C++ - Альтернатива Conio.h в Dev-C++
SS3 SS3 вне форума

Аватара для SS3

Пользователь


Сообщения: 134
Благодарности: 0

Профиль | Отправить PM | Цитировать


В гугле нарыл вот такой код
Код: Выделить весь код
#ifndef __ALT_CONIO_H__
#define __ALT_CONIO_H__

/*
  Name: alt.h [Alternative Conio]
  Copyright: 2008
  Author: Arthur Christopher Watkins
  Date: 26/10/08 21:14
  Description: Alternative conio.h
  file for Dev-C++ users
  Version: 1.0
*/

void gotoxy(int x,int y);
void setx(int x);
void sety(int y);
void setcolor(unsigned short color,unsigned short bg);
void delay(unsigned long milisec);
void setcursor(int ctype);
void clrscr(void);
int getx(void);
int gety(void);
int assert(int x);
#ifndef ALT_OUTPUT
int print(const char *x);
#endif
char getc(int kc);
int align(int align,const char *str);

#include "windows.h"
#include "conio.h"
#include "time.h"

#define WIN_32_LEAN_AND_MEAN

#define KEY_HOME   71
#define KEY_UP     72
#define KEY_PGUP   73
#define KEY_LEFT   75
#define KEY_CENTER 76
#define KEY_RIGHT  77
#define KEY_END    79
#define KEY_DOWN   80
#define KEY_PGDN   81
#define KEY_INSERT 82
#define KEY_DELETE 83
#define KEY_F1     59
#define KEY_F2     60
#define KEY_F3     61
#define KEY_F4     62
#define KEY_F5     63
#define KEY_F6     64
#define KEY_F7     65
#define KEY_F8     66
#define KEY_F9     67
#define KEY_SPC    32
#define KEY_BACKSPACE 8
#define KEY_TAB     9
#define KEY_ENTER  13
#define KEY_ESC    27

#define LEFT   0
#define CENTER 1
#define RIGHT  2

#define _NOCURSOR     0
#define _SOLIDCURSOR  1
#define _MEDIUMCURSOR 2
#define _NORMALCURSOR 3

#ifdef ALT_OUTPUT
#define write(x) printf(x)
#else
#define write(x)
#endif

enum colors { BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY, GRAY, LIGHTBLUE, LIGHTGREEN, TURQUOISE, LIGHTRED, PINK, YELLOW, WHITE };

union k
{
      char c;
      int i;
} key;

void gotoxy(int x,int y)
{
     setx(x);
     sety(y);
}

void setx(int x)
{
     COORD pos;
     pos.X = x;
     pos.Y = gety();
     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}

void sety(int y)
{
     COORD pos;
     pos.X = getx();
     pos.Y = y;
     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}

void setcolor(unsigned short int color,unsigned short int bg)                                                 ////тут ошибка
{                                                                                                                                             //// 
     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),((bg*16)+(color)));
}

void delay(unsigned long int milisec)
{
     clock_t start,end,loop;
     start = clock();
     end = (start+milisec);
     
     do {
         loop = clock();
     } while(loop<end);
}

void setcursor(int ctype)
{
     CONSOLE_CURSOR_INFO type;
     switch(ctype)
     {
                  case _NOCURSOR:
                       type.bVisible = 0;
                       break;
                  case _SOLIDCURSOR:
                       type.dwSize = 100;
                       type.bVisible = 1;
                       break;
                  case _MEDIUMCURSOR:
                       type.dwSize = 50;
                       type.bVisible = 1;
                       break;
                  case _NORMALCURSOR:
                       type.dwSize = 1;
                       type.bVisible = 1;
                       break;
                  default:
                       type.dwSize = 1;
                       type.bVisible = 1;
                       break;
     }
     SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&type);
}

void clrscr()
{
     COORD pos;
     COORD cs = { 0, 0 };  
     DWORD written;
     CONSOLE_SCREEN_BUFFER_INFO window;
     pos.X = 0;
     pos.Y = 0;
     GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),&window);
     FillConsoleOutputCharacter(GetStdHandle(STD_OUTPUT_HANDLE),' ',window.dwSize.X*window.dwSize.Y,cs,&written);
     gotoxy(0,0);
}

int getx(void)
{
    CONSOLE_SCREEN_BUFFER_INFO window;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),&window);
    return window.dwCursorPosition.X;
}

int gety(void)
{
    CONSOLE_SCREEN_BUFFER_INFO window;
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE),&window);
    return window.dwCursorPosition.Y;
}

int assert(int x)
{
    if(!(x)) return 1;
    else if(x) return 0;
}

#ifndef ALT_OUTPUT
int print(const char *x)
{
    printf("%s",x);
}
#endif

char getc(int kc)
{
     key.i = kc;
     key.c = (char)key.i;
     return key.c;
}

int align(int align,const char *str)
{
int x;
switch(align)
{
case 0:
x = (0);
break;
case 1:
x = (40-(strlen(str)/2));
break;
case 2:
x = (80-(strlen(str)));
break;
default:
return 1;
break;
}
if(strlen(str) > 79) {
}
else {
gotoxy(x,gety());printf("%s",str);
}
}

#endif
Вот код проверочной программы:
Код: Выделить весь код
#include <stdio.h>
#include <altconio.h>
main()
{
 setcolor(15);
 printf("Hello world!");
 return 0;
}
А вот что мне компилятор выдал:
Код: Выделить весь код
 f:\Dev-Cpp\include\altconio.h In function `int main()': 
108 f:\Dev-Cpp\include\altconio.h too few arguments to function `void setcolor(short unsigned int, short unsigned int)' 
5 F:\Dev-Cpp\Source\Uqwewntitled1.cpp at this point in file

-------
http://img49.imageshack.us/img49/6761/84449733.gif


Отправлено: 22:41, 17-10-2009

 

Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


Вместо угловых скобок, попробуйте кавычки, это же пользовательская .h
Код: Выделить весь код
#include <altconio.h>
#include "altconio.h"

main() // не объявлен возвращающий параметр 'int main()' 
...

return 0;  // Хотя она возвращает значение

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif


Отправлено: 11:49, 18-10-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для AlexTNT

Пользователь


Сообщения: 99
Благодарности: 19

Профиль | Отправить PM | Цитировать


Цитата:
108 f:\Dev-Cpp\include\altconio.h too few arguments to function `void setcolor(short unsigned int, short unsigned int)'
Перевод:
Цитата:
108 f:\Dev-Cpp\include\altconio.h очень мало аргументов в функции `void setcolor(short unsigned int, short unsigned int)'
В вашем примере
Код: Выделить весь код
 setcolor(15);
Попробуйте добавить ещё один аргумент

Drongo,
Цитата:
main()
В Си так можно (компилятор поставит по автоматике). Также можно объявить и функцию.
В С++ так не получается(только main().)

-------
В споре рождается истина.


Отправлено: 12:53, 18-10-2009 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Альтернатива Conio.h в Dev-C++

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочие - Не работает Dev-C++ PulSar.CE194694 Программирование и базы данных 2 30-09-2009 23:36
C/C++ - conio SS3 Программирование и базы данных 4 11-02-2009 20:01
Не сохраняются изменения в /dev Neosofit Общий по Linux 10 14-06-2006 20:41
/dev/da0? Guest Общий по FreeBSD 17 25-08-2004 15:14




 
Переход