В диалоговом редакторе Visual Studio убедитесь, что у вас есть «Элемент управления списком», а не «Список».
В списке свойств редактора диалогов Visual Studio установите для параметра «Без заголовка столбца» значение «Истина», а для «Вид» - «Отчет». (Настройка «Выравнивание» по левому краю не действует в режиме отчета.)
В OnInitDialog()
выполните следующее (после вызова OnInitDialog()
вашего суперкласса):
CListCtrl* plistError = (CListCtrl*) GetDlgItem( IDC_ERROR );
plistError->InsertColumn( 0, "" );
plistError->SetColumnWidth( 0, LVSCW_AUTOSIZE_USEHEADER );
Фактически, это, кажется, дает максимальный автоматический размер начальной ширины, с которой создается элемент управления. Строки отображаются усеченными с многоточием в этой точке. Расширение окна не помогает.
Чтобы исправить это, добавьте метод OnSize()
к вашему подклассу CDialog
, который снова напоминает список, что он шире. (Это предполагает, что расширение окна - это то, что позволило бы CListCtrl
отображать больше текста. Если у вас есть другие средства, такие как кнопка, попробуйте этот вызов SetColumnWidth()
там, где вы это делаете.)
WinProgress::OnSize() {
CListCtrl* plist = (CListCtrl*) GetDlgItem( IDC_ERROR );
plist->SetColumnWidth( 0, LVSCW_AUTOSIZE_USEHEADER );
Затем вы можете добавить новые строки в конец списка с помощью кода, такого как:
CListCtrl* plist = (CListCtrl*) GetDlgItem( IDC_ERROR );
int iCount = plist->GetItemCount();
plist->InsertItem( iCount, "Next Item" );
Пункты, слишком широкие для списка, сначала будут отображать эллипсы. Если вы немного измените размер окна, то элементы списка будут расширены до полного размера и при необходимости появится горизонтальная полоса прокрутки. Это не совсем 10/10, что касается внешнего вида, но даже опытные программисты GUI, вероятно, не заметят.