有没有办法自动调整MFC中的列表列?

时间:2010-09-08 16:47:10

标签: c++ visual-studio-2008 mfc

我正在编辑的程序使用此代码生成列表框中的列:

m_list.InsertColumn(0,_T("Parameter"), LVCFMT_LEFT, 90);
m_list.InsertColumn(1,_T("Show?"), LVCFMT_LEFT, 50);
m_list.InsertColumn(2,_T("Value"), LVCFMT_LEFT, 400);

当用户使用该程序时,用户可以点击一行(单元格?我不确定命名法)并输入一些文字。问题是它只允许用户输入尽可能多的文本列。因此,在这种情况下,用户单击“值”列(400像素宽)中的单元格,它只允许用户输入74个字符。

有没有办法让用户可以输入任意数量的字符,但是它会将显示的文本截断为列宽(类似于Windows截断长文件名的方式)?这些值也存储在程序内其他位置的数据结构中。

1 个答案:

答案 0 :(得分:0)

这是从MSDN here

中提取的
  

要自定义标签编辑,请执行   LVN_BEGINLABELEDIT和的处理程序   让它发送LVM_GETEDITCONTROL   消息到列表视图控件。如果一个   正在编辑标签,返回   value将成为编辑的句柄   控制。使用此句柄进行自定义   通过发送通常的编辑控件   EM_XXX消息

<强>更新

举个例子,这是一个典型的场景:

  • 子类CListCtrl。这将是您实例化m_list
  • 的类
  • 在您的CListCtrl子类中覆盖OnBeginLabelEdit()
  • OnBeginLabelEdit()来电SendMessage(LVM_GETEDITCONTROL)中,HWND返回编辑控件以编辑文字
  • 给定编辑控件窗口句柄,随意执行它:移动,调整大小,甚至子类化。