Статьи по Assembler


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


invoke RegisterClassExA,offset mw_class

@if !eax

mov eax,FATAL_MAIN_CLASS_REG

jmp bad

@endif

;Главное окно создается:

invoke CreateDialogParamA,hinst,101,NULL,NULL,0

@if !eax

mov eax,FATAL_MAIN_CLASS_CREATE

jmp bad

@endif

mov main_window,eax


;Проверка наличия уже запущенных экземпляров MyCall

;Для этого используется обмен специальным глобальным оконным сообщением. Подробнее...

invoke RegisterWindowMessageA,offset my_message_name

mov my_message,eax

@if(eax)

invoke SendMessageA,HWND_BROADCAST,my_message,main_window,0

@endif


;Загрузка файла mycall.ini и восстановление положения окна на рабочем столе

call load_ini

invoke SetWindowPos,main_window,NULL,main_win_left,main_win_top,NULL,NULL,SWP_NOSIZE OR SWP_NOZORDER

;Показ главного окна

invoke ShowWindow,main_window,SW_SHOW


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

;как мы захотим что-нибудь с этими элементами поделать.

invoke GetDlgItem,main_window,1000

mov conn_window,eax

invoke GetDlgItem,main_window,1001

mov phon_window,eax

invoke GetDlgItem,main_window,1002

mov user_window,eax

invoke GetDlgItem,main_window,1003

mov butt_window,eax

invoke GetDlgItem,main_window,1004

mov stat_window,eax

;Запоминание исходных размеров главного окна. Пригодится потом, когда при установлении

;соединения в нижней части окна будем показывать строку статуса.

invoke GetWindowRect,main_window,offset win_dim

mov eax,win_dim.right

sub eax,win_dim.left

mov win_width,eax

mov eax,win_dim.bottom

sub eax,win_dim.top

mov win_height,eax


;Загрузка файла настроек mycall.txt. Содержимое файла при этом слегка модифицируется:

;разделители и пробелы заменяются 0h, а в конец дописывается 1h

call load_data

@if(eax)

jmp bad

@endif

;По данным файла mycall.txt формируется список соединений conn_window

xor edx,edx;con_number

xor ecx,ecx;sub_string

xor ebx,ebx;sub_string_poz

mov esi,dat_buffer

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

@if(word ptr [esi]==0)

inc ecx

xor ebx,ebx

add esi,2




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