Example #1
0
WdeDialogBoxControl *WdeMem2DialogBoxControl( const uint_8 **pdata, bool is32bit, bool is32bitEx )
{
    WdeDialogBoxControl         *dbc;
    bool                        ok;
    const uint_8                *data;

    dbc = NULL;
    data = NULL;

    ok = (pdata != NULL && *pdata != NULL);

    if( ok ) {
        dbc = WdeAllocDialogBoxControl();
        ok = (dbc != NULL);
    }

    if( ok ) {
        data = *pdata;
        if( is32bitEx ) {
            U32FromMem( data, GETCTL_HELPID( dbc ) );
            U32FromMem( data, GETCTL_EXSTYLE( dbc ) );
            U32FromMem( data, GETCTL_STYLE( dbc ) );
        } else if( is32bit ) {
            U32FromMem( data, GETCTL_STYLE( dbc ) );
            U32FromMem( data, GETCTL_EXSTYLE( dbc ) );
        }
        U16FromMem( data, GETCTL_SIZEX( dbc ) );
        U16FromMem( data, GETCTL_SIZEY( dbc ) );
        U16FromMem( data, GETCTL_SIZEW( dbc ) );
        U16FromMem( data, GETCTL_SIZEH( dbc ) );
        if( is32bitEx ) {
            U32FromMem( data, GETCTL_ID( dbc ) );
        } else {
            U16FromMem( data, GETCTL_ID( dbc ) );
        }
        if( !is32bit ) {
            U32FromMem( data, GETCTL_STYLE( dbc ) );
        }
        SETCTL_CLASSID( dbc, WdeMem2ControlClass( &data, is32bit ) );
        ok = (GETCTL_CLASSID( dbc ) != NULL);
    }

    if( ok ) {
        SETCTL_TEXT( dbc, WdeMem2NameOrOrdinal( &data, is32bit ) );
        ok = (GETCTL_TEXT( dbc ) != NULL);
    }

    if( ok ) {
        if( is32bit ) {
            U16FromMem( data, GETCTL_EXTRABYTES( dbc ) );
        } else {
            U8FromMem( data, GETCTL_EXTRABYTES( dbc ) );
        }
    }

    if( dbc != NULL ) {
        *pdata = data;
        if( !ok ) {
            WdeFreeDialogBoxControl( &dbc );
        }
    }
    return( dbc );
}
Example #2
0
WdeDialogBoxHeader *WdeMem2DialogBoxHeader( const uint_8 **pdata, bool is32bit, bool is32bitEx )
{
    WdeDialogBoxHeader  *dbh;
    bool                ok;
    const uint_8        *data;

    dbh = NULL;
    data = NULL;

    ok = (pdata != NULL && *pdata != NULL);

    if( ok ) {
        dbh = WdeAllocDialogBoxHeader();
        ok = (dbh != NULL);
    }

    if( ok ) {
        data = *pdata;
        dbh->symbol = NULL;
        dbh->helpsymbol = NULL;
        dbh->is32bit = is32bit;
        dbh->is32bitEx = is32bitEx;
        if( is32bitEx ) {
            /* skip the miscellaneous two WORDs 0x0001, 0xFFFF */
            data += 2 * sizeof( uint_16 );
            U32FromMem( data, GETHDR_HELPID( dbh ) );
            U32FromMem( data, GETHDR_EXSTYLE( dbh ) );
            U32FromMem( data, GETHDR_STYLE( dbh ) );
        } else if( is32bit ) {
            U32FromMem( data, GETHDR_STYLE( dbh ) );
            U32FromMem( data, GETHDR_EXSTYLE( dbh ) );
        } else {
            U32FromMem( data, GETHDR_STYLE( dbh ) );
        }
        if( is32bit ) {
            U16FromMem( data, GETHDR_NUMITEMS( dbh ) );
        } else {
            U8FromMem( data, GETHDR_NUMITEMS( dbh ) );
        }
        U16FromMem( data, GETHDR_SIZEX( dbh ) );
        U16FromMem( data, GETHDR_SIZEY( dbh ) );
        U16FromMem( data, GETHDR_SIZEW( dbh ) );
        U16FromMem( data, GETHDR_SIZEH( dbh ) );

        SETHDR_MENUNAME( dbh, WdeMem2NameOrOrdinal( &data, is32bit ) );
        ok = (GETHDR_MENUNAME( dbh ) != NULL);
    }

    if( ok ) {
        SETHDR_CLASSNAME( dbh, WdeMem2NameOrOrdinal( &data, is32bit ) );
        ok = (GETHDR_CLASSNAME( dbh ) != NULL);
    }

    if( ok ) {
        SETHDR_CAPTION( dbh, WdeMem2String( &data, is32bit ) );
        ok = (GETHDR_CAPTION( dbh ) != NULL);
    }

    if( ok ) {
        if( GETHDR_STYLE( dbh ) & DS_SETFONT ) {
            U16FromMem( data, GETHDR_POINTSIZE( dbh ) );
            if( is32bitEx ) {
                U16FromMem( data, GETHDR_FONTWEIGHT( dbh ) );
                U8FromMem( data, GETHDR_FONTITALIC( dbh ) );
                U8FromMem( data, GETHDR_FONTCHARSET( dbh ) );
            }
            SETHDR_FONTNAME( dbh, WdeMem2String( &data, is32bit ) );
            ok = (GETHDR_FONTNAME( dbh ) != NULL);
        } else {
            SETHDR_POINTSIZE( dbh, 0 );
            SETHDR_FONTNAME( dbh, NULL );
        }
    }

    if( dbh != NULL ) {
        *pdata = data;
        if( !ok ) {
            WdeFreeDialogBoxHeader( &dbh );
        }
    }
    return( dbh );
}
Example #3
0
WdeDialogBoxHeader *WdeMem2DialogBoxExHeader( uint_8 **data )
{
    uint_16             miscbytes[2] = { 0x0001, 0xFFFF };
    WdeDialogBoxHeader  *dbh;
    Bool                ok;

    dbh = NULL;

    if ( !data || !*data ) {
        return(NULL);
    }

    dbh = WdeAllocDialogBoxHeader();
    if ( dbh == NULL ) {
        return(NULL);
    }

    dbh->is32bit    = TRUE;
    dbh->is32bitEx  = TRUE;

    /* skip the miscellaneous two WORDs 01 00 FF FF */
    *data += sizeof(miscbytes);

    memcpy( &dbh->HelpId, *data, sizeof(uint_32) );
    *data += sizeof(uint_32);

    memcpy( &dbh->ExtendedStyle, *data, sizeof(uint_32) );
    *data += sizeof(uint_32);

    memcpy( &dbh->Style, *data, sizeof(uint_32) );
    *data += sizeof(uint_32);

    memcpy( &dbh->NumOfItems, *data, sizeof(uint_16) );
    *data += sizeof(uint_16);

    memcpy( &dbh->Size, *data, sizeof(DialogSizeInfo) );
    *data += sizeof(DialogSizeInfo);

    SETHDR_MENUNAME(dbh, WdeMem2NameOrOrdinal( data, TRUE ) );
    ok = ( GETHDR_MENUNAME(dbh) != NULL );

    if( ok ) {
        SETHDR_CLASSNAME( dbh, WdeMem2NameOrOrdinal( data, TRUE ) );
        ok = ( GETHDR_CLASSNAME(dbh) != NULL );
    }

    if( ok ) {
        SETHDR_CAPTION( dbh, WdeMem2String( data, TRUE ) );
        ok = ( GETHDR_CAPTION(dbh) != NULL );
    }

    if( ok ) {
        if( GETHDR_STYLE(dbh) & DS_SETFONT ) {
            dbh->FontWeightDefined = TRUE;
            dbh->FontItalicDefined = TRUE;
            SETHDR_POINTSIZE( dbh, *((uint_16 *)*data) );
            *data += sizeof(uint_16);
            SETHDR_FONTWEIGHT( dbh, *((uint_16 *)*data) );
            *data += sizeof(uint_16);
            SETHDR_FONTITALIC( dbh, *((uint_16 *)*data) );
            *data += sizeof(uint_16);
            SETHDR_FONTNAME( dbh, WdeMem2String( data, TRUE ) );
            ok = ( GETHDR_FONTNAME(dbh) != NULL );
        }
    }

    if( !ok ) {
        if( dbh ) {
            WdeFreeDialogBoxHeader ( &dbh );
        }
    }

    return( dbh );
}
Example #4
0
WdeDialogBoxControl *WdeMem2DialogBoxControl( uint_8 **data, Bool is32bit,
                                              Bool is32bitEx )
{
    DialogBoxControl            *c16;
    DialogBoxControl32          *c32;
    DialogBoxExControl32        *c32ex;

    WdeDialogBoxControl *dbc;
    int                 fixedbytes;
    Bool                ok;

    dbc = NULL;

    ok = ( data && *data );

    if( ok ) {
        dbc = WdeAllocDialogBoxControl();
        ok = ( dbc != NULL );
    }

    if( ok ) {
        if( is32bit ) {
            if (is32bitEx) {
                fixedbytes = offsetof( DialogBoxExControl32, ClassID );
                c32ex = (DialogBoxExControl32 *) *data;
                dbc->HelpId = c32ex->HelpId;
                dbc->Style = c32ex->Style;
                dbc->ExtendedStyle = c32ex->ExtendedStyle;
                dbc->Size = c32ex->Size;
                dbc->ID = c32ex->ID;
            } else {
                fixedbytes = offsetof( DialogBoxControl32, ClassID );
                c32 = (DialogBoxControl32 *) *data;
                dbc->Style = c32->Style;
                dbc->ExtendedStyle = c32->ExtendedStyle;
                dbc->Size = c32->Size;
                dbc->ID = c32->ID;
            }
        } else {
            fixedbytes = offsetof( DialogBoxControl, ClassID );
            c16 = (DialogBoxControl *) *data;
            dbc->Size = c16->Size;
            dbc->ID = c16->ID;
            dbc->Style = c16->Style;
        }

        *data += fixedbytes;
        SETCTL_CLASSID( dbc, WdeMem2ControlClass(data, is32bit) );
        ok = ( GETCTL_CLASSID(dbc) != NULL );
    }

    if( ok ) {
        SETCTL_TEXT(dbc, WdeMem2NameOrOrdinal(data, is32bit) );
        ok = ( GETCTL_TEXT(dbc) != NULL );
    }

    if( ok ) {
        if( is32bit ) {
            if (is32bitEx) {
                dbc->ExtraBytes = *((uint_16 *)*data);
            } else {
                dbc->ExtraBytes = *((uint_16 *)*data);
            }
            *data += sizeof(uint_16);
        } else {
            dbc->ExtraBytes = (uint_8)((*data)[0]);
            *data += sizeof(uint_8);
        }
    } else {
        if( dbc != NULL ) {
            WdeFreeDialogBoxControl( &dbc );
        }
    }

    return( dbc );
}
Example #5
0
WdeDialogBoxHeader *WdeMem2DialogBoxHeader( uint_8 **data, Bool is32bit )
{
    DialogBoxHeader32   *h32;
    DialogBoxHeader     *h16;
    WdeDialogBoxHeader  *dbh;
    int                 fixedbytes;
    Bool                ok;

    dbh = NULL;

    ok = ( data && *data );

    if( ok ) {
        dbh = WdeAllocDialogBoxHeader();
        ok = ( dbh != NULL );
    }

    if( ok ) {
        dbh->symbol      = NULL;
        dbh->helpsymbol  = NULL;
        dbh->is32bit     = is32bit;
        dbh->is32bitEx   = FALSE;
        if( is32bit ) {
            fixedbytes = offsetof( DialogBoxHeader32, MenuName );
            h32 = (DialogBoxHeader32 *)*data;
            dbh->Style = h32->Style;
            dbh->ExtendedStyle = h32->ExtendedStyle;
            dbh->NumOfItems = h32->NumOfItems;
            dbh->Size = h32->Size;
        } else {
            fixedbytes = offsetof( DialogBoxHeader, MenuName );
            h16 = (DialogBoxHeader *)*data;
            dbh->Style = h16->Style;
            dbh->NumOfItems = h16->NumOfItems;
            dbh->Size = h16->Size;
        }
        *data += fixedbytes;
        SETHDR_MENUNAME(dbh, WdeMem2NameOrOrdinal( data, is32bit ) );
        ok = ( GETHDR_MENUNAME(dbh) != NULL );
    }

    if( ok ) {
        SETHDR_CLASSNAME( dbh, WdeMem2NameOrOrdinal( data, is32bit ) );
        ok = ( GETHDR_CLASSNAME(dbh) != NULL );
    }

    if( ok ) {
        SETHDR_CAPTION( dbh, WdeMem2String( data, is32bit ) );
        ok = ( GETHDR_CAPTION(dbh) != NULL );
    }

    if( ok ) {
        if( GETHDR_STYLE(dbh) & DS_SETFONT ) {
            SETHDR_POINTSIZE( dbh, *( (uint_16 *)*data ) );
            *data += sizeof(uint_16);
            SETHDR_FONTNAME( dbh, WdeMem2String( data, is32bit ) );
            ok = ( GETHDR_FONTNAME(dbh) != NULL );
        } else {
            SETHDR_POINTSIZE( dbh, 0 );
            SETHDR_FONTNAME( dbh, NULL );
        }
    }

    if( !ok ) {
        if( dbh ) {
            WdeFreeDialogBoxHeader ( &dbh );
        }
    }

    return( dbh );
}