Visual c++ tabstops是否在MFC CCheckListBox中工作?

Visual c++ tabstops是否在MFC CCheckListBox中工作?,visual-c++,mfc,controls,Visual C++,Mfc,Controls,我有一个MFC CCheckListBox控件工作正常,除了制表位似乎不工作。当我为控件提供包含制表符ASCII 9的文本字符串时,文本中的制表符没有任何空间 有人知道你是否可以在CCheckListBox中使用tabstops吗?我尝试了很多不同的方法,当我用谷歌搜索时,我发现了同样的问题,但没有解决办法。我在列表框资源属性中选中了“使用选项卡”框。我还有Has字符串:True和Owner Draw:已修复(如果有帮助的话)。以下是我正在使用的初始化代码: BOOL CDlgQuotePORe

我有一个MFC CCheckListBox控件工作正常,除了制表位似乎不工作。当我为控件提供包含制表符ASCII 9的文本字符串时,文本中的制表符没有任何空间

有人知道你是否可以在CCheckListBox中使用tabstops吗?我尝试了很多不同的方法,当我用谷歌搜索时,我发现了同样的问题,但没有解决办法。我在列表框资源属性中选中了“使用选项卡”框。我还有Has字符串: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;
}

答案很简单:不

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

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


因此,您的解决方案也很简单。编写从CCheckedListBox派生的自己的类,并使用自己的DrawItem函数。此外,您还拥有当前DrawItem函数的源代码,可以轻松使用另一个文本输出函数。

谢谢!不仅详细回答了我的问题,而且引导我朝着解决问题的方向前进。唯一的一件事:如果这么容易实现,那么很遗憾微软当初没有做到这一点。看我怎么走。。。