Exemple #1
0
void WdeAddCustControlToCustLib( WdeCustLib *lib, WdeCustControl *control )
{
    LIST *end;

    if( lib->controls == NULL ) {
        ListAddElt( &lib->controls, (void *)control );
    } else {
        /* make sure item is inserted at end of list */
        WdeListLastElt( lib->controls, &end );
        ListInsertElt( end, (void *)control );
    }

    WRMemValidate( lib );
    WRMemValidate( control );
}
Exemple #2
0
BOOL WdeLoadMSCustomControls( WdeCustLib *lib )
{
    WdeCustInfoProc  info_proc;
    WdeCustStyleProc style_proc;
    WdeCustFlagsProc flags_proc;
    HWND             dialog_owner;
    FARPROC          proc_inst;
    HINSTANCE        app_inst;
    INT_PTR          ok;

    dialog_owner = WdeGetMainWindowHandle();
    app_inst = WdeGetAppInstance();
    proc_inst = MakeProcInstance ( (FARPROC)WdeLoadCustProc, app_inst );
    ok = JDialogBoxParam( app_inst, "WdeLoadCustom", dialog_owner,
                          (DLGPROC)proc_inst, (LPARAM)(LPVOID)lib );
    FreeProcInstance ( proc_inst );

    if( ok == -1 ) {
        WdeWriteTrail( "WdeLoadMSCustomControls: Dialog not created!" );
        return( FALSE );
    }

    if( !ok ) {
        return( FALSE );
    }

    if( !HIWORD( (uint_32)lib->info_name ) ) {
        if( !WdeQueryUnsafeMSLoad() ) {
            WdeWriteTrail( "WdeLoadMSCustomControls: User aborted unsafe load!" );
            return( FALSE );
        }
    }

    info_proc = (WdeCustInfoProc)GetProcAddress( lib->inst, lib->info_name );
    style_proc = (WdeCustStyleProc)GetProcAddress ( lib->inst, lib->style_name );
    flags_proc = (WdeCustFlagsProc)GetProcAddress ( lib->inst, lib->flags_name );

    if( info_proc == NULL || style_proc == NULL || flags_proc == NULL ) {
        WdeWriteTrail( "WdeLoadMSCustomControls: Could not get proc address of ordinal!" );
        return( FALSE );
    }

    if( !WdeCreateAndAddCustControl( lib, info_proc, style_proc, flags_proc ) ) {
        WdeWriteTrail( "WdeLoadMSCustomControls: Control not added to list!" );
        return( FALSE );
    }

    WRMemValidate( lib );

    return( TRUE );
}
Exemple #3
0
BOOL WdeCreateAndAddCustControl( WdeCustLib *lib, WdeCustInfoProc info_proc,
                                 WdeCustStyleProc style_proc, WdeCustFlagsProc flags_proc )
{
    HGLOBAL         info_global;
    uint_8          *info_locked;
    WdeCustControl  *control;

    if( lib == NULL || info_proc == NULL || style_proc == NULL || flags_proc == NULL ) {
        WdeWriteTrail( "WdeCreateAndAddCustControl: NULL param!" );
        return( FALSE );
    }

    info_global = (*info_proc)();

    if( info_global == NULL ) {
        WdeWriteTrail( "WdeCreateAndAddCustControl: Info proc returned NULL!" );
        return( FALSE );
    }

    info_locked = (uint_8 *)GlobalLock( info_global );
    if( info_locked == NULL ) {
        WdeWriteTrail( "WdeCreateAndAddCustControl: GlobalLock failed!" );
        GlobalFree( info_global );
        return( FALSE );
    }

    control = WdeAllocCustControlFromWDECTLINFO( (WDECTLINFO *)info_locked, lib->ms_lib );
    if( control == NULL ) {
        WdeWriteTrail( "WdeCreateAndAddCustControl: Could alloc control!" );
        GlobalUnlock( info_global );
        GlobalFree( info_global );
        return( FALSE );
    }

    control->lib = lib;

    control->info_proc = info_proc;
    control->style_proc = style_proc;
    control->flags_proc = flags_proc;

    WdeAddCustControlToCustLib( lib, control );

    GlobalUnlock( info_global );
    GlobalFree( info_global );

    WRMemValidate( lib );

    return( TRUE );
}
Exemple #4
0
WdeCustLib *WdeAllocCustLib( void )
{
    WdeCustLib  *lib;

    lib = (WdeCustLib *)WRMemAlloc( sizeof( WdeCustLib ) );

    if( lib == NULL ) {
        WdeWriteTrail( "WdeAllocCustLib: WdeCustLib alloc failed!" );
        return( NULL );
    }

    memset( lib, 0, sizeof( WdeCustLib ) );

    WRMemValidate( lib );

    return( lib );
}
Exemple #5
0
BOOL WdeAddBorControlsToCustLib( WdeCustLib *lib, WdeBorlandClassList *class_list )
{
    uint_16 num;

    for( num = 0; num < class_list->nClasses; num++ ) {
        if( !WdeCreateAndAddCustControl( lib, class_list->Classes[num].info_proc,
                                         class_list->Classes[num].style_proc,
                                         class_list->Classes[num].flags_proc ) ) {
            WdeWriteTrail( "WdeAddBorControlsToCustLib: Control not added to list!" );
            return( FALSE );
        }
    }

    WRMemValidate( lib );

    return( TRUE );
}
Exemple #6
0
BOOL WdeLoadBorCustomControls( WdeCustLib *lib )
{
    WdeListClassesProc  list_proc;
    HGLOBAL             list_global;
    uint_8              *list_locked;
    uint_16             num_classes;
    WdeBorlandClassList *class_list;
    uint_32             class_list_size;

    /* touch unused var to get rid of warning */
    _wde_touch( lib );

    list_proc = (WdeListClassesProc)GetProcAddress( lib->inst, "ListClasses" );

    if( list_proc == NULL ) {
        if( WdeQueryAssumeMS() ) {
            lib->ms_lib = TRUE;
            return( WdeLoadMSCustomControls( lib ) );
        } else {
            WdeWriteTrail( "WdeLoadBorCustomControls: User aborted load!" );
            return( FALSE );
        }
    }

    if( WdeCustLOADRESInst == NULL ) {
        WdeCustLOADRESInst = MakeProcInstance( (FARPROC)WdeCustLOADRES,
                                               WdeGetAppInstance() );
    }

    if( WdeCustEDITRESInst == NULL ) {
        WdeCustEDITRESInst = MakeProcInstance( (FARPROC)WdeCustEDITRES,
                                                WdeGetAppInstance() );
    }

#if 0
    list_global = (*list_proc)( "WdeMainClass", WDE_VERSION, (LPFNLOADRES)WdeCustLOADRES,
                                (LPFNEDITRES)WdeCustEDITRES );
#else
    list_global = (*list_proc)( "WdeMainClass", WDE_VERSION, (LPFNLOADRES)WdeCustLOADRESInst,
                                (LPFNEDITRES)WdeCustEDITRESInst );
#endif

    if( list_global == NULL ) {
        WdeWriteTrail( "WdeLoadBorCustomControls: ListClasses returned NULL!" );
        return( FALSE );
    }

    list_locked = (uint_8 *)GlobalLock( list_global );
    if( list_locked == NULL ) {
        WdeWriteTrail( "WdeLoadBorCustomControls: Could lock global memory!" );
        GlobalFree( list_global );
        return( FALSE );
    }

    num_classes = *(uint_16 *)list_locked;

    class_list_size = sizeof( WdeBorlandClassList ) +
                      (num_classes - 1) * sizeof( WdeBorlandCtlClass );

    class_list = (WdeBorlandClassList *)WRMemAlloc( class_list_size );
    if( class_list == NULL ) {
        WdeWriteTrail( "WdeLoadBorCustomControls: class list alloc failed!" );
        GlobalUnlock( list_global );
        GlobalFree( list_global );
        return( FALSE );
    }

    memcpy( class_list, list_locked, class_list_size );

    lib->class_list = list_global;

    if( !WdeAddBorControlsToCustLib( lib, class_list ) ) {
        WdeWriteTrail( "WdeLoadBorCustomControls: Add to CustLib failed!" );
        WRMemFree( class_list );
        GlobalUnlock( list_global );
        GlobalFree( list_global );
        return( FALSE );
    }

    WRMemFree( class_list );
    GlobalUnlock( list_global );

    WRMemValidate( lib );

    return( TRUE );
}
Exemple #7
0
int WdeMemValidate ( void *ptr )
{
    return ( WRMemValidate( ptr ) );
}