Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2015, 20:46   #1
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию Скрыть окно редактирования

Подскажите, как можно скрыть поле редактирования программы, ниже надписи "Edit Mode"?
В принципе, нужно оранизовать работу программы в двух режимах: просмотра и редактирования. В режиме просмотра должна отображаться только верхняя часть окна.

Изображение вывожу на плазменный ТВ, который висит в фойе больницы и весь/честной народ не должен видеть процесс редактирования. Можно такое организовать? Заранее благодарю..
Для наглядности, привожу примерный вид окна:
Изображения
Тип файла: jpg 022.jpg (53.3 Кб, 121 просмотров)
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 30.09.2015, 21:16   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я в свое время такую же досовскую программу оборачивал в окно, но координатами выставлял так, чтоб верхняя ее часть (где было меню) была за верхним пределом окна. Может тебе стоит сделать примерно так же?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.09.2015, 21:37   #3
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Спасибо за идею, но как потом редактировать, если меню за верхним пределом и его не видно? Или я не правильно понял? Если в режиме "EDIT" менять страницу целиком (0-1), то всё/равно юзер это увидит..
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 30.09.2015, 21:53   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну если бы я знал как именно у тебя панель сопряжена с монитором оператора, может быть и подсказал чего )
Как вариант (не самый э-ге-гей) скриншотить часть экрана, и отправлять его на панель.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.09.2015, 22:03   #5
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

..вообще-то идея была: в режиме редактирования создавать файл-данных (базу), а в режиме просмотра - просто читать эту базу. Но практическая реализация данного метода слишком-уж геморна, т.к. строки планирую выводить в цвете.
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 01.10.2015, 09:01   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
т.к. строки планирую выводить в цвете.
Ниччче не понял... Причем тут цвет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.10.2015, 22:07   #7
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

В таблице - каждый столбец хочу вывести определённым цветом, для чего написал такой макрос. На входе принимает 4 параметра: позиция в окне, смещение строки в памяти, её длинна и цвет. Макрос вызываю так:
Код:
mess1  db  ' EDIT MODE '

   ColorStr   126+16*160, mess1, 11, 0CFh
   
;===================================================================
macro ColorStr [StrPos,StrAdr,StrLen,StrColor]
{  push  es
   push  0b800h            ; настраиваемся
   pop   es	               ;      на сегмент видеобуфера
   mov   di,StrPos         ; начальная позиция строки в окне
   mov   si,StrAdr         ; адрес текстовой строки
   mov   cx,StrLen         ; длинна строки
   mov   ah,StrColor       ; цвет символов/фона
LStr:
   lodsb                   ; берём байт из SI
   stosw                   ; AH = атрибут, AL = символ
   loop  LStr              ; мотаем CX-раз
   pop   es	      }
;===================================================================
Если читать данные из файла, то нужно будет писать каждое слово из файла в буфер, а потом выводить на экран. Разбухнет программа.. Я всё-таки прислушался к твоему совету и остановился на прокрутке строк за пределы экрана. Данные ввожу в переменную STOSB'ом и потом вывожу указанным выше макросом.
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 02.10.2015, 13:14   #8
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

..а как можно организовать ввод с клавиатуры в кодировке OEM866-RU, т.е. ввести и сохранить кирилицу? Может есть для этого готовые инклуды, типа WIN1251.INC?

Я тут пытался написать конвертор, который заменяет символы командой "XLAT", но он выводит только некоторые символы и в основном сохраняет крякозябры. Ввожу кирилицу без переключения раскладки и подменяю их на-лету. Может чё делаю не так?
Код:
oemTable  db     00h,  00h, 0DDh, 0FCh,  00h,  00h,  3Fh, 0FDh
          db     00h,  00h,  00h,  00h, 0E1h,  00h, 0FEh,  2Eh
          db     00h,  00h,  00h,  00h,  00h,  00h,  00h,  00h
          db     00h,  00h, 0C6h, 0A6h,  82h,  00h, 0DEh,  00h
          db     00h,  94h,  88h,  91h,  82h,  92h,  80h,  8Fh
          db     90h,  98h,  8Eh,  8Bh,  84h,  9Ch,  92h,  99h
          db     87h,  89h,  8Ah,  9Bh,  85h,  83h,  8Ch,  96h
          db     7Bh,  8Dh,  9Fh, 0E5h,  00h, 0EAh,  00h,  00h
          db     00h, 0E4h, 0A8h, 0E1h, 0A1h, 0E3h, 0A0h, 0AFh
          db    0E0h, 0E8h, 0AEh, 0ABh, 0A4h, 0ECh, 0E2h, 0E9h
          db    0A7h, 0A9h, 0AAh, 0EBh, 0A5h, 0A3h, 0ACh, 0E6h
          db    0E7h, 0ADh, 0EFh,  95h,  00h,  00h, 0F0h,  00h

   cmp   al,20h               ; символ в AL
   jb    nextChar
   cmp   al,80h
   ja    nextChar
   push  bx  
   mov   bx,oemTable
   sub   al,20h
   xlatb
   add   al,20h
   pop   bx
   int   29h
nextChar:
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 02.10.2015, 13:26   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

OemToChar() виндовая вроде есть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.10.2015, 00:32   #10
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
OemToChar() виндовая вроде есть.
....альтернатива.....Ang- инскими буквами юзаем вход RUS текст. Меняю по-ходу
Как адо..

Код:
use16
org 100h
jmp start

;//============ А ====== Б ====== В ====== Г ===============================
oemTable   db  80h,46h, 81h,3Ch, 82h,44h, 83h,55h	    ; заглавные...
	   db  84h,4Ch, 85h,54h, 0F0h,7Eh,86h,3Ah
	   db  87h,50h, 88h,42h, 89h,51h, 8Ah,52h
	   db  8Bh,4Bh, 8Ch,56h, 8Dh,59h, 8Eh,4Ah
	   db  8Fh,47h, 90h,48h, 91h,43h, 92h,4Eh
	   db  93h,45h, 94h,41h, 95h,7Bh, 96h,57h
	   db  97h,58h, 98h,49h, 99h,4Fh, 9Ch,4Dh
	   db  9Bh,53h, 9Ah,7Dh, 9Dh,22h, 9Eh,3Eh, 9Fh,5Ah

;//============= а ======= б ======= в ======= г ===========================
	   db  0A0h,66h, 0A1h,2Ch, 0A2h,64h, 0A3h,75h	    ; прописные...
	   db  0A4h,6Ch, 0A5h,74h, 0B8h,60h, 0A6h,3Bh
	   db  0A7h,70h, 0A8h,62h, 0A9h,71h, 0AAh,72h
	   db  0ABh,6Bh, 0ACh,76h, 0ADh,79h, 0AEh,6Ah
	   db  0AFh,67h, 0E0h,68h, 0E1h,63h, 0E2h,6Eh
	   db  0E3h,65h, 0E4h,61h, 0E5h,5Bh, 0E6h,77h
	   db  0E7h,78h, 0E8h,69h, 0E9h,6Fh, 0ECh,6Dh
	   db  0EBh,73h, 0EAh,5Dh, 0EDh,27h, 0EEh,2Eh, 0EFh,7Ah
	   

start:
   mov	 dx,80			   ; длинна строки
inputStr:
   xor	 ax,ax			   ; ждём клавишу..
   int	 16h
   mov	 bl,al			   ; отправляем её в BL
   call  oemString		   ; зовём функцию (возвращает в AL)!
   int	 29h
   dec	 dx			   ; уменьшаем счётчик символов
   or	 dx,dx			   ; проверка DX на нуль
   jnz	 inputStr		   ; достигли конца строки?

   xor	 ax,ax			   ; выход!
   int	 16h	       
   ret		 

;==================================================================================//
oemString:		
   mov	 si,oemTable		   ; адрес таблицы
   mov	 cx,66			   ; длинна таблицы
@1:
   inc	 si			   ; пропустим RUS символ в таблице
   lodsb			   ; возьмём ANG символ
   cmp	 al,bl			   ; сравниваем с юзерским символом
   je	 found			   ; совпали?
   loop  @1			   ; проверяем всю таблицу

   xchg  al,bl			   ; в таблице нет такого символа. Восстановим юзерский
   jmp	 noFound		   ; на выход!
found:
   dec	 si			   ; если нашли, то возвращаемся на(2) назад
   dec	 si
   mov	 al,byte[si]		   ; копируем OEM866-RU в AL
noFound:
ret
...в DX указывай кол-во символов, и кирилица на выходе будет... OEM866 --> OEM866-RU
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 04.10.2015 в 00:40.
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как скрыть окно? pavellyba Общие вопросы Delphi 6 24.08.2011 21:51
скрыть окно spydark91 Общие вопросы Delphi 3 02.07.2011 18:04
Скрыть окно EXCEL abastorr Microsoft Office Excel 1 09.02.2010 03:25
Скрыть чужое окно ЧИЖ Win Api 8 12.06.2008 00:55