LINUX.ORG.RU

Неизвестное число окон, открытие и закрытие


0

1

Привет всем!
Поделитесь пожалуйста технологией. Никак не дотумкаю.
Нужно динамически создавать и уничтожать окна. Класс окна написан. Создать динамический массив указателей на объекты этого класса я могу. Но непонятно как их удалять. Допустим в конструкторе класса могу присваивать Count (номер объекта в массиве). Но если из массива удалять из середины, то Count окон в конце масива нужно будет менять. Мне не кажется это красивым.

Наверняка есть уже готовая техника, которую я не знаю. Как не городить велосипеды?

Спасибо!

★★★★★
Ответ на: комментарий от anonymous

Сорри, я наверно неправильно написал. Уже просто который час думаю. Мозг целиком этим занят.

Короче нужно окна как-то идентифицировать. И не открывать еще раз окно с тем же идентификатором. Вот здесь и есть сложность в удалении.

В принципе можно сделать Dictionary - одно значение будет окно, второе - идентификатор. + Тот же идентификатор будет в конструкторе окна. Тогде при закрытии окна, можно будет искать его идентификатор в словаре и удалить всю запись целиком из словаря - т.е. и окно и идентификатор.

Так? :)

hibou ★★★★★
() автор топика
Ответ на: комментарий от hibou

> А есть еще решения?

int delete_window(Window *array, Window win, int count) {
	int i;
	for (i = 0; i < count; ++i)
		if (array[i] == win) {
			count--;
			if (i < count)
				array[i] = array[count];
			break;
		}
	return count;
}

это если порядок не важен.

arsi ★★★★★
()
Ответ на: комментарий от hibou

> Короче нужно окна как-то идентифицировать. И не открывать еще раз окно с тем же идентификатором. Вот здесь и есть сложность в удалении.

что мешает использовать уникальные связку XWindowID/Name/Class/Resource?

ananas ★★★★★
()
Ответ на: комментарий от ACR

>да да, сделай как в MFC хеш хендлов(интов в простанародье) получится очень отстойно но будет работать

А чем это так отстойно?

anonymous
()
Ответ на: комментарий от lazyklimm

Телепаты не нужны. Надо научиться мыслить абстрагированно от тулкитов и прочих велосипедов.

hibou ★★★★★
() автор топика
Ответ на: комментарий от hibou

ололо, неужели на xlib?

Кстати, mcabber юзает glib и невыделывается, несмотря на то что консольный

lazyklimm ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.