Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FASM и курсор ввода. Автоматическое перемещение курсора ввода 
:(
    Опции темы
Moky
Дата 31.12.2018, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.3.2013

Репутация: нет
Всего: нет



Давно не брал я в руки шашек!!!
День, ночь, утро, вечер добрые, много уважаемые форумчане! Не знаю даже
как подступится к своему делу. Но давайте попробуем.
Столкнулся я лет семь, восемь тому назад с порталом пациента. Программа записи к врачу. В ней при заполнении личных данных, переход курсора ввода с заполненного поля edit на другое, незаполненное поле edit происходил автоматически. Многие годы я не обращал внимание на эту примочку, но признайтесь, удобная штука. Решил в этом году эту примочку применить. Пошарил в Инете. А ничего нет. Ну, думаю, долгими зимними вечерами... Вечера  пошли на убыль, а дело так никуда не пошло. Может кто подскажет, а то я и сообщения обрабатывал и контролировал заполнение полей и googl'ил, но ни что не получается. В чем суть вопроса: окно, простое, его дочки класса edit четыре штуки. Что я хотел? Пусть в поля вводится дата, формат ДД MM ГГ. Первое поле число 01, второе поле месяц 01, третье поле год 19. Так вот как только я введу в первое поле, цифру ноль, а за ней единицу, курсор ввода должен автоматически перепрыгнуть на поле два  и так далее.
Поможем кто можем?
Заранее благодарен, Moky.
Еще есть код, я пишу на FASMe, который я пытался запустить. В два поля цифры вводятся в третье нет.
Код


format PE GUI 4.0
entry start

include 'win32a.inc'




section '.data' data readable writeable

class db 'FASMWIN32',0
title db 'ОКНО',0
classb db 'BUTTON',0
classe db 'EDIT',0
classs db 'STATIC',0
textb1 db 'Копировать',0
textb2 db 'Очистить',0
textg db 'Рамка',0
texts db 'Текст',0
textc db 'Очистить все',0
errtxt db 'Ошибка',0
hwnd dd ?
hwnde dd ?
hwnds dd ?
hwndc dd ?
text rb 100
hEdit1  dd ?
hEdit2  dd ?
hEdit3  dd ?
flag dd ?
var2 dd ?
var1 dd ?
    buff1 rb 16
    buff2  rb 16
 formats db '%02d',0
result db 256 dup (?)

wc WNDCLASS 0,WindowProc,0,0,0,0,0,COLOR_BTNFACE+1,0,class

msg MSG

section '.code' code readable executable

start:

invoke GetModuleHandle,0
mov [wc.hInstance],eax
invoke LoadIcon,0,IDI_APPLICATION
mov [wc.hIcon],eax
invoke LoadCursor,0,IDC_ARROW
mov [wc.hCursor],eax
invoke RegisterClass,wc
cmp eax,0
je error

invoke CreateWindowEx,0,class,title,WS_VISIBLE+ WS_SYSMENU,\
128,128,256,192,0,0,[wc.hInstance],0
cmp eax,0
je error
mov [hwnd],eax
msg_loop:
invoke GetMessage,msg,0,0,0
cmp eax,0
je end_loop
invoke IsDialogMessage,[hwnd],msg
cmp eax,0
jne msg_loop
invoke TranslateMessage,msg
invoke DispatchMessage,msg
jmp msg_loop

error:
invoke MessageBox,0,errtxt,0,MB_ICONERROR+MB_OK

end_loop:
invoke ExitProcess,[msg.wParam]

proc WindowProc hwnd,wmsg,wparam,lparam
push ebx esi edi
cmp [wmsg],WM_CREATE
je .wmcreate
cmp [wmsg],WM_COMMAND
je .wmcommand
cmp [wmsg],WM_DESTROY
je .wmdestroy
.defwndproc:
invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam]
jmp .finish



.wmcreate:

invoke  CreateWindowEx,0,classe,0,WS_VISIBLE+WS_CHILD+WS_BORDER+WS_TABSTOP+ES_AUTOHSCROLL,\
10,25,230,20,[hwnd],1003,[wc.hInstance],NULL
mov [hEdit1], eax
invoke SetFocus, [hEdit1]
invoke  SendMessage,[hEdit1],EM_SETLIMITTEXT,2,0


invoke  CreateWindowEx,0,classe,0,WS_VISIBLE+WS_CHILD+WS_BORDER+WS_TABSTOP+ES_AUTOHSCROLL,\
10,50,230,20,[hwnd],1004,[wc.hInstance],NULL
mov [hEdit2], eax
invoke  SendMessage,[hEdit2],EM_SETLIMITTEXT,2,0


invoke CreateWindowEx,0,classe,0,WS_VISIBLE+WS_CHILD+WS_BORDER+WS_TABSTOP,\
10,75,230,20,[hwnd],1005,[wc.hInstance],NULL
mov [hEdit3],eax
invoke  SendMessage,[hEdit3],EM_SETLIMITTEXT,2,0
jmp .finish


  .wmcommand:
  xor eax, eax
invoke  GetDlgItemText, [hwnd], 1003, buff1, 16
 mov [var1], eax
 cmp eax, 2
 jne   .finish
 invoke SetFocus, [hEdit2]

     jmp .finish
         xor eax, eax
 invoke  GetDlgItemText, [hwnd], 1004, buff2, 16
 mov [var2], eax
 cmp eax, 2
 jne   .finish
 invoke SetFocus, [hEdit3]


 jmp .finish
.wmdestroy:

invoke PostQuitMessage,0
mov eax,0
.finish:
pop edi esi ebx
ret
endp

section '.idata' import data readable writeable

library kernel32,'KERNEL32.DLL',\
user32,'USER32.DLL'

include 'api\kernel32.inc'
include 'api\user32.inc' 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для Windows/DOS"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для Windows/Dos | Следующая тема »


 




[ Время генерации скрипта: 0.0943 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.