我有一个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;
}
答案 0 :(得分:2)
简单的答案是否定的!
原因:CCheckListBox只是一个所有者绘制列表框。您可以在mfc中找到源代码。在绘制文本时,该函数只使用ExtTextOut,并不关心制表位。
参见VC \ atlmfc \ src \ mfc \ winctrl3.cpp中CCheckListBox :: DrawItem的实现
所以解决方案也很容易。编写自己的类,从CCheckedListBox派生,并使用自己的DrawItem函数。您还拥有当前DrawItem函数的源代码,您可以轻松使用其他文本输出函数。