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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2010, 21:23   #1
MaRKer.nsk
Пользователь
 
Регистрация: 27.03.2010
Сообщений: 53
По умолчанию Меню.C++ VS 6.0

Здравствуйте, у меня скромный вопрос... Возможно ли в консольных приложениях сделать меню... как в биусе например. Если есть способы то можете поделиться примером с описанием или ссылочкой.
ЗЫ у мя C++ VS 6.0
MaRKer.nsk вне форума Ответить с цитированием
Старый 07.04.2010, 23:50   #2
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

MS-вариации на тему борландовской болванки, взятой отсюда.
Код:
#include <conio.h>
#include <stdio.h>
#include <windows.h>

#define MaxNo_Menu 5

#define KEY_ENTER 13
#define KEY_UP    72
#define KEY_RIGHT 75
#define KEY_LEFT  77
#define KEY_DOWN  80

#define FOREGROUND_WHITE FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE
#define BACKGROUND_WHITE BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE


HANDLE hOut;

void gotoxy( int col, int row ) {
   
   COORD pos;
   pos.X = col; pos.Y = row;
   SetConsoleCursorPosition( hOut, pos );

}


int main() {
  
   bool  isExit = false;
   char* menu_list[MaxNo_Menu] = { "ADD", "EDIT", "DELETE", "SAVE", "EXIT" };
   int   i,
         xpos = 10,
         ypos[MaxNo_Menu] = { 3, 5, 7, 9, 11 };
   CONSOLE_CURSOR_INFO conCurInf;
   
   hOut = GetStdHandle( STD_OUTPUT_HANDLE );   
   GetConsoleCursorInfo( hOut, &conCurInf );

   // Hide the cursor
   conCurInf.bVisible = false;
   SetConsoleCursorInfo( hOut, &conCurInf );

   // List the menu
   for (i=0; i< MaxNo_Menu; ++i) {
      gotoxy( xpos, ypos[i] );
      cprintf( "%s",menu_list[i] );
   }

   // Make menu available to choose
   i = 0;
   gotoxy( xpos, ypos[i] );
   SetConsoleTextAttribute( hOut, BACKGROUND_WHITE );
   cprintf("%s",menu_list[i] );

   while ( !isExit ) {
      gotoxy( xpos, ypos[i] );
      switch( getch() ) {
         case KEY_UP: 
            SetConsoleTextAttribute( hOut, FOREGROUND_WHITE );
            cprintf( "%s",menu_list[i] );
            i = i > 0 ? --i : MaxNo_Menu-1 ;
            gotoxy( xpos, ypos[i] );
            SetConsoleTextAttribute( hOut, BACKGROUND_WHITE );
            cprintf( "%s",menu_list[i] );
            break;
         case KEY_DOWN: 
            SetConsoleTextAttribute( hOut, FOREGROUND_WHITE );
            cprintf( "%s",menu_list[i] );
            i = i < MaxNo_Menu-1 ? ++i : 0 ;
            gotoxy( xpos, ypos[i] );
            SetConsoleTextAttribute( hOut, BACKGROUND_WHITE );
            cprintf( "%s", menu_list[i] );
            break;
         case KEY_ENTER: 
            gotoxy (10,21);
            if(i==0) { printf(" you choose ADD    ");  }
            if(i==1) { printf(" you choose EDIT   ");  }
            if(i==2) { printf(" you choose DELETE ");  }
            if(i==3) { printf(" you choose SAVE   ");  }
            if(i==4) { printf(" you choose EXIT   "); isExit = true; }
         break;

     }
   }
   SetConsoleTextAttribute( hOut, FOREGROUND_WHITE );
   // Show the cursor
   conCurInf.bVisible = true;
   SetConsoleCursorInfo( hOut, &conCurInf );
   printf( "\n" );

   return 0;

}

Последний раз редактировалось Vago; 08.04.2010 в 00:05.
Vago вне форума Ответить с цитированием
Старый 08.04.2010, 10:10   #3
MaRKer.nsk
Пользователь
 
Регистрация: 27.03.2010
Сообщений: 53
По умолчанию

СПС щя буду разбираться что к чему в коде=)
MaRKer.nsk вне форума Ответить с цитированием
Старый 08.04.2010, 11:34   #4
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Не за что. Вот здесь ещё много полезной информации по работе с консолью через Win32 API.
Vago вне форума Ответить с цитированием
Старый 08.04.2010, 16:16   #5
MaRKer.nsk
Пользователь
 
Регистрация: 27.03.2010
Сообщений: 53
По умолчанию

да тоже хороший сайт, единственное жалко что на английском, я по нему не очень хорошо читаю=) так частично чтото и могу понять))
MaRKer.nsk вне форума Ответить с цитированием
Старый 29.10.2012, 19:34   #6
And96
Новичок
Джуниор
 
Регистрация: 29.10.2012
Сообщений: 1
По умолчанию

а как сделать case на кнопку muose1 (c++)
And96 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
И сново sendMessage =) Как нажать пункт верхнего меню и меню правой кнопки? TwiX Win Api 9 15.10.2009 01:57
Оформление меню (вытекает из другого меню) TilerDerton Общие вопросы Delphi 3 20.08.2009 02:20
Для доступа к пунктам главного меню клавиши ALT + подчеркнутая буква меню в офис 2007? Окоча Юра Microsoft Office Word 1 24.02.2009 12:29
Меню с Items в виде набора Bitmap (как меню редактирования в Word'е) chandrasecar Мультимедиа в Delphi 7 14.01.2009 09:20
МЕНЮ Delpher HTML и CSS 4 25.12.2007 15:37