Pergunta

Eu estou usando um CListCtrl no ícone vista, mas rola na horizontal:

1 3 5 7 -->
2 4 6 8 -->

Eu prefiro que rolar horizontalmente:

1 2
3 4
5 6
| |
V V

Existe uma maneira de fazer isso?

Foi útil?

Solução

Alterar o estilo de alinhamento no designer da esquerda para a Top.

Outras dicas

I parecem ter resolvido o problema usando uma visão 'Relatório'. Através do Designer VS este meio mudando o estilo 'Ver' o Relatório, resultando o controle dado o atributo LVS_REPORT no arquivo .RC. Note que este é equivalente a chamar CListCtrl::SetView(LV_VIEW_DETAILS) no código. Isso não é suficiente no entanto. Também é necessário criar uma coluna, se você não tiver um com um par de linhas de código:

m_lstScenarios.InsertColumn(0, L"NO HEADER");
m_lstScenarios.SetColumnWidth(k_nListColScenario, LVSCW_AUTOSIZE);

Se você não quiser que o cabeçalho da coluna, defina a LVS_NOCOLUMNHEADER no Designer através do estilo do 'No Cabeçalho da coluna'.

No editor de diálogo Visual Studio, certifique-se de ter uma "lista de controle", não uma "caixa de lista".

Na lista de propriedades do editor de diálogo Visual Studio, set "No cabeçalho de coluna" para True e "View" para Report. (Definição "Alinhamento" para a esquerda não tem efeito no modo Report.)

Em OnInitDialog(), faça o seguinte (depois de chamar OnInitDialog() da sua superclasse):

  CListCtrl* plistError = (CListCtrl*) GetDlgItem( IDC_ERROR );
  plistError->InsertColumn( 0, "" );
  plistError->SetColumnWidth( 0, LVSCW_AUTOSIZE_USEHEADER );

Na verdade, isso parece dar uma autosize máximo do inicial width o controle é criado. Cordas são exibidos truncada com reticências naquele ponto. Ampliando a janela não ajuda.

Para corrigir isso, adicione um OnSize() método para sua subclasse CDialog que mais uma vez lembra a lista que é mais amplo. (Isso pressupõe que o alargamento da janela é o que deixaria a exibição CListCtrl mais texto. Se você tem algum outro meio, como um botão, tente esta chamada SetColumnWidth() onde você está fazendo isso.)

 WinProgress::OnSize() {
    CListCtrl* plist = (CListCtrl*) GetDlgItem( IDC_ERROR );
    plist->SetColumnWidth( 0, LVSCW_AUTOSIZE_USEHEADER );

Você pode então adicionar novas linhas para a parte inferior da lista com um código como:

  CListCtrl* plist = (CListCtrl*) GetDlgItem( IDC_ERROR );
  int iCount = plist->GetItemCount();

  plist->InsertItem( iCount, "Next Item" );

Os produtos muito grande para a lista mostrará elipses em primeiro lugar. Quando você redimensionar a janela no entanto ligeiramente, em seguida, os itens da lista de largura ao tamanho completo e uma barra de rolagem horizontal aparece se necessário. Não é bem 10/10, na medida em que look and feel estão em causa, mas até mesmo programadores GUI experiente provavelmente não aviso prévio.

No controle de lista, para o conteúdo de vídeo com imagem em única coluna com deslocamento vertical .add seguinte código, Em função PreCreateWindow, adicione o seguinte linha cs.style | = (LVS_REPORT | LVS_NOCOLUMNHEADER); e em função OnIntialUpdate adicione o seguinte linha, fileList.InsertColumn (0,"", LVCFMT_LEFT | LVCFMT_IMAGE, 120, -1); ShowScrollBar (SB_VERT, 1); após isso, onde quer que você deseja inserir dados na lista você pode, mas tome cuidado para que você definir imagelist e inserção de dados usando InsertItem por exemplo: fileList, InsertItem (0, "Índia", 1); onde 1-> é o índice de imagem em imagelist.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top