· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› CоmboBox

Посл.отвђт Сообщен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