KolibriLib
Loading...
Searching...
No Matches
childWindow.hpp
1#pragma once
2
3#ifndef __CHILDWINDOW_H__
4#define __CHILDWINDOW_H__
5
6
7#include <stdio.h>
8#include <string.h>
9#include <stdlib.h>
10#include <sys/ksys.h>
11
12#include <string>
13#include <vector>
14#include <thread>
15
16#include "base.hpp"
17#include "window.hpp"
18#include "thread.hpp"
19
20namespace KolibriLib
21{
23 namespace childWindow
24 {
25 // Я вам запрещаю записывать значения в эту переменную
26 std::string Message, Title;
27 // Я вам запрещаю записывать значения в эту переменную
28 bool Used = false;
29
30 //Функция потока нового окна
31 void RenderMessageWindow(void)
32 {
33 std::string _Message = Message;
34 std::string _Title = Title;
35
36 window::Window window(_Title, {256,128});
37
38 point WindowSize = window.GetSize();
39
40 window.CreateText({window.GetMargin(), WindowSize.y / 2 }, {WindowSize.x, WindowSize.y / 2}, _Message);
41
42 while (true)
43 {
44 unsigned Event = OS::WaitEvent(); // Ждём пока не появится какой либо ивент
45 switch (Event)
46 {
47 case KSYS_EVENT_REDRAW:
48 window.Render();
49 break;
50 case KSYS_EVENT_BUTTON:
51 unsigned button = UI::buttons::GetPressedButton();
52 switch (button)
53 {
54 case 1: //Если нажата кнопка X(та что закрывает окно)
55 return;
56 }
57 }
58 }
59 }
60
61
62
66 void MessageBox(std::string _Message, std::string _Title)
67 {
68 while (true)
69 {
70 if (!Used) // Проверка на то создают ли другие потоки ещё MessageWindow.
71 { // Это так потому что глобальная переменная Newindex одна на всех
72 Used = true;
73
74 Message = _Message;
75 Title = _Title;
76 Used = true;
77
78
79 Thread::CreateThread((void(*))RenderMessageWindow, 2048);
80
81 Used = false; // Я всё, заКОНЧИЛ. Свободно!
82 return;
83 }
84 else // если занято то ждём
85 {
86 Wait(1);
87 }
88 }
89 }
90
93 inline void ErrorWindow(std::string ErrorMessage)
94 {
95 MessageBox(ErrorMessage, "Error!");
96 }
97 }
98}
99
100#endif // __CHILDWINDOW_H__
Класс для работы с окном
Definition window.hpp:47
unsigned int WaitEvent()
Ждать ивента
Definition base.hpp:47
unsigned CreateThread(void *ThreadEntry, unsigned ThreadStackSize=1024)
Создать поток
Definition thread.hpp:18
void MessageBox(std::string _Message, std::string _Title)
Создать окно с сообщением
Definition childWindow.hpp:66
void ErrorWindow(std::string ErrorMessage)
окошко с ошибкой
Definition childWindow.hpp:93
Основное пространство имён
Definition base.hpp:17
void Wait(unsigned time)
Подождать
Definition base.hpp:106
Просто точка
Definition base.hpp:22