Проверка наличия уже запущенных экземпляров
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
Содержание Назад Вперед