tabstops是否在MFC CCheckListBox中工作?

时间:2015-01-12 02:03:50

标签: visual-c++ mfc controls

我有一个MFC CCheckListBox控件正常工作,除了Tab停止似乎不起作用。当我为控件提供包含制表符ASCII 9的文本字符串时,文本保留没有任何空格用于制表符。

有没有人知道你是否可以在CCheckListBox中使用tabstops?我尝试了很多不同的事情,当我谷歌我发现同样的问题,但没有解决方案。我在ListBox资源属性中选中了“使用Tabstops”框。我也有Has Strings:True和Owner Draw:是固定的(如果有任何帮助的话)。这是我正在使用的初始化代码:

BOOL CDlgQuotePOReceive::OnInitDialog()
{    
    CDialog::OnInitDialog();

    VERIFY(((CCheckListBox *) this->GetDlgItem(IDC_LB_PO_DETAIL))->SetTabStops(10));

    // Then code to fill the listbox with string data that 
    // is working fine to get the data into the control.

    return TRUE;
}

1 个答案:

答案 0 :(得分:2)

简单的答案是否定的!

原因:CCheckListBox只是一个所有者绘制列表框。您可以在mfc中找到源代码。在绘制文本时,该函数只使用ExtTextOut,并不关心制表位。

参见VC \ atlmfc \ src \ mfc \ winctrl3.cpp中CCheckListBox :: DrawItem的实现

所以解决方案也很容易。编写自己的类,从CCheckedListBox派生,并使用自己的DrawItem函数。您还拥有当前DrawItem函数的源代码,您可以轻松使用其他文本输出函数。