本文整理汇总了C++中pfc::array_t::fill方法的典型用法代码示例。如果您正苦于以下问题:C++ array_t::fill方法的具体用法?C++ array_t::fill怎么用?C++ array_t::fill使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pfc::array_t
的用法示例。
在下文中一共展示了array_t::fill方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: get_column_widths
unsigned playlist_view::get_column_widths(pfc::array_t<int, pfc::alloc_fast_aggressive> & out) const
{
const bit_array & p_mask = g_cache.active_get_columns_mask();
unsigned n,t = columns.get_count(),nw=0,i;
unsigned ac = 0;
for (n=0;n<t;n++) if (p_mask[n]) ac++;
out.set_size(ac);
RECT hd;
SetRectEmpty(&hd);
if (cfg_nohscroll && wnd_playlist && GetClientRect(wnd_playlist, &hd))
{
int tw=0,total_parts=0;
pfc::array_t<unsigned> columns_parts;
columns_parts.set_size(t);
out.fill(0);
for (n=0,i=0;n<t;n++)
if (p_mask[n])
{
tw += columns[n]->width;
unsigned part = columns[n]->parts;
total_parts += part;
columns_parts[n] = part;
i++;
}
int excess = hd.right-hd.left-tw;
bool first_pass = true;
while ( (excess && total_parts) || first_pass)
{
first_pass= false;
int parts = total_parts;
for (n=0,i=0;n<t;n++)
if (p_mask[n])
{
int part = columns_parts[n];
int e = ((parts && part) ? MulDiv(part,(excess),parts) : 0);
int f = columns[n]->width;
parts -= part;
excess -= e;
if (e < f*-1)
{
e = f*-1;
total_parts -= columns_parts[n];
columns_parts[n]=0;
}
int w = f + e;
out[i++] += w;
nw += w;
}
}
}
else
{
for (n=0,i=0;n<t;n++)
{
if (p_mask[n])
{
out[i] = columns[n]->width;
nw += out[i++];
}
}
}
return nw;
}