15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


Horizontal scrolling list ctrl?

Jeff Wishnie -- jwishnie@swellsoft.com
Tuesday, May 07, 1996

Config: Win95 VisC++/MFC 4.1

For my App's gui I would like a single horizontal row of 32x32 icons that
scrolls horizontally.

like:

----------------------------------------
|    -----    -----    -----    -----  |
|    |   |    |   |    |   |    |   |  |
|    |   |    |   |    |   |    |   |  |
|    -----    -----    -----    -----  |
----------------------------------------
| <          "scroll bar"            > |
----------------------------------------

      
I'm using a CListCtrl to achieve this. Using the following create flags I get 
_most_ of the behavior I want:

LVS_ALIGNTOP | LVS_AUTOARRANGE | LVS_ICON

Align top makes them all go in a horizontal row at the top of the view,
auto-arrange keeps them neat, and Icon puts the control in icon mode.

BUT there is _no_ horizontal scroll bar and the default behavior when the
control is sized smaller than it's contents is to show a _vertical_
scrollbar (ugh)

I can't seem to find the appropriate settings to tell it to use a horizontal
one instead. 

Has anyone done this? Is it possible or do I have to do something nasty like
set it no-scroll and embed it in a scrollview I can control directly?

Thanks!

- jeff
jwishnie@swellsoft.com
415 552-3125(w)




R.H.J. Geraets -- R.Geraets@Ehv.Tass.Philips.Com
Friday, May 10, 1996

[Mini-digest: 2 responses]

At 21:21 5/7/96 -0700, you wrote:
>Config: Win95 VisC++/MFC 4.1
>
>For my App's gui I would like a single horizontal row of 32x32 icons that
>scrolls horizontally.
> [...]
>I'm using a CListCtrl to achieve this. Using the following create flags I get 
>_most_ of the behavior I want:
>
>LVS_ALIGNTOP | LVS_AUTOARRANGE | LVS_ICON
>
>Align top makes them all go in a horizontal row at the top of the view,
>auto-arrange keeps them neat, and Icon puts the control in icon mode.
>
>BUT there is _no_ horizontal scroll bar and the default behavior when the
>control is sized smaller than it's contents is to show a _vertical_
>scrollbar (ugh)
> [...]

Using LVS_ALIGNLEFT in stead of LVS_ALIGNTOP should do the trick.
Make sure your ListCtrl is just high enough to hold one row of icons.


explanation: 

When adding items with AlignTop, new icons are added along the top untill
the row is full, and then proceeds with a new row ( -> growing 
vertically -> vertical scrollbar)

When adding items with AlignLeft, new icons are added along the left side
untill the column is full, and then proceed with a new column ( -> growing
horizontally -> horizontal scrollbar)

By making your control just one icon high, you get the row you want.

Rene' Geraets

---
  R.H.J. Geraets    Vonderweg 11            E-mail: 
  Philips TASS      PO-box 218/Geb. HCZ-1   R.Geraets@ehv.tass.philips.com
  MMA Department    5600 MD Eindhoven       Phone: (+31) 40-2758341
  Building HCZ-158  The Netherlands         Fax:   (+31) 40-2755419
---

-----From: jhewett@ix.netcom.com (Jerry Hewett)

Check out Example 06B from _Inside Visual C++ Version 4_, by David 
Kruglinski; his scrolling CList in the dialog resource is *exactly* what 
you're after.  The .RC code looks like this:

CONTROL         "List1",IDC_LISTVIEW1,"SysListView32",LVS_LIST | 
                LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,220,12,120,24,
                WS_EX_LEFTSCROLLBAR

>From within MS Developer Studio you can edit the List control and make the 
following changes:

List Control Properties
  General == Visible and Tabstop checked
   Styles == View: List, Align: Left, Sort: None, Border is checked
 Extended == Left Scroll Bar is checked

Hope this helps!

Jerry H.






| Вернуться в корень Архива |