Статьи по Assembler


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


jmp sp_ok

;При закрытии главного окна заблокировать кнопку

;и разорвать соединение

@elseif(eax==WM_CLOSE)

invoke EnableWindow,butt_window,FALSE

@if(online)

call ras_hangup

@endif

jmp sp_nok

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

;взаимодействия экземпляров приложения. Получив это сообщение,

;экземпляр, запущенный первым, сообщает дескриптор своего главного окна.

;Сообщение, полученное вторым, принимает от первого дескриптор его главного окна,

;выводит его на первый план и завершается. Подробнее...

@if(eax==my_message)

mov ebx,w_param

@if(ebx!=main_window)

@if(!l_param)

invoke SendMessageA,HWND_BROADCAST,eax,main_window,1

@else

invoke SetForegroundWindow,w_param

invoke ExitProcess,EXIT_OVERLOADED

@endif

@endif

jmp sp_ok

@endif

;Возврат необработанных сообщений системе

sp_nok:

invoke DefWindowProcA,window_from,message,w_param,l_param

ret

;Завершение оконной процедуры для обработанных сообщений

sp_ok:

xor eax,eax

ret

superprocedure ENDP


;ЗАГРУЗКА ФАЙЛА ИНИЦИАЛИЗАЦИИ

;Файл mycall.ini хранит состояние списков и положение главного окна на момент

;завершения предыдущего сеанса работы приложения

;///////////////////////////////////////////////////////////// Загрузка файла инициализации

.data?

ini_filedd ?

buffer db INI_FILE_LENGTH dup(?)

bytes_readwrite dd ?

.const

ini_file_name db "mycall.ini",0

.code

load_ini PROC

;Инициализация глобальных переменных

mov main_win_left,MAIN_WIN_DEFAULT_LEFT

mov main_win_top,MAIN_WIN_DEFAULT_TOP

mov current_con,0

mov ebx,MAX_CON

@while(ebx)

dec ebx

mov [con_phone+ebx],0

mov [con_user+ebx],0

@endw

;Попытка загрузки файла mycall.ini

;В случае неудачи используются значения по умолчанию

invoke CreateFileA,offset ini_file_name,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL

@if(eax!=INVALID_HANDLE_VALUE)

;Чтение файла mycall.ini

push eax

invoke ReadFile,eax,offset buffer,INI_FILE_LENGTH,offset bytes_readwrite,NULL

@if(eax)

;Приведение позиции окна к фактическим размерам экрана и запоминание




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



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