/* * SetTrackFont - redraw the tracking windows after a font change */ void SetTrackFont( void ) { unsigned i; DDETrackInfo *info; HFONT font; RECT area; font = GetMonoFont(); for( i = 0; i < NO_TRK_WND; i++ ) { info = (DDETrackInfo *)GET_WNDINFO( Tracking[i].hwnd ); makePushWin( info, Tracking[i].hwnd, info->hdrinfo, info->hdrcnt ); GetClientRect( Tracking[i].hwnd, &area ); ResizeListBox( area.right - area.left, area.bottom - area.top, &info->list ); SendMessage( info->list.box, WM_SETFONT, (WPARAM)font, MAKELONG( TRUE, 0 ) ); } } /* SetTrackFont */
/* * DDETrackingWndProc - handle messages from the tracking windows */ BOOL __export FAR PASCAL DDETrackingWndProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) { DDETrackInfo *info; WORD i; void **ptr; RECT area; WORD cmd; char *wintitle; info = (DDETrackInfo *)GetWindowLong( hwnd, 0 ); switch( msg ) { case WM_CREATE: info = MemAlloc( sizeof( DDETrackInfo ) ); memset( info, 0, sizeof( DDETrackInfo ) ); info->type = *(WORD *)((CREATESTRUCT *)lparam)->lpCreateParams; SetWindowLong( hwnd, 0, (DWORD)info ); switch( info->type ) { case DDEMENU_TRK_CONV: info->sorttype = PUSH_CLIENT; makePushWin( info, hwnd, ConvHdr, CNV_HDR_CNT ); wintitle = GetRCString( STR_CONVERSATIONS ); break; case DDEMENU_TRK_STR: info->sorttype = PUSH_STR_TEXT; makePushWin( info, hwnd, StrHdr, STR_HDR_CNT ); wintitle = GetRCString( STR_STRINGS ); break; case DDEMENU_TRK_LINK: info->sorttype = PUSH_CLIENT; makePushWin( info, hwnd, LnkHdr, LNK_HDR_CNT ); wintitle = GetRCString( STR_LINKS ); break; case DDEMENU_TRK_SERVER: info->sorttype = PUSH_INST; makePushWin( info, hwnd, SrvHdr, SRV_HDR_CNT ); wintitle = GetRCString( STR_REG_SERVERS ); break; } SetWindowText( hwnd, wintitle ); CreateListBox( hwnd, &info->list ); info->config = &Tracking[info->type - DDE_TRK_FIRST]; if( info->config->visible ) { ShowWindow( hwnd, SW_SHOWNORMAL ); } break; case WM_MOVE: GetWindowRect( hwnd, &area ); info->config->xpos = area.left; info->config->ypos = area.top; break; case WM_SIZE: ResizeListBox( LOWORD( lparam ), HIWORD( lparam ), &info->list ); GetWindowRect( hwnd, &area ); if( wparam != SIZE_MAXIMIZED && wparam != SIZE_MINIMIZED ) { info->config->xsize = area.right - area.left; info->config->ysize = area.bottom - area.top; } break; case WM_COMMAND: cmd = LOWORD( wparam ); switch( info->type ) { case DDEMENU_TRK_STR: doStrSort( cmd, info ); break; case DDEMENU_TRK_CONV: doConvSort( cmd, info ); break; case DDEMENU_TRK_LINK: doLinkSort( cmd, info ); break; case DDEMENU_TRK_SERVER: doServerSort( cmd, info ); break; } break; case WM_CLOSE: DisplayTracking( info->type ); break; case WM_DESTROY: ptr = info->data; for( i = 0; i < info->cnt; i++ ) { MemFree( ptr[i] ); } if( ptr != NULL ) { MemFree( ptr ); } if( info->hdr != NULL ) { MemFree( info->hdr ); } MemFree( info ); break; default: return( DefWindowProc( hwnd, msg, wparam, lparam ) ); } return( TRUE ); } /* DDETrackingWndProc */