Операционные системы. Марапулец Ю.В. - 57 стр.

UptoLike

Составители: 

LPSTR lpCmdLine,
INT nCmdShow )
{
if( DdeInitialize( &idInst, (PFNCALLBACK) DdeCallback,
APPCMD_FILTERINITS | CBF_SKIP_CONNECT_CONFIRMS |
CBF_FAIL_SELFCONNECTIONS | CBF_FAIL_POKES, 0 ) )
return(FALSE); // не продолжать при наличии ошибки
Одновременно с заданием функции обратного вызова происходит и
установка нескольких флагов, которые играют роль фильтров, ограничивающих
типы обрабатываемых сообщений.
APPCMD_FILTERINITS - Фильтруются все приложения за исключением тех,
имена которых совпадают с нашим собственным именем сервиса.
CBF SKIP_CONNECT_CONFIRMS - При установлении подключения
подтверждающие сообщения не посылаются.
CBF_FAIL_SELFCONNECTIONS - Не допускается подключение приложения
к самому себе.
CBF FAIL_POKES - Не допускаются транзакции XTYP_POKE.
Если по каким-либо причинам не удается установить функцию обратного
вызова, приложение возвращает значение FALSE
и прекращает свою работу (но
это событие маловероятно).
Далее производится вызов функции CreateWindow. В случае
возникновения ошибки перед выходом из приложения принимаются меры по
вызову функции DdeUninitialize:
hinst = hInstance;
hwnd = CreateWindow( szAppName, szAppTitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL );
if( ! hwnd )
{
DdeUninitialize ( idInst );
return ( FALSE ) ;
}
На следующем шаге происходит поиск аргумента командной строки,
который будет использоваться для идентификации отдельных экземпляров
приложения. Поскольку исходному экземпляру не должен передаваться
аргумент командной строки, по умолчанию ему назначается номер 1.
57
                LPSTR lpCmdLine,
                INT nCmdShow )
{
     …
     if( DdeInitialize( &idInst, (PFNCALLBACK) DdeCallback,
         APPCMD_FILTERINITS | CBF_SKIP_CONNECT_CONFIRMS |
                   CBF_FAIL_SELFCONNECTIONS | CBF_FAIL_POKES, 0 ) )
           return(FALSE);         // не продолжать при наличии ошибки


      Одновременно с заданием функции обратного вызова происходит и
установка нескольких флагов, которые играют роль фильтров, ограничивающих
типы обрабатываемых сообщений.
 APPCMD_FILTERINITS - Фильтруются все приложения за исключением тех,
     имена которых совпадают с нашим собственным именем сервиса.
 CBF SKIP_CONNECT_CONFIRMS - При установлении подключения
     подтверждающие сообщения не посылаются.
 CBF_FAIL_SELFCONNECTIONS - Не допускается подключение приложения
     к самому себе.
 CBF FAIL_POKES - Не допускаются транзакции XTYP_POKE.
      Если по каким-либо причинам не удается установить функцию обратного
вызова, приложение возвращает значение FALSE и прекращает свою работу (но
это событие маловероятно).
      Далее производится вызов функции CreateWindow. В случае
возникновения ошибки перед выходом из приложения принимаются меры по
вызову функции DdeUninitialize:

     hinst = hInstance;
     hwnd = CreateWindow( szAppName, szAppTitle,
                               WS_OVERLAPPEDWINDOW,
                               CW_USEDEFAULT, CW_USEDEFAULT,
                               CW_USEDEFAULT, CW_USEDEFAULT,
                               NULL, NULL, hInstance, NULL );
     if( ! hwnd )
     {
            DdeUninitialize ( idInst );
            return ( FALSE ) ;
     }


     На следующем шаге происходит поиск аргумента командной строки,
который будет использоваться для идентификации отдельных экземпляров
приложения. Поскольку исходному экземпляру не должен передаваться
аргумент командной строки, по умолчанию ему назначается номер 1.

                                   57