|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 1, 2003 19:59:19 Помогите сделать следующее: Имеется два CоmboBox-а с хендлами hKAT и hSUBKAT и поле редактирования с хендлом hNUM. Нужно в процессе изменения содержимого Edit-a принадлежащего любому из CоmboBox-ов изменять содержимое hNUM. Пример: В hNUM текст "30" к нему нужно добавить первые буквы (если первые буквы большие их нужно заменить маленькими) из содержимого CоmboBox-ов. Проблема в следующем: выбираю в hKAT "Фильмы" в hNUM ничего не меняется (Edit-ы CоmboBox-ов изначально текста на содержат) - нормально. выбираю в hSUBKAT "Боевики" в hNUM текст "фб30" - всё правильно. пытаюсь изменить выбор в hSUBKAT на "Комедии" в hNUM текст по прежнему "фб30", а хотелось бы, что бы поменялось на "фк30". Далее снова открываю поле со списком hSUBKAT снова выбираю "Комедии" в hNUM текст "фб30" как и должно быть, но только совторого раза, а хотелось бы с первого. Вот кусок исходника на Fasm, но здесь, на сколько я понимаю, дело в правильном применении сообщений и это не так важно:
wmcommand:
cmp [wparam],ID_CANCEL
je closeadd
cmp [wparam],ID_ADD
je _add
mov eax,[wparam]
shr eax,16
cmp ax,CBN_EDITCHANGE
je _kat
cmp ax,CBN_SELCHANGE
je _kat2
cmp ax,CBN_DBLCLK
je _kat2
cmp ax,CBN_SELENDOK
je _kat2
jmp finishadd
_kat2:
cmp [flg2],0
je finishadd
xor eax,eax
mov [iii],ax
invoke GetWindowText,[hKAT],Buffer,40
cmp eax,0
jne .normals
invoke SendMessage,[hKAT],CB_GETCURSEL,0,0
invoke SendMessage,[hKAT],CB_GETLBTEXT,eax,Buffer
cmp eax,CB_ERR
je finishadd
.normals:
mov eax,Buffer
mov cl,[eax]
cmp cl,0E0h
jnb .nomen
add cl,20h
.nomen:
xor eax,eax
mov al,cl
or [iii],ax
invoke GetWindowText,[hSUBKAT],Buffer,40
cmp eax,0
jne .normals2
invoke SendMessage,[hSUBKAT],CB_GETCURSEL,0,0
invoke SendMessage,[hSUBKAT],CB_GETLBTEXT,eax,Buffer
cmp eax,CB_ERR
je finishadd
.normals2:
mov eax,Buffer
mov cl,[eax]
cmp cl,0E0h
jnb .nomen2
add cl,20h
.nomen2:
xor eax,eax
mov ah,cl
or [iii],ax
mov ecx,Buffer
xor eax,eax
mov ax,[iii]
mov [ecx],ax
invoke GetWindowText,[hNUM],rer,10
mov edx,rer
.cccyy:
cmp byte [edx],39h
jb .numb
inc edx
jmp .cccyy
.numb:
mov ecx,Buffer
add ecx,2
.cccyyy:
mov al,[edx]
mov [ecx],al
cmp al,0
je .sstt
inc ecx
inc edx
jmp .cccyyy
.sstt:
invoke SetWindowText,[hNUM],Buffer
jmp finishadd
_kat:
cmp [flg2],0
je finishadd
xor eax,eax
mov [iii],ax
invoke GetWindowText,[hKAT],Buffer,40
cmp eax,0
je finishadd
mov eax,Buffer
mov cl,[eax]
cmp cl,0E0h
jnb .nomen
add cl,20h
.nomen:
xor eax,eax
mov al,cl
or [iii],ax
invoke GetWindowText,[hSUBKAT],Buffer,40
cmp eax,0
je finishadd
mov eax,Buffer
mov cl,[eax]
cmp cl,0E0h
jnb .nomen2
add cl,20h
.nomen2:
xor eax,eax
mov ah,cl
or [iii],ax
mov ecx,Buffer
xor eax,eax
mov ax,[iii]
mov [ecx],ax
invoke GetWindowText,[hNUM],rer,10
mov edx,rer
.cccyy:
cmp byte [edx],39h
jb .numb
inc edx
jmp .cccyy
.numb:
mov ecx,Buffer
add ecx,2
.cccyyy:
mov al,[edx]
mov [ecx],al
cmp al,0
je .sstt
inc ecx
inc edx
jmp .cccyyy
.sstt:
invoke SetWindowText,[hNUM],Buffer
jmp finishadd
|
|
|
Дата: Авг 2, 2003 09:53:57 Всем спасибо, проблема решена. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.055 |