Таблица средствами WinAPI

Тема в разделе "WASM.BEGINNERS", создана пользователем bigredcat, 26 ноя 2008.

  1. bigredcat

    bigredcat New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    54
    Нужно в VC средствами WinAPI реализовать таблицу 100х100 и вывести туда значения... Ничего, кроме как добавить в окно 100х100 элементов Static, что-то не придумал. Но тогда еще и со Scroll Bars придется заморачиваться. Может есть проще вариант (типа элемента управления DataGrid) ?
     
  2. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    есть listview
     
  3. mc black

    mc black Member

    Публикаций:
    0
    Регистрация:
    19 янв 2005
    Сообщения:
    213
    Адрес:
    Russia, N.Novgorod
    Можно и DrawText, только с ScrollBars и правда надо возится

    listview конечно больше подходит.
     
  4. bigredcat

    bigredcat New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    54
    То, что доктор прописал :)
     
  5. AsmGuru62

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
    Как напишешь код (100х100 элементов поставишь) - расскажи про скорость - интересно. Ну там, поскроллировать - насколько быстро?
    А также насколько быстро заполняется вся таблица?
    Или например как быстро находится текст - брать например 90-й столбец и прочитать в память все элементы ряда?
     
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.784
    bigredcat
    Можно и через TabbedTextOut -- 100 строк элементы которых разделены табуляцией
     
  7. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    AsmGuru62
    всё давно написано:
    \masm32\examples\exampl06\listview
    экспериментируй на здоровье ;)
     
  8. bigredcat

    bigredcat New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    54
    По поводу реализации таблицы при помощи List View ... Попробывал сегодня сделать. Почти все работает, как надо, но...
    Как сделать, чтобы первый столбец (заголовки строк) при горизонтальном скроллинге оставались на месте?
    Пробывал добавить еще один элемент List View который бы выполнял роль заголовка строк и пролистывать его вместе с основной таблицей. Что-то типа:
    Код (Text):
    1. case LVN_BEGINSCROLL:
    2.     // hwndLVTable - значения таблицы
    3.     // hwndLVRowTitle - заголовок строк таблицы
    4.     LPNMLVSCROLL pnmLVS = (LPNMLVSCROLL)lParam;
    5.     if (pnmLVS->hdr.hwndFrom == hwndLVTable)
    6.     if (pnmLVS->dy)
    7.     {
    8.         int dy = pnmLVScroll->dy;
    9.         pnmLVScroll->dy = 0;
    10.         ListView_Scroll(hwndLVRowTitle, 0, dy);
    11.         break;
    12.     }
    но при этом вылезают полосы прокрутки и от hwndLVRowTitle и от hwndLVTable.

    AsmGuru62
    Скроллинг, заполнение работают быстро (но и машина соответсвует), другое не пробывал.
     
  9. driver

    driver New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    302
    сделай 2 листвьева
     
  10. bigredcat

    bigredcat New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    54
    В смысле? Я ж вроде так и делаю.

    Таблица довольно большая, приходится выполнять и вертикальный и горизонтальный скроллинг. Я и добавляю два List View: первый для заголовков строк; второй для заголовков столбцов и собственно значений таблицы. Вертикальную прокрутку заголовков строк выполняю как описано выше (по сообщению LVN_BEGINSCROLL от таблицы со значениями). Проблема в том, что при скроллинге вылезают полосы прокрутки от обоих элементов List View.
     
  11. scf

    scf Member

    Публикаций:
    0
    Регистрация:
    12 сен 2005
    Сообщения:
    386
    Ручками, все ручками!
    голое окно со скроллбарами и разделительные линии с текстом через GDI
    все будет летать при любом размере, если реально отображать только то, что видно

    Для примера смотри аттач - откопал свою лабу 4летней давности