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

UptoLike

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

в ответ на сообщение WM_CREATE
происходит инициализация таймера, после
чего генерируется сообщение WM_SIZE,
позволяющее установить размеры и
положение окна данного экземпляра.
Подпрограмма обработки сообщения WM_TIMER
- это первое место, где
происходит вызов DDE-функций. Она начинается с обновления переменной
LocalStock:
case WM_TIMER:
if( random( 2 ) )
LocalStock += random( 100 );
else
LocalStock -= min( (UINT) random) 100 ), LocalStock );
DataOut = ( iInst << 24 ) + LocalStock;
Далее происходит обновление переменной DataOut, которая задает
пользовательский формат данных, предназначенный для передачи. Значение
переменной образуется путем размещения номера экземпляра приложения iInst
в старшем байте старшего слова, а переменной LocalStock - в младшем слове,
Когда данные готовы, выполняется функция DdePostAdvise,
уведомляющая другие приложения о наличии данных. Передаваемое
сообщение принимается другими участниками диалога с помощью функции
DdeCallback в виде транзакции XTYP_ADVDATA.
DdePostAdvise( idInst, hszAppName, hszAppName );
SetRect( &rc, 0, 0, cxText, cyText );
InvalidateRect( hwnd, &rc, TRUE ) ;
UpdateWindow( hwnd ) ;
break;
После выдачи DDE-транзакции экземпляр приложения передает
инструкции для обновления своего собственного окна, чтобы отобразить в нем
новые данные.
Транзакцию подключения можно также выполнить в ответ на сообщение
WM_PAINT.
case WM_PAINT:
... // подсчет числа участников
if( hConvList )
{
hConv = DdeQueryNextServer( hConvList, 0 );
while ( hConv )
{
ciData.cb = sizeof(CONVINFO);
DdeQueryConvInfo( hConv, QID_SYNC, &ciData );
63
в ответ на сообщение WM_CREATE происходит инициализация таймера, после
чего генерируется сообщение WM_SIZE, позволяющее установить размеры и
положение окна данного экземпляра.
      Подпрограмма обработки сообщения WM_TIMER - это первое место, где
происходит вызов DDE-функций. Она начинается с обновления переменной
LocalStock:

     case WM_TIMER:
           if( random( 2 ) )
                  LocalStock += random( 100 );
           else
                  LocalStock -= min( (UINT) random) 100 ), LocalStock );
           DataOut = ( iInst << 24 ) + LocalStock;

      Далее происходит обновление переменной DataOut, которая задает
пользовательский формат данных, предназначенный для передачи. Значение
переменной образуется путем размещения номера экземпляра приложения iInst
в старшем байте старшего слова, а переменной LocalStock - в младшем слове,
      Когда данные готовы, выполняется функция DdePostAdvise,
уведомляющая другие приложения о наличии данных. Передаваемое
сообщение принимается другими участниками диалога с помощью функции
DdeCallback в виде транзакции XTYP_ADVDATA.

           DdePostAdvise( idInst, hszAppName, hszAppName );
           SetRect( &rc, 0, 0, cxText, cyText );
           InvalidateRect( hwnd, &rc, TRUE ) ;
           UpdateWindow( hwnd ) ;
           break;

     После выдачи DDE-транзакции экземпляр приложения передает
инструкции для обновления своего собственного окна, чтобы отобразить в нем
новые данные.
     Транзакцию подключения можно также выполнить в ответ на сообщение
WM_PAINT.

     case WM_PAINT:
       ...                        // подсчет числа участников
           if( hConvList )
           {
                 hConv = DdeQueryNextServer( hConvList, 0 );
                 while ( hConv )
                 {
                       ciData.cb = sizeof(CONVINFO);
                       DdeQueryConvInfo( hConv, QID_SYNC, &ciData );

                                      63