Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 虚拟CListCtrl自动调整大小_C++_Visual Studio_Mfc_Autosize_Clistctrl - Fatal编程技术网

C++ 虚拟CListCtrl自动调整大小

C++ 虚拟CListCtrl自动调整大小,c++,visual-studio,mfc,autosize,clistctrl,C++,Visual Studio,Mfc,Autosize,Clistctrl,我想自动调整虚拟ClistCtrl LVS_OWNERDATA标志的列大小 我在一些论坛上发现虚拟列表不能使用LVSCW_AUTOSIZE选项。有些人建议改为实现一个算法 但一旦加载了我的ClistCtrl而没有任何调整大小选项,双击标题分隔符即可正确调整可见列的大小 那么,我如何执行HDN_DIVIDERDBLCLICKW调用的函数呢?从中,您应该能够自动调整列的大小,如下所示: pListCtrl->SetColumnWidth(i, LVSCW_AUTOSIZE); int nCol

我想自动调整虚拟ClistCtrl LVS_OWNERDATA标志的列大小

我在一些论坛上发现虚拟列表不能使用LVSCW_AUTOSIZE选项。有些人建议改为实现一个算法

但一旦加载了我的ClistCtrl而没有任何调整大小选项,双击标题分隔符即可正确调整可见列的大小

那么,我如何执行HDN_DIVIDERDBLCLICKW调用的函数呢?

从中,您应该能够自动调整列的大小,如下所示:

pListCtrl->SetColumnWidth(i, LVSCW_AUTOSIZE);
int nColumnWidth = pListCtrl->GetColumnWidth(i);
pListCtrl->SetColumnWidth(i, LVSCW_AUTOSIZE_USEHEADER);
int nHeaderWidth = pListCtrl->GetColumnWidth(i); 
pListCtrl->SetColumnWidth(i, max(nColumnWidth, nHeaderWidth));

您可能需要处理以向虚拟列表控件提供必要的数据,但是…

Clements建议的自动大小调整适用于普通列表控件,但不适用于虚拟控件,因为控件不知道任何列数据。您必须自己提供数据列宽。

完全正确!自动调整大小不适用于虚拟列表。但是双击标题分隔符就可以完成任务,即使在虚拟列表中也是如此。因此,有一个函数知道列数据的大小,甚至知道虚拟列表的大小。我的问题是关于这个函数的。Autosize不适用于虚拟列表。但是,双击标题分隔符就可以完成任务,即使是使用虚拟列表也是如此。然后,在某个地方存在一个类似autosize的函数,它可以与虚拟列表一起工作。我的问题是关于这个函数。