LuckyELF
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: но вызвали очень большой интерес некоторые функции: Savescreen и Restorescreen(если не сложно можешь пояснить как они у тебя работают) | Ну собственно вот их код: Код: // Востанавливает часть экрана void RestoreScreen (byte xPos, byte yPos, byte xSize, byte ySize, byte *buf) { puttext (xPos, yPos, xPos + xSize, yPos + ySize, buf); delete [] buf; } // Сохраняет часть экрана byte *SaveScreen (byte xPos, byte yPos, byte xSize, byte ySize) { word buf_size = (xSize + 1) * (ySize + 1) * 2; byte *buf = new byte [buf_size]; if (!buf) { printf ("Нет свободной памяти для выполнения операции!\n"); return NULL; } gettext (xPos, yPos, xPos + xSize, yPos + ySize, buf); return buf; } | Значит так, SaveScreen сохраняет часть экрана в буффер, т.е. пишется Код: byte *buf = SaveScreen (15, 7, 50 + 2, 11 + 1); | после чего в buf будет сохранена часть экрана. Очень удобно когда приложение рисует много окошек, т.е. перед рисованием нового окошка нужно сохранить область экрана под ним, а после закрытия окошка востановить эту область. Востанавливается соответсвтенно вызовом функции RestoreScreen, соответственно пишется: Код: RestoreScreen (15, 7, 50 + 2, 11 + 1, buf); | Цитата: какие существуют способы очистки части экрана при работе в досе. | я знаю пару несколько вариантов: Код: window(x1, y1, x2, y2); clrscr(); window(1,1,80,25); | второй написать/использовать функцию ShowWin Вызов примерно такой Код: ShowWin (x, y, sizex, sizey, 0, 0, Color, Paper, ""); | Соответственно будет нарисованно окошко без рамки, без названия, с цветом символом Color и цветом фона Paper, которое благополучно затрет всю область :-) |