Созданные ответы форума
-
АвторСообщения
-
Вообщем вот тот необходимый примитив для реализации Libel, Button, Input:
C++1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495#include <SFML/Graphics.hpp>#include <SFML/Network.hpp>#include <iostream>#include <windows.h>#include "FormSFML.h"using namespace std;using namespace form;using namespace sf;/*char bufRus[256];char* Rus(const char* text) {CharToOem(text, bufRus);return bufRus;}*/int main(){IpAddress ip = IpAddress::getLocalAddress(); //Считывайем локальный ip адрессRenderWindow window(sf::VideoMode(800, 600), "Form");Button button(30, 30);Label label(30, 80, "Привет kychka-pc.ru");Button button2(230, 30, 150, 30, "Заменить текст");Input input(230, 80, 200, 30);Label label2(230, 150, "Гав");Label label3(30, 350, "Введите IP-адресс:");Input input2(30, 400, 200, 30, "192.168.1.64");Button button3(280, 350, 150, 150, "Connect");while (window.isOpen()){sf::Event event;while (window.pollEvent(event)){if (event.type == sf::Event::Closed)window.close();if (event.type == sf::Event::MouseButtonPressed){if (event.mouseButton.button == sf::Mouse::Left){Vector2i mouse = Mouse::getPosition(window); // Считываем координаты мыши(если че обратиться можно будет mouse.x mouse.y)if( button.select(mouse)){label.text = "Нажата кнопка!" ;}if( button2.select(mouse)){label2.text = input.readText() ;}if( button3.select(mouse)){ip = input.readText();}input.select(mouse); //поле вводаinput2.select(mouse); //поле ввода}}if(event.type == sf::Event::TextEntered){if(input.select()){input.reText(event.text.unicode);}if(input2.select()){input2.reText(event.text.unicode);}}}window.clear();window.draw(label.displayText());window.draw(label2.displayText());window.draw(label3.displayText());window.draw(button2.displayButton());window.draw(button2.displayText());window.draw(button.displayButton());window.draw(button.displayText());window.draw(button3.displayButton());window.draw(button3.displayText());window.draw(input.displayButton());window.draw(input.displayText());window.draw(input2.displayButton());window.draw(input2.displayText());window.display();sleep(milliseconds(1000/60));//Задержка}return 0;}А вот подключаемый класс FormSFNL:
C++1234567/** FormSFML.h** Created on: 02 мая 2015 г.* Author: Fedor* Специально для kychka-pc.ru*/C++123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173#include <string>using namespace std;using namespace sf;namespace form {Font None; // Шрифт первичная инициализацияclass Label {public:string text; //Текстprotected:double x; //Координата xdouble y; //Координата yText TXT; //Отображаемый текстpublic:Label(double _x = 0, double _y = 0, string _text ="Текст"){None.loadFromFile("ttf/None.ttf"); //передаем нашему шрифту файл шрифтаx = _x;y = _y;text = _text; // загружает текстTXT.setFont(None); // загружаем фрифтTXT.setCharacterSize(20); // в пикселях, а не точках!TXT.setColor(Color::White); // устанавливаем цвет выводимого текстаTXT.setPosition(x,y); // позиция текста}Text displayText(){TXT.setString(text); // загружаем в выводимый текст загружаемый текстreturn TXT;}};class Button : public Label {protected:double width; // Ширина Кнопкиdouble height; // Высота КнопкиRectangleShape BOX; // Создаем прямоугольник с размером width, heightpublic:Button(double _x = 0, double _y = 0, double _width = 150, double _height = 30, string _text ="Кнопка"){None.loadFromFile("ttf/None.ttf"); //передаем нашему шрифту файл шрифтаx = _x;y = _y;width = _width;height = _height;text = _text; // загружает текстTXT.setFont(None); // загружаем фрифтTXT.setCharacterSize(20); // в пикселях, а не точках!TXT.setColor(Color::White); // устанавливаем цвет выводимого текстаTXT.setPosition(x,y); // позиция текстаBOX.setSize(Vector2f(width, height)); // размер кнопкиBOX.setPosition(x,y); // координаты кнопкиBOX.setFillColor(sf::Color(133, 133, 133)); // цвет кнопкиBOX.setOutlineThickness(2); // Контур X пикселейBOX.setOutlineColor(Color(66, 66, 66)); // Цвет контура}//Проверка нажатия на кнопкуbool select(Vector2i _mouse){if((_mouse.x > x && _mouse.x < x + width) && (_mouse.y > y && _mouse.y < y + height)){return true;} else {return false;}}//Вывод ТекстаText displayText(){TXT.setString(text); // загружаем в выводимый текст загружаемый текстreturn TXT;}//Вывод кнопкиRectangleShape displayButton(){return BOX;}};class Input : public Button{protected:bool focus;public:Input(double _x = 0, double _y = 0, double _width = 150, double _height = 30, string _text =""){x = _x;y = _y;width = _width;height = _height;text = _text; // загружает текстfocus = false; // фокус поля вводаTXT.setFont(None); // загружаем фрифтTXT.setCharacterSize(20); // в пикселях, а не точках!TXT.setColor(Color::Black); // устанавливаем цвет выводимого текстаTXT.setPosition(x,y); // позиция текстаBOX.setSize(Vector2f(width, height)); // размер поля вводаBOX.setPosition(x,y); // координаты поля вводаBOX.setFillColor(Color::White); // цвет кнопки}//метод .reText( char ) изменяет текст внутри класса Типа данных Inputvoid reText(char _tmp){text.erase(text.size()-1);if(_tmp != 8){text += _tmp;} else {if(text.size() > 0){text.erase(text.size()-1);}}text += "|";TXT.setString(text);}// Проверка Фокуса Inputbool select(){return focus;}// Установка Фокуса Inputbool select(Vector2i _mouse){if((_mouse.x > x && _mouse.x < x + width) && (_mouse.y > y && _mouse.y < y + height)){ //Если нажат клаиша над объектом Input...focus = true; // Фокус truetext += "|"; // В конец строки добаляем | (что бы понимать что input в фокусе)} else { //...Иначе если нажатие произошло не над объектом, то...if(text.size() > 0){ // проверка последнего символа(иначе вылетает)if(text[text.size()-1] == 124){ // если символ | ...text.erase(text.size()-1); // ... то удаляем его}}focus = false; // устанавливаем фокус false}return focus;}//Вывод ТекстаText displayText(){TXT.setString(text); // загружаем в выводимый текст загружаемый текстreturn TXT;}//Вывод фона InputRectangleShape displayBOX(){return BOX;}//Для того, что бы считать текст с поля Ipnut необходимо пременить readText() который возвращает stringstring readText(){if(text[text.size()-1] == 124){ // удаляем (если есть) символ |text.erase(text.size()-1);}return text;}};} /* namespace form */////////////////////////////////////////////////////////////////////////
Прошу обратить внимание на метод
C++1readText()он позволяет считывать данные с поля Input без лишних знаков и занести в ip адрес и это будет работать!
P.S. Русские символы не вводятся хз как решить проблему(
P.S.S. я создал class с минимальным набором необходимым для работы с Интерфейсом вы же можете расширить так как вам необходимо…
Вложения:
You must be logged in to view attached files.
<h1 id=”unavailable-message” class=”message”>Автор ограничил доступ к видео.</h1>
Сожалеем об этом.Насколько знаю в Visual Studio release версия собирает в себя все данные, попробуй запихни все картинки в откомпилированную директорию release.
P.S. В Eclipse это помогает.
-
АвторСообщения