ListView как заставить выводить Unicode?

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

  1. Anatol_spr

    Anatol_spr New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2008
    Сообщения:
    4
    День добрый! Есть такой кусок кода (FASM):

    Код (Text):
    1. ;Определение данных:
    2. win_name        du      'SysListView32',0
    3. base_head       db      'Site',0
    4. item_col        LV_COLUMN
    5. ...
    6. ...
    7.  
    8. ;Cоздаю окно ListView
    9.  
    10.  invoke  InitCommonControls
    11.         invoke CreateWindowExW,0,win_name,win_name,LVS_ALIGNLEFT+WS_VISIBLE+WS_BORDER+LVS_REPORT+LVS_SORTASCENDING+WS_CHILD,\
    12.                 2*OTSTUP+120d,6*OTSTUP+10d*5,400d,140d,[hwnd],IDLIST,[hInstance_ph],0
    13.  
    14. ;Создаю колонку:
    15.         MOV     [item_col.mask],LVCF_FMT+LVCF_TEXT+LVCF_WIDTH
    16.         MOV     [item_col.fmt],LVCFMT_CENTER
    17.         MOV     [item_col.cx],70d
    18.         MOV     [item_col.pszText],base_head              ;base_head - адрес строки
    19.         invoke  SendDlgItemMessageW, [hwnd],IDLIST,LVM_INSERTCOLUMN,0,item_col    ;SendDlgItemMessageW использую т.к. ListView является дочерним окном диалогового Parent-а
    Создается все замечательно, но есть одно "Но". Если строка по адресу base_head задана в формате ASCIIZ то все нормально. Если задать ее в формате Unicode, то в названии колонки будет выведен только первый символ (что вообщем-то понятно). Непонятно только, как заставить ListView выводить Unicode строки?

    P.S. Понимаю конечно, что вопрос детский, но ответа я найти не смог.
    P.P.S. Поиск юзал.
     
  2. driver

    driver New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    302
    LVCF_TEXT - ? есть другие константы для листвьева? типа LVCF_RTF ? (должна быть, я видел листвьевы с символами уникода...) , LVCF_UNICOD ? - в обычном текстовом редакторе я делал уникод, а как забыл
     
  3. Anatol_spr

    Anatol_spr New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2008
    Сообщения:
    4
    Нет, в переменной mask, структуры LV_COLUMN только константы приведенные ниже. Да и переменная mask применяется только для того, что бы указать какие дополнительные параметры структуры LV_COLUMN использовать. В данном случае LVCF_TEXT указывает, что при создании колонки необходимо брать текст, указатель на который находится в pszText

    Выдержка из WIN32.HLP:
     
  4. AB_Celitel

    AB_Celitel New Member

    Публикаций:
    0
    Регистрация:
    9 июл 2005
    Сообщения:
    72
    Адрес:
    Россия, г.Иваново
    ну, а если, как вариант, перед выводом в анси переводить)
     
  5. Anatol_spr

    Anatol_spr New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2008
    Сообщения:
    4
    Та оно то понятно, но это я держу на крайний случай... Хотелось бы в Unicode. Я просто думаю может где-то я туплю и достаточно где-то константу какую-то добавить, чтоб Unicode вывести. Или ListView не подерживает стандартными методоми Unicode?
     
  6. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Просто сообщение нужно отправлять уникодовое LVM_INSERTCOLUMNW.
     
  7. Anatol_spr

    Anatol_spr New Member

    Публикаций:
    0
    Регистрация:
    9 апр 2008
    Сообщения:
    4
    Таки тупил, все действительно решилось (как-то не допер, что и message-ы могут быть уникод). Спасибо огромное.