どうもありがとうございます。
MetricT の値の単位がよくわかってないのですが、なんとか列幅を変更できました。
F_MetricsT ms, ms2;
ms = F_ApiGetMetrics( docId, tblId, FP_TblColWidths );
ms2.len = ms.len;
ms2.val = (MetricT*)F_Alloc( sizeof( MetricT ) * ms.len, DSE );
for ( i = 0; i < ms.len; i++ ) {
F_Printf( NULL, "%02d:%06x¥n", i,ms.val );
aCell = this->getCell( 0, i );
if ( aCell != NULL ) {
m = aCell->rFontsize * aCell->iWidth * 0x10000;
if ( m == 0 ) {
ms2.val = ms.val;
} else {
ms2.val = m;}
}
}
F_ApiDeallocateMetrics(&ms);
F_ApiSetMetrics( docId, tblId, FP_TblColWidths, &ms2 );
F_ApiDeallocateMetrics(&ms2);