| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
| ||||||||||||||||
![]() |
Шаг 7 - Следим за процессом соединения Создание проекта Для изучения данного вопроса Вам необходимо создать проект с диалоговым окном, как главным окном программы и с кнопкой. У кнопки должна обрабатываться процедура нажатия. Как это сделать? Смотри шаг 30-31 MFC по шагам. Создаем код В файле DiaDlg.cpp создать код процедуры. void OnRas(UINT unMsg,RASCONNSTATE rasconnstate,DWORD dwError) { switch (rasconnstate) { case RASCS_OpenPort : AfxMessageBox("RASCS_OpenPort"); break; case RASCS_PortOpened: AfxMessageBox("RASCS_PortOpened"); break; case RASCS_ConnectDevice: AfxMessageBox("RASCS_ConnectDevice"); break; case RASCS_DeviceConnected: AfxMessageBox("RASCS_DeviceConnected"); break; default: AfxMessageBox("?"); } } Изменить реакцию на нажатие кнопки. void CDiaDlg::OnDial() { HRASCONN hrascon=NULL; RASDIALPARAMS rc[1]; rc[0].dwSize = sizeof(RASDIALPARAMS); GetPrivateProfileString("Ras","EntryName", "not ready",rc[0].szEntryName,99,"Ras.ini"); GetPrivateProfileString("Ras","Phone", "not ready",rc[0].szPhoneNumber,99,"Ras.ini"); GetPrivateProfileString("Ras","UserName", "not ready",rc[0].szUserName,99,"Ras.ini"); GetPrivateProfileString("Ras","Password", "not ready",rc[0].szPassword,99,"Ras.ini"); strcpy(rc[0].szDomain,""); RasDial(NULL,NULL,rc,0,OnRas,&hrascon); } Описание Обратите внимание на RasDial. Общая идея такова. После выполнения каждого шага соединения. Например получения доступа к порту, или набора номера происходит вызов некоторой процедуры, куда передаются парамеры о шаге выполения и успехе операции. Указатель на эту процедуру и тип параметров указан здесь (жирные) RasDial(NULL,NULL,rc,0,OnRas,&hrascon); Если в данной позиции стоит ноль, то функция должна иметь такие параметры: VOID WINAPI RasDialFunc( UINT unMsg, RASCONNSTATE rasconnstate, DWORD dwError); Если 1, то VOID WINAPI RasDialFunc1( HRASCONN hrasconn, UINT unMsg, RASCONNSTATE rascs,DWORD dwError,DWORD dwExtendedError); А параметр 2 используеться для NT. В параметры Вашей функции передается тип операции в переменной rasconnstate, которую и анализируем для вывода сообщений на экран. Делайте всё необходимое и запускате. Сначала программа будет сообщять Вам о том, что порт открыт, потом о том, что устанавливается соединение и потом знаки вопроса. Список событий довольно длинный и я всё пока перечислять на стал. Шпаргалка Для контроля процесса соединения создайте функцию void OnRas(UINT unMsg,RASCONNSTATE rasconnstate,DWORD dwError) { ........ } Свяжите эту функцию с вызовом соединения RasDial(NULL,NULL,rc,0,OnRas,&hrascon); Не забудте, что параметры зависят от кода [Назад][Содержание] |
|
![]() | ||||||||||||||||
| ||||||||||||||||
![]() | ||||||||||||||||
|