ListView вывод колонок Help

Тема в разделе "WASM.WIN32", создана пользователем calidus, 4 мар 2007.

  1. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Есть такая проблема создано окно .....все работает ок ......инициализирован листвью из ресурсов ........а когда при создании окна я ему посылаю команды на создание колонки..... то они иногда выполняются а иногда нет !!!!!! Как это можно обьяснить ???? .....раз на раз запуска приложения не приходится ???? ....ааа вот еще не выводит текст ...хотя все указано правильно !!! Что за глюк ?
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    телепаты тут пока не ходят. код будьте добры выложить свой.
     
  3. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Код (Text):
    1. .data
    2. ;############################################################
    3. ;              List View
    4. ;############################################################
    5. szColName         db     'Filename',0
    6. szColSize         db  'Size',0
    7. szColDate         db  'Date           Time',0
    8. szColAttr         db   'Attr',0
    9. hList dd ?
    10. lvc LV_COLUMN <?>
    11.  
    12. icc dd SIZEOF INITCOMMONCONTROLSEX
    13.     dd ICC_INTERNET_CLASSES or ICC_LISTVIEW_CLASSES
    14.  
    15. INITCOMMONCONTROLSEX STRUCT
    16.   dwSize  dd      ?
    17.   dwICC   dd      ?
    18. INITCOMMONCONTROLSEX ENDS
    19.  
    20. ICC_LISTVIEW_CLASSES             equ 00000001h
    21. ....................................................
    22. ....................................................
    23. .code
    24. start:  xchg ebx,eax
    25.     push offset icc
    26.     call _imp__InitCommonControlsEx@4
    27.     invoke GetModuleHandle, NULL
    28.     mov    hInstance,eax
    29.     mov edi,offset style
    30.     assume edi:ptr WNDCLASSA
    31.     push edi
    32.     call _imp__RegisterClassA@4
    33.     push ebx
    34.     push ebx   
    35.     push ebx   
    36.     push 1000;offset DlgName                   
    37.     push [edi].hInstance
    38.     call _imp__CreateDialogParamA@20
    39.     mov   esi,eax
    40.     lea edi,_imp__GetDlgItem@8
    41.     push IDD_TAB
    42.     push eax
    43.     call dword ptr [edi]
    44.     push IDC_GRP1
    45.     push esi
    46.     call dword ptr [edi]
    47.     push IDC_GRP2
    48.     push esi
    49.     call dword ptr [edi]
    50.         push IDC_SBR1
    51.     push esi
    52.     call dword ptr [edi]
    53.         push IDC_EDT2
    54.     push esi
    55.     call dword ptr [edi]
    56.         push IDC_BTN1
    57.     push esi
    58.     call dword ptr [edi]
    59.         push IDC_BTN2
    60.     push esi
    61.     call dword ptr [edi]
    62.         push IDC_BTN3
    63.     push esi
    64.     call dword ptr [edi]
    65.     push IDC_STC1
    66.     push esi
    67.     call dword ptr [edi]
    68.     push IDC_STC2
    69.     push esi
    70.     call dword ptr [edi]
    71.     push IDC_IPA1
    72.     push esi
    73.     call dword ptr [edi]
    74.     push IDC_LSV1
    75.     push esi
    76.     call dword ptr [edi]
    77.    
    78.     mov hList,eax
    79.  
    80.         push IDC_BTN4
    81.     push esi
    82.     call dword ptr [edi]
    83.         push IDC_BTN5
    84.     push esi
    85.     call dword ptr [edi]
    86.         push IDC_BTN6
    87.     push esi
    88.     call dword ptr [edi]
    89.         push IDC_PGB1
    90.     push esi
    91.     call dword ptr [edi]
    92.         push IDC_BTN7
    93.     push esi
    94.     call dword ptr [edi]
    95.         push IDC_BTN8
    96.     push esi
    97.     call dword ptr [edi]
    98.         push IDC_BTN9
    99.     push esi
    100.     call dword ptr [edi]
    101.     push eax
    102.     call _imp__SetFocus@4
    103.     mov h2Wnd, esi
    104.           mov lvc.imask,LVCF_TEXT+LVCF_WIDTH
    105.           mov lvc.pszText,offset szColName
    106.           mov lvc.lx,150
    107.           invoke SendMessage,hList, LVM_INSERTCOLUMN,0,addr lvc
    108.     ;///////////////////////////////////////////////////
    109.     INVOKE ShowWindow, h2Wnd,SW_SHOWNORMAL
    110.     INVOKE UpdateWindow, h2Wnd
    111.     ;////////////////////////////////////////////////////
    112.       .WHILE TRUE
    113.            invoke GetMessage, ADDR msg,NULL,0,0
    114.            .BREAK .IF (!eax)
    115.            invoke IsDialogMessage, HWND, ADDR msg
    116.            .IF eax ==FALSE
    117.              invoke TranslateMessage, ADDR msg
    118.              invoke DispatchMessage, ADDR msg
    119.              
    120.            .ENDIF
    121.        .ENDW
    122. mov     eax, msg.wParam
    123. ret
    124. WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    125. ;/////////////////////////////////////////////////////////////////////////////////////////      
    126. .if uMsg==WM_CREATE
    127.     invoke MessageBox,NULL,ADDR textbox,ADDR AppName,MB_OK
    128.  
    129.     .ELSEIF uMsg==WM_DESTROY
    130.         invoke WSACleanup       ;  dll больше не нужна
    131.         invoke PostQuitMessage,NULL
    132. .ENDIF
    133.    .IF uMsg==WM_COMMAND
    134.        mov edx,wParam
    135.                shr edx,16
    136. /////////////////////////////////
    137.  
    138. это находится в ресурсах
    139.   CONTROL "",IDC_LSV1,"SysListView32",0x50800411,181,29,249,160
    140. #define IDC_LSV1 1004
    Я этот код со вставкой ...куда уже не лепил !!!!! Вот что еще ....когда код убираешь !!! То все равно колонка также временами появляется а временами нет !! ??????? это как ?
     
  4. Gelios

    Gelios New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2006
    Сообщения:
    16
    вообще хорошо бы структуру lvc полностью обнулять перед использованием
    и раз ты задаешь там текст, то еще нужно заполнять поле cchTextMax (не заполнение кстати может вызывать разные непонятные глюки)
     
  5. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Gelios
    структуру LVCOLUMN не обязательно обнулять и устанавливать cchTextMax.
    msdn говорит, что это поле:
     
  6. Gelios

    Gelios New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2006
    Сообщения:
    16
    обнулять это ладно, но это тогда что? :)

    ...
    mov lvc.imask,LVCF_TEXT+LVCF_WIDTH
    mov lvc.pszText,offset szColName
    ...

    вот именно, что ты как раз используешь текст, а cchTextMax не заполняешь
     
  7. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    mov lvc.cchTextMax,255 добавил вот так .....результатов нет ....окно также то показывет пустую колонку то вообще не показыфвает ....раз через раз ....

    Что еще может влиять на такое поведение ???
     
  8. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Gelios
    в цитате из msdn говорится, что поле cchTextMax игнорируется, когда ты добавляешь колонку (или изменяешь текст колонки).
    Оно используется только когда ты отправляешь LVM_GETCOLUMN с lvc.mask == LVCF_TEXT, чтобы определить, достаточно ли ты места выделил в буфере под текст колонки.
     
  9. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    может есть варианты таких глюков из за стиля окна основного ???? или какие нибудь особенности .......... Вот еще заметка ......я вставлял код с туторов айселона процедуру Tree View все правильно .....так она тоже раз через раз в три вью вставляла все ...но хоть с текстом .......а событие о вставки исполнялось по нажатию кнопки
     
  10. Gelios

    Gelios New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2006
    Сообщения:
    16
    rmn
    где ты такое нашел? в моем мсдн ничего подобного нет :)
    имхо cchTextMax используется всегда, когда выставлен флаг LVCF_TEXT

    calidus
    если компилировать тот код, который ты выложил, то там вообще нет ни ресурсов и половина переменных не определено + мусор есть. так что если я всё допишу и у меня заработает, то не факт что это будет работать у тебя. выкладывай лучше все файлы или проект
     
  11. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618