| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > DdeConnect |
| Автор: other_denis 12.5.2003, 13:05 |
| Помогите пожалуйста! Написал DDE сервер и DDE клиент. Запускаю DDE клиент, который в свою очередь запускает DDE сервер, а потом пытается с ним соединиться и проблема в том, что программа останавливается на DdeConnect(). Однако если из диспетчера задач закрыть DDE сервер, DdeConnec() возвращает ошибку DMLERR_NO_CONV_ESTABLISHED. Если же не запускать DDE сервер, то DdeConnect() сразу возвращат ошибку DMLERR_NO_CONV_ESTABLISHED. Где есть суслик :-) я никак не могу понять. Работаю в WinMe. |
| Автор: other_denis 16.5.2003, 09:50 |
| Проблема была в том, что я некоректно написал DDE сервер, а именно, использовал цикл while(fExit) для выхода из программы. В связи с чем приношу свои извинения за вышенаписанную просьбу о помощи. if (DdeInitialize(...) {MessageBox(0,"Ошибка инициализации сервера","Error",MB_OK|MB_ICONSTOP);} else { //---------------------------------------------------------------------------- //если регистрация прошла успешно создаем дескрипторы объявленных ранее строк //---------------------------------------------------------------------------- //дескриптор строки с именем сервиса ServerCOMService hszServerCOMService = DdeCreateStringHandle(idInst,szServerCOMService,CP_WINANSI); . . . //---------------------------------------------------------------------------- //если все прошло успешно, регистрируем сервисы поддерживаемые приложением //---------------------------------------------------------------------------- DdeNameService(idInst,hszServerCOMService,(HSZ)NULL,DNS_REGISTER); if (DdeGetLastError(idInst)!=DMLERR_NO_ERROR) {MessageBox(0,"Ошибка регистрации сервисa","Error",MB_OK|MB_ICONSTOP); goto Exit;} //---------------------------------------------------------------------------- //если все прошло успешно, ожидаем когда DDE клиент отправит команду на завершение работы сервера //---------------------------------------------------------------------------- while(fExit); //---------------------------------------------------------------------------- . . . |