Пример #1
0
/*
 * 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 */
Пример #2
0
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 );
}
Пример #3
0
/*
 * 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 */
Пример #4
0
/*
 * 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 */
Пример #5
0
/*
 * 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 */
Пример #6
0
/*
 * 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 */
Пример #7
0
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 );
}
Пример #8
0
/*
 * 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 */
Пример #9
0
static void findSpyHwnd( void )
{
    spyHwnd = FindWindow( SPY_CLASS_NAME, NULL );
    spyLBHwnd = (HWND)GET_WNDINFO( spyHwnd );
}