HDDEDATA WdeCreateResData( WdeResDlgItem *ditem ) { HDDEDATA hdata; void *data; uint_32 size; hdata = (HDDEDATA)NULL; if( WdeGetItemData( ditem, &data, &size ) ) { hdata = DdeCreateDataHandle( IdInst, (LPBYTE)data, size, 0, hDataItem, WdeDataClipbdFormat, 0 ); WRMemFree( data ); } return( hdata ); }
bool WdeInfoToData( WdeResInfo *info ) { WResTypeNode *dnode; WResResNode *rnode; LIST *dlist; WdeResDlgItem *ditem; void *data; uint_32 size; WResLangType def_lang; if( info == NULL ) { return( FALSE ); } def_lang.lang = DEF_SUBLANG; def_lang.sublang = DEF_SUBLANG; dnode = info->dlg_entry; dlist = info->dlg_item_list; while( dlist != NULL ) { ditem = (WdeResDlgItem *)ListElement( dlist ); data = NULL; size = 0; if( ditem->object != NULL || ditem->dialog_info != NULL ) { if( !WdeGetItemData( ditem, &data, &size ) ) { return( FALSE ); } } if( ditem->rnode != NULL && ditem->lnode != NULL ) { if( data != NULL ) { rnode = WdeRenameWResResNode( dnode, ditem->rnode, ditem->dialog_name ); if( rnode == NULL ) { WRMemFree( data ); return( FALSE ); } ditem->rnode = rnode; ditem->lnode->data = data; ditem->lnode->Info.Length = size; ditem->lnode->Info.Offset = 0; ditem->lnode->Info.MemoryFlags = ditem->dialog_info->MemoryFlags; } } else { rnode = WdeCreateWResResNode( 1, ditem->dialog_name, &def_lang, ditem->dialog_info->MemoryFlags, 0, size, data ); if( rnode != NULL ) { if( info->info->dir == NULL ) { info->info->dir = WResInitDir(); } if( dnode == NULL ) { dnode = WdeAddTypeToDir( info->info->dir, (uint_16)(pointer_int)RT_DIALOG ); info->dlg_entry = dnode; } if( info->info->dir != NULL && dnode != NULL ) { WdeAddResToType( dnode, rnode ); ditem->rnode = rnode; ditem->lnode = rnode->Head; } else { WRMemFree( rnode->Head ); WRMemFree( rnode ); WRMemFree( data ); return( FALSE ); } } else { WRMemFree( data ); return( FALSE ); } info->info->dir->NumResources++; } dlist = ListNext( dlist ); } return( TRUE ); }