/* * TrackServerMsg - update the coversations tracking window */ void TrackServerMsg( MONCBSTRUCT *info ) { char *inst; DDETrackInfo *listinfo; ServerInfo **entry; ServerInfo *cur; inst = HSZToString( info->hsz2 ); listinfo = (DDETrackInfo *)GET_WNDINFO( Tracking[DDEMENU_TRK_SERVER - DDE_TRK_FIRST].hwnd ); entry = findServer( inst, listinfo ); if( info->wType == XTYP_REGISTER ) { if( entry == NULL ) { entry = getNextPos( listinfo ); cur = MemAlloc( sizeof( ServerInfo ) ); *entry = cur; cur->instname = inst; cur->server = HSZToString( info->hsz1 ); } else { MemFree( inst ); } } else if( info->wType == XTYP_UNREGISTER ) { if( entry != NULL ) { cur = *entry; MemFree( cur->instname ); MemFree( cur->server ); *entry = NULL; } else { MemFree( inst ); } } displayServers( listinfo ); } /* TrackServerMsg */
LRESULT CALLBACK WREResWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { WREResInfo *res_info; int msg_processed; LRESULT ret; msg_processed = FALSE; ret = FALSE; res_info = NULL; switch( message ) { case WM_CREATE: res_info = (WREResInfo *)((MDICREATESTRUCT *)((CREATESTRUCT *)lParam)->lpCreateParams)->lParam; res_info->res_win = hWnd; SET_WNDINFO( hWnd, (LONG_PTR)res_info ); break; case WM_SIZE: case WM_MDIACTIVATE: case WM_CLOSE: case WM_SETFOCUS: res_info = (WREResInfo *)GET_WNDINFO( hWnd ); break; case WM_DESTROY: SET_WNDINFO( hWnd, (LONG_PTR)NULL ); break; } if( res_info != NULL ) { switch( message ) { case WM_SETFOCUS: if( res_info->info_win != (HWND)NULL ) { SetFocus( res_info->info_win ); } break; case WM_SIZE: WResizeInfoWindow( res_info ); break; case WM_MDIACTIVATE: WREActivateResourceWindow( res_info, wParam, lParam ); break; case WM_CLOSE: WREEndResAccelSessions( res_info ); WREEndResMenuSessions( res_info ); WREEndResStringSessions( res_info ); WREEndResDialogSessions( res_info ); WREEndResImageSessions( res_info ); WREDestroyResourceWindow( res_info ); return( (LRESULT)FALSE ); } } if( !msg_processed ) { ret = DefMDIChildProc( hWnd, message, wParam, lParam ); } return( ret ); }
/* * TrackLinkMsg - update the links tracking window */ void TrackLinkMsg( MONLINKSTRUCT *info ) { DDETrackInfo *listinfo; LinkInfo *item; LinkInfo **itempos; listinfo = (DDETrackInfo *)GET_WNDINFO( Tracking[DDEMENU_TRK_LINK - DDE_TRK_FIRST].hwnd ); itempos = findLinkInfo( listinfo, info ); if( info->fEstablished ) { if( itempos != NULL ) { return; } itempos = getNextPos( listinfo ); item = MemAlloc( sizeof( LinkInfo ) ); *itempos = item; item->service = HSZToString( info->hszSvc ); item->topic = HSZToString( info->hszTopic ); item->item = HSZToString( info->hszItem ); item->format = MemAlloc( 20 ); GetFmtStr( info->wFmt, item->format ); if( info->fNoData ) { item->type = AllocRCString( STR_WARM ); } else { item->type = AllocRCString( STR_HOT ); } item->client = info->hConvClient; item->server = info->hConvServer; if( strlen( item->service ) > MAX_TRK_STR ) { item->service[MAX_TRK_STR] = '\0'; } if( strlen( item->topic ) > MAX_TRK_STR ) { item->topic[MAX_TRK_STR] = '\0'; } if( strlen( item->item ) > MAX_TRK_STR ) { item->item[MAX_TRK_STR] = '\0'; } } else { if( itempos != NULL ) { FreeLinkInfo( *itempos ); *itempos = NULL; } } redispLinkTrk( listinfo, TRUE ); } /* TrackLinkMsg */
/* * 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 */
/* * TrackConvMsg - update the coversations tracking window */ void TrackConvMsg( MONCONVSTRUCT *info ) { LinkInfo *item; LinkInfo **itempos; DDETrackInfo *listinfo; listinfo = (DDETrackInfo *)GET_WNDINFO( Tracking[DDEMENU_TRK_CONV - DDE_TRK_FIRST].hwnd ); itempos = findConvInfo( listinfo, info ); if( info->fConnect ) { if( itempos != NULL ) { return; } itempos = getNextPos( listinfo ); item = MemAlloc( sizeof( LinkInfo ) ); *itempos = item; item->service = HSZToString( info->hszSvc ); item->topic = HSZToString( info->hszTopic ); item->client = info->hConvClient; item->server = info->hConvServer; item->type = NULL; item->item = NULL; item->format = NULL; if( strlen( item->service ) > MAX_TRK_STR ) { item->service[MAX_TRK_STR] = '\0'; } if( strlen( item->topic ) > MAX_TRK_STR ) { item->topic[MAX_TRK_STR] = '\0'; } } else { if( itempos != NULL ) { FreeLinkInfo( *itempos ); *itempos = NULL; } } redispLinkTrk( listinfo, FALSE ); } /* TrackConvMsg */
/* * TrackStringMsg - update the strings tracking window */ void TrackStringMsg( MONHSZSTRUCT *info ) { DDETrackInfo *listinfo; StringInfo **pos; StringInfo *str; listinfo = (DDETrackInfo *)GET_WNDINFO( Tracking[DDEMENU_TRK_STR - DDE_TRK_FIRST].hwnd ); pos = getStringInfo( info->hsz, listinfo ); if( pos == NULL ) { str = NULL; } else { str = *pos; } switch( info->fsAction ) { case MH_CREATE: case MH_KEEP: if( str != NULL ) { str->cnt++; } else { str = addStringInfo( info, listinfo ); } break; case MH_CLEANUP: case MH_DELETE: if( str != NULL ) { if( str->cnt > 0 ) { str->cnt--; } if( str->cnt == 0 ) { freeStringItem( str ); *pos = NULL; } } break; } redispStrTrk( listinfo ); } /* TrackStringMsg */
WINEXPORT LRESULT CALLBACK WdeResWndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ) { WdeResInfo *res_info; int msg_processed; LRESULT ret; msg_processed = FALSE; ret = FALSE; res_info = NULL; switch( message ) { case WM_CREATE: res_info = (WdeResInfo *)((MDICREATESTRUCT *)((CREATESTRUCT *)lParam)->lpCreateParams)->lParam; res_info->res_win = hWnd; SET_WNDINFO( hWnd, (LONG_PTR)res_info ); break; //case WM_COMMAND: //case WM_KEYUP: //case WM_KEYDOWN: case WM_SIZE: case WM_MDIACTIVATE: case WM_CLOSE: res_info = (WdeResInfo *)GET_WNDINFO( hWnd ); break; case WM_DESTROY: SET_WNDINFO( hWnd, (LONG_PTR)NULL ); break; } if( res_info != NULL ) { switch( message ) { #if 0 case WM_KEYUP: case WM_KEYDOWN: WdePassToEdit( message, wParam, lParam ); break; case WM_COMMAND: switch( LOWORD( wParam ) ) { case IDM_ESCAPE: ret = WdePassToEdit( message, wParam, lParam ); break; } break; #endif case WM_SIZE: WdeResizeEditWindows( res_info ); break; case WM_MDIACTIVATE: WdeActivateResourceWindow( res_info, wParam, lParam ); break; case WM_CLOSE: if( !WdeDestroyResourceWindow( res_info ) ) { return( (LRESULT)FALSE ); } break; } } if( !msg_processed ) { ret = DefMDIChildProc( hWnd, message, wParam, lParam ); } return( ret ); }
/* * DDETrackingWndProc - handle messages from the tracking windows */ LRESULT CALLBACK DDETrackingWndProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) { DDETrackInfo *info; WORD i; void **ptr; RECT area; WORD cmd; char *wintitle; info = (DDETrackInfo *)GET_WNDINFO( hwnd ); switch( msg ) { case WM_CREATE: info = MemAlloc( sizeof( DDETrackInfo ) ); memset( info, 0, sizeof( DDETrackInfo ) ); info->type = *(WORD *)((CREATESTRUCT *)lparam)->lpCreateParams; SET_WNDINFO( hwnd, (LONG_PTR)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 */
static void findSpyHwnd( void ) { spyHwnd = FindWindow( SPY_CLASS_NAME, NULL ); spyLBHwnd = (HWND)GET_WNDINFO( spyHwnd ); }