Есть такая проблема создано окно .....все работает ок ......инициализирован листвью из ресурсов ........а когда при создании окна я ему посылаю команды на создание колонки..... то они иногда выполняются а иногда нет !!!!!! Как это можно обьяснить ???? .....раз на раз запуска приложения не приходится ???? ....ааа вот еще не выводит текст ...хотя все указано правильно !!! Что за глюк ?
Код (Text): .data ;############################################################ ; List View ;############################################################ szColName db 'Filename',0 szColSize db 'Size',0 szColDate db 'Date Time',0 szColAttr db 'Attr',0 hList dd ? lvc LV_COLUMN <?> icc dd SIZEOF INITCOMMONCONTROLSEX dd ICC_INTERNET_CLASSES or ICC_LISTVIEW_CLASSES INITCOMMONCONTROLSEX STRUCT dwSize dd ? dwICC dd ? INITCOMMONCONTROLSEX ENDS ICC_LISTVIEW_CLASSES equ 00000001h .................................................... .................................................... .code start: xchg ebx,eax push offset icc call _imp__InitCommonControlsEx@4 invoke GetModuleHandle, NULL mov hInstance,eax mov edi,offset style assume edi:ptr WNDCLASSA push edi call _imp__RegisterClassA@4 push ebx push ebx push ebx push 1000;offset DlgName push [edi].hInstance call _imp__CreateDialogParamA@20 mov esi,eax lea edi,_imp__GetDlgItem@8 push IDD_TAB push eax call dword ptr [edi] push IDC_GRP1 push esi call dword ptr [edi] push IDC_GRP2 push esi call dword ptr [edi] push IDC_SBR1 push esi call dword ptr [edi] push IDC_EDT2 push esi call dword ptr [edi] push IDC_BTN1 push esi call dword ptr [edi] push IDC_BTN2 push esi call dword ptr [edi] push IDC_BTN3 push esi call dword ptr [edi] push IDC_STC1 push esi call dword ptr [edi] push IDC_STC2 push esi call dword ptr [edi] push IDC_IPA1 push esi call dword ptr [edi] push IDC_LSV1 push esi call dword ptr [edi] mov hList,eax push IDC_BTN4 push esi call dword ptr [edi] push IDC_BTN5 push esi call dword ptr [edi] push IDC_BTN6 push esi call dword ptr [edi] push IDC_PGB1 push esi call dword ptr [edi] push IDC_BTN7 push esi call dword ptr [edi] push IDC_BTN8 push esi call dword ptr [edi] push IDC_BTN9 push esi call dword ptr [edi] push eax call _imp__SetFocus@4 mov h2Wnd, esi mov lvc.imask,LVCF_TEXT+LVCF_WIDTH mov lvc.pszText,offset szColName mov lvc.lx,150 invoke SendMessage,hList, LVM_INSERTCOLUMN,0,addr lvc ;/////////////////////////////////////////////////// INVOKE ShowWindow, h2Wnd,SW_SHOWNORMAL INVOKE UpdateWindow, h2Wnd ;//////////////////////////////////////////////////// .WHILE TRUE invoke GetMessage, ADDR msg,NULL,0,0 .BREAK .IF (!eax) invoke IsDialogMessage, HWND, ADDR msg .IF eax ==FALSE invoke TranslateMessage, ADDR msg invoke DispatchMessage, ADDR msg .ENDIF .ENDW mov eax, msg.wParam ret WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM ;///////////////////////////////////////////////////////////////////////////////////////// .if uMsg==WM_CREATE invoke MessageBox,NULL,ADDR textbox,ADDR AppName,MB_OK .ELSEIF uMsg==WM_DESTROY invoke WSACleanup ; dll больше не нужна invoke PostQuitMessage,NULL .ENDIF .IF uMsg==WM_COMMAND mov edx,wParam shr edx,16 ///////////////////////////////// это находится в ресурсах CONTROL "",IDC_LSV1,"SysListView32",0x50800411,181,29,249,160 #define IDC_LSV1 1004 Я этот код со вставкой ...куда уже не лепил !!!!! Вот что еще ....когда код убираешь !!! То все равно колонка также временами появляется а временами нет !! ??????? это как ?
вообще хорошо бы структуру lvc полностью обнулять перед использованием и раз ты задаешь там текст, то еще нужно заполнять поле cchTextMax (не заполнение кстати может вызывать разные непонятные глюки)
Gelios структуру LVCOLUMN не обязательно обнулять и устанавливать cchTextMax. msdn говорит, что это поле:
обнулять это ладно, но это тогда что? ... mov lvc.imask,LVCF_TEXT+LVCF_WIDTH mov lvc.pszText,offset szColName ... вот именно, что ты как раз используешь текст, а cchTextMax не заполняешь
mov lvc.cchTextMax,255 добавил вот так .....результатов нет ....окно также то показывет пустую колонку то вообще не показыфвает ....раз через раз .... Что еще может влиять на такое поведение ???
Gelios в цитате из msdn говорится, что поле cchTextMax игнорируется, когда ты добавляешь колонку (или изменяешь текст колонки). Оно используется только когда ты отправляешь LVM_GETCOLUMN с lvc.mask == LVCF_TEXT, чтобы определить, достаточно ли ты места выделил в буфере под текст колонки.
может есть варианты таких глюков из за стиля окна основного ???? или какие нибудь особенности .......... Вот еще заметка ......я вставлял код с туторов айселона процедуру Tree View все правильно .....так она тоже раз через раз в три вью вставляла все ...но хоть с текстом .......а событие о вставки исполнялось по нажатию кнопки
rmn где ты такое нашел? в моем мсдн ничего подобного нет имхо cchTextMax используется всегда, когда выставлен флаг LVCF_TEXT calidus если компилировать тот код, который ты выложил, то там вообще нет ни ресурсов и половина переменных не определено + мусор есть. так что если я всё допишу и у меня заработает, то не факт что это будет работать у тебя. выкладывай лучше все файлы или проект