ďťż

Ładny brzuch

Cze mam nastepujacy problem : chce zrobic program pod kosola aby bylo tam
menu w postaci przyciskow tzn. kwadracikow ktore bede zmienial strzalkami a najlepiej myszka .
Podczas zmianu bedzie sie podswietlal ten na ktorego najechalem a op wcisnieciu enter
bedzie wykonany :) . No i wlasnie nie wiem zabardzo jak sie zabrac za takie robienie przycisko
moja prosba : Jesli ktos dysponuje jakims linkiem albo wie gdzie moga byc w necie informacje
odnoscie tego tematu prosze o pomoc . Rownie dobrze moze ktos tu tez kod zamiescic ;)
Z gory dziekuje i pozdrawiam.:D
Użytkownik Chudyyy edytował ten post 20 kwiecień 2006, 12:00


Rysowac przyciski mozesz w ASCII -> http://www.lookuptables.com/
A tu masz mały opis: http://www.playerom....pp/rystekst.htm
Oprogramowac to to juz chyba nieproblem - tymbardziej jezeli wiesz ile bedzie przyciskow i gdzie beda rozmieszzczone

http://img224.images.../8026/15mn2.gif
http://img224.images...4/4615/29hr.gif

Klasa do pobrania stad: http://rapidshare.de...unMenu.rar.html.

Menu moza rzecz jasna przekonfigurowac (kolory, polozenie etc.)

Jakiś czas temu napisałem taką klasę (działa tylko pod win)... system podobny jak w tej klasie z postu wyżej:
http://www.fotosik.p...dnnk47k4yo.html
plik: vmenu.h
#include <windows.h> #include <string> class vmenu { private: //zmienne std::string nMenuTitle; int nMenu_X; int nMenu_Y; int nNumberOfFields; int nTitleColor; int nActiveColorText; int nInactiveColorText; int nHighlightFunction; char cTitleSign; char cMarkSign; HANDLE hConsole; //funckcje void clrscr(); void gotoxy(int, int); void ChangeTextLength(); public: //zmienne void (**FunctionList)(); std::string *FunctionName; //funkcje vmenu(); ~vmenu(); void ShowMenu(); void SetMenuOption(std::string, int, int, int, int, int, int, int, char, char); };
plik: vmenu.cpp
#include <iostream> #include <windows.h> #include <string> #include <conio.h> #include "vmenu.h" //=================================================================================== vmenu::vmenu() { nMenuTitle = ""; nMenu_X = 0; nMenu_Y = 0; nNumberOfFields = 1; nActiveColorText = 15; nInactiveColorText = 8; nHighlightFunction = 0; hConsole = GetStdHandle(STD_OUTPUT_HANDLE); FunctionList = new (void(*[nNumberOfFields])()); FunctionName = new std::string [nNumberOfFields]; } //----------------------------------------------------------------------------------- vmenu::~vmenu() { delete [] FunctionList; delete [] FunctionName; } //----------------------------------------------------------------------------------- void vmenu::clrscr() { CONSOLE_SCREEN_BUFFER_INFO csbi; GetConsoleScreenBufferInfo(hConsole, &csbi); DWORD dwWritten = 0; COORD coord = {0, 0}; FillConsoleOutputCharacter(hConsole, ' ', (csbi.dwSize.X) * (csbi.dwSize.Y) , coord, &dwWritten); FillConsoleOutputAttribute(hConsole, csbi.wAttributes, (csbi.dwSize.X) * (csbi.dwSize.Y), coord, &dwWritten); SetConsoleCursorPosition(hConsole, coord); } //----------------------------------------------------------------------------------- void vmenu::gotoxy(int x, int y) { COORD coord = {x, y}; SetConsoleCursorPosition(hConsole, coord); } //----------------------------------------------------------------------------------- void vmenu::ChangeTextLength() { int MaxLen=FunctionName[0].length(); int TitleLen=nMenuTitle.length(); int NewLen; for(int i=1; i<nNumberOfFields-1; i++) { if( MaxLen < FunctionName[i].length() ) MaxLen = FunctionName[i].length(); } if( MaxLen < TitleLen) { MaxLen = TitleLen; } else { if( TitleLen != 0 ) { NewLen = MaxLen - TitleLen; for(int i=1; i<=NewLen; i++) nMenuTitle += " "; } } for(int i=0; i<nNumberOfFields; i++) { NewLen = MaxLen - FunctionName[i].length(); if( NewLen > 0) { for(int j=1; j<=NewLen; j++) FunctionName[i] += " "; } } } //----------------------------------------------------------------------------------- void vmenu::SetMenuOption(std::string MenuTitle, int x, int y, int NumberOfFields, int TitleColor, int ActiveColorText, int InactiveColorText, int HighlightFunction, char TitleSign, char MarkSign) { nMenuTitle = MenuTitle; nMenu_X = x; nMenu_Y = y; nNumberOfFields = NumberOfFields; delete [] FunctionList; delete [] FunctionName; FunctionList = new (void(*[nNumberOfFields])()); FunctionName = new std::string [nNumberOfFields]; nTitleColor = TitleColor; nActiveColorText = ActiveColorText; nInactiveColorText = InactiveColorText; nHighlightFunction = HighlightFunction; cTitleSign = TitleSign; cMarkSign = MarkSign; } //----------------------------------------------------------------------------------- void vmenu::ShowMenu() { char cDo; ChangeTextLength(); do { SetConsoleTextAttribute(hConsole,7); clrscr(); if(nMenuTitle!="") { SetConsoleTextAttribute(hConsole,nTitleColor); gotoxy(nMenu_X, nMenu_Y-1); std::cout << " "<< cTitleSign <<" " << nMenuTitle << " " << std::endl; } for(int i=0; i<nNumberOfFields; i++) { gotoxy(nMenu_X, nMenu_Y+i); SetConsoleTextAttribute(hConsole, nInactiveColorText); if( i == nHighlightFunction ) { SetConsoleTextAttribute(hConsole, nActiveColorText); std::cout << " " << cMarkSign << " " << FunctionName[i] << " " << std::endl; } else { std::cout << " " << FunctionName[i] << " " << std::endl; } } gotoxy(nMenu_X+FunctionName[nHighlightFunction].length()+4, nMenu_Y+nHighlightFunction); cDo = getch(); switch(cDo) { case 13: SetConsoleTextAttribute(hConsole,7); clrscr(); (*FunctionList[nHighlightFunction])(); break; case 80: if( nHighlightFunction < nNumberOfFields-1 ) { nHighlightFunction += 1; } else { nHighlightFunction = 0; } break; case 72: if( nHighlightFunction > 0 ) { nHighlightFunction -= 1; } else { nHighlightFunction = nNumberOfFields-1; } break; default: break; } }while(cDo != 27); } //-----------------------------------------------------------------------------------
I przykład:
#include <iostream> #include "vmenu.h" void funkcja1(){ std::cout << "Funkcja 1" << std::endl; std::cin.get();} void funkcja2(){ std::cout << "Funkcja 2" << std::endl; std::cin.get();} void funkcja3(){ std::cout << "Funkcja 3" << std::endl; std::cin.get();} void funkcja4(){ std::cout << "Funkcja 4" << std::endl; std::cin.get();} void funkcja5(){ std::cout << "Funkcja 5" << std::endl; std::cin.get();} void funkcja6(){ std::cout << "Funkcja 6" << std::endl; std::cin.get();} void funkcja7(){ std::cout << "Funkcja 7" << std::endl; std::cin.get();} void funkcja8(){ std::cout << "Funkcja 8" << std::endl; std::cin.get();} int main() { vmenu NoweMenu; NoweMenu.SetMenuOption("Menu probne",30,7,8,158,159,112,0,'-','>'); /*void vmenu::SetMenuOption(std::string MenuTitle, int x, int y, int NumberOfFields, int TitleColor, int ActiveColorText, int InactiveColorText, int HighlightFunction, char TitleSign, char MarkSign)*/ NoweMenu.FunctionList[0] = funkcja1; NoweMenu.FunctionList[1] = funkcja2; NoweMenu.FunctionList[2] = funkcja3; NoweMenu.FunctionList[3] = funkcja4; NoweMenu.FunctionList[4] = funkcja5; NoweMenu.FunctionList[5] = funkcja6; NoweMenu.FunctionList[6] = funkcja7; NoweMenu.FunctionList[7] = funkcja8; NoweMenu.FunctionName[0] = "Funkcja 1"; NoweMenu.FunctionName[1] = "Funkcja 2"; NoweMenu.FunctionName[2] = "Funkcja 3"; NoweMenu.FunctionName[3] = "Funkcja 4"; NoweMenu.FunctionName[4] = "Funkcja 5"; NoweMenu.FunctionName[5] = "Funkcja 6"; NoweMenu.FunctionName[6] = "Funkcja 7"; NoweMenu.FunctionName[7] = "Funkcja 8"; NoweMenu.ShowMenu(); return 0; }
Program działa dobrze, ale styl w jakim go napisałem już trochę mniej mi się podoba (dużo się od tamtego czasu zmieniło w moim podejściu :) )
Użytkownik reVis edytował ten post 20 kwiecień 2006, 14:23


super :) dzieki

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •