Статьи по Assembler

Nano ceramic pro 9h по материалам http://ceramicpro.su. |

Main.asm для mycall (ассемблер) - часть 3


@if(ecx==3)

mov ecx,0

@endif

@endif

@if(ecx==0)

@if(ebx==0)

@if(byte ptr[esi]!=0)

@if(byte ptr[esi]!=1)

@push ecx,edx,ebx,esi

invoke SendMessageA,conn_window,CB_ADDSTRING,0,esi

@pop ecx,edx,ebx,esi

inc edx

@if(edx>=MAX_CON)

@break

@endif

@endif

@endif

@endif

@endif

inc ebx

inc esi

@endw

;По данным файла mycall.ini устанавливается прошлая позиция списка conn_window

@if(current_con>=edx)

mov current_con,0

@endif

invoke SendMessageA,conn_window,CB_SETCURSEL,current_con,0

;По состоянию списка conn_window формируются остальные списки

call change_con


;ЦИКЛ ОЖИДАНИЯ СООБЩЕНИЙ И ЗАВЕРШЕНИЕ ПРИЛОЖЕНИЯ

;Неотъемлемый элемент приложений для Windows. В MyCall никаких особенностей не имеет

;Поскольку MyCall собирается без runtime-библиотеки, для завершения работы

;обязательно использовать функцию ExitProcess. Подробнее...

msg_loop:

invoke GetMessageA,offset loop_message,NULL,0,0

@if(!eax)

invoke ExitProcess,loop_message.wParam

@endif

invoke TranslateMessage,offset loop_message

invoke DispatchMessageA,offset loop_message

jmp msg_loop

bad:

invoke fatal,eax

invoke ExitProcess,EXIT_COMMON_ERROR

WinMain ENDP


;ОКОННАЯ ПРОЦЕДУРА

;Стандартный элемент приложений для Windows. В MyCall особенностей не имеет.

;///////////////////////////////////////////////////////////// Оконная процедура

.data?

win_pos RECT{}

.code

superprocedure PROC window_from,message,w_param,l_param

mov eax,message

;Обработка сообщения WM_COMMAND, передаваемого элементами управления диалога

@if(eax==WM_COMMAND)

mov eax,w_param

mov cl,16

shr eax,cl

;Обработка уведомления CBN_SELCHANGE, передаваемого списками при изменении позиции:

;1000: список соединений conn_window. Изменяет содержание phon_window и user_window

;1001: список телефонов phon_window. Устанавливает новый телефон для текущего соединения con_phone[current_con]

;1002: список логинов user_window. Устанавливает новый логин для текущего соединения con_user[current_con]

@if(eax==CBN_SELCHANGE)




- Начало -  - Назад -  - Вперед -



Книжный магазин