Autor
|
Tema: Consulta sobre como crear un ListView32 (solucionado) (Leído 12,916 veces)
|
el_c0c0
Desconectado
Mensajes: 307
|
Hola que tal, bueno me decidi a meterme en el tema de ASM. Hasta el momento va todo bien, pero me surgio una duda. Quiero crear un control ListView32, lo creo, perfecto. Ahora quiero agregar una columna, para ello me estoy basando en el codigo fuente del ucListView en VB6 de Carles P.V. Bueno, el tema es que no consigo meter el item del header, o algo asi. Aca adjunto el pedazo de codigo: createlv: invoke CreateWindowEx,0,_dlgLV,NULL,WS_CHILD + WS_TABSTOP + LVS_REPORT + WS_VISIBLE,5,5,240,155,[dlghwnd],0,[wc.hInstance],NULL mov [dlglvhwnd],eax invoke ShowWindow,eax,SW_SHOW invoke SetWindowLong,[dlglvhwnd], GWL_WNDPROC, WindowProc2 ; poner el lv en modo list invoke GetWindowLong,[dlglvhwnd],GWL_STYLE mov [tmp], eax mov [tmp], tmp+LVS_LIST-LVS_ICON-LVS_SMALLICON-LVS_REPORT invoke SetWindowLong,[dlglvhwnd],GWL_STYLE,[tmp] ; agregar columna invoke lstrlen,_cap1 ; len del caption mov [hdi.cchTextMax], eax ; len mov [hdi.pszText], _cap1 ; caption mov [hdi.cxy], 100 ; width mov [hdi.fmt], HDF_STRING+HDF_CENTER ; formato mov [hdi.mask], HDI_TEXT+HDI_WIDTH+HDI_FORMAT ; mask invoke SendMessage,[dlglvhwnd],LVM_INSERTCOLUMN,0,[lvc] ; invoke SendMessage,[dlglvhwnd],4127,0,0 ; buscar header dentro del lview mov [dlglvheader], eax ; guardo resultado invoke SendMessage,eax,HDM_SETITEM,0,[hdi] ; seteo el item en el header
y tengo declarado asi: _dlgLV TCHAR 'SysListView32',0 _cap1 TCHAR 'LV32',0 dlglvheader dd ? dlglvhwnd dd ? tmp dd ? lvc LV_COLUMN hdi HD_ITEM
estoy usando FASM. wc.hInstance viene de WNDCLASSEX que uso para crear la ventana. WndProc2 es un procedimiento que llama al DefProcWnd. Ah y probe con y sin [] en hdi y lvc. PD: si quito la parte de 'cambiar el estilo' se ve el recuadro blanco del LV. Pero, con el codigo ese, queda del color de fondo de la ventana. alguna sugerencia? desde ya muchas gracias
|
|
« Última modificación: 19 Marzo 2010, 19:00 pm por el_c0c0 »
|
En línea
|
'- coco "Te voy a romper el orto"- Las hemorroides
|
|
|
|
el_c0c0
Desconectado
Mensajes: 307
|
Che gracias por responder. Mientras tanto estvue indagando por mi cuenta. Lo que me pusiste vos LOCAL lvc:LV_COLUMN mov lvc.imask,LVCF_TEXT+LVCF_WIDTH mov lvc.pszText,offset Heading1 mov lvc.lx,150 invoke SendMessage,hList, LVM_INSERTCOLUMN,0,addr lvc
yo lo tengo asi: mov [lvc.mask], LVCF_TEXT or LVCF_WIDTH mov [lvc.pszText], _cap1 ; aca tengo duda de que esto sea asi mov [lvc.cx], 50 invoke SendMessage, [dlglvhwnd], LVM_INSERTCOLUMN, 0, [lvc]
y para el tema de agregar un item en ese codigo esta asi: mov lvi.imask,LVIF_TEXT inc lvi.iSubItem invoke wsprintf,addr buffer, addr template,[edi].nFileSizeLow lea eax,buffer mov lvi.pszText,eax invoke SendMessage,hList, LVM_INSERTITEM,0, addr lvi
y yo por mi parte lo tengo como mov [lvi.iItem], 0 mov [lvi.iSubItem], 0 mov [lvi.mask], LVIF_TEXT mov [lvi.pszText], _cap1 invoke SendMessage,[dlglvhwnd], LVM_INSERTITEM,0,[lvi]
misteriosamente sigue sin funcionar. sorry que sea duro con esto, recien empiezo saludos
|
|
|
En línea
|
'- coco "Te voy a romper el orto"- Las hemorroides
|
|
|
MCKSys Argentina
|
Tuyo Iczelion ¿ No será por eso ? (Mucho de ASM no manejo )
|
|
|
En línea
|
MCKSys Argentina "Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."
|
|
|
el_c0c0
Desconectado
Mensajes: 307
|
Tuyo Iczelion ¿ No será por eso ? (Mucho de ASM no manejo ) Al revez, el que uso yo usa los []. Esto es porque le estoy pasando como puntero. (de todas formas sin [] no funciona ). Estoy casi seguro que es un problema al pasar el string; aun sigo viendo que carajos pasa. Gracias por contestar, ademas espero otras respuestas. saludos
|
|
|
En línea
|
'- coco "Te voy a romper el orto"- Las hemorroides
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
¿Ambos mensajes devuelven -1? Teniendo el codigo lo mejor que podes hacer es depurar el programa con el WinDbg.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
el_c0c0
Desconectado
Mensajes: 307
|
¿Ambos mensajes devuelven -1? Teniendo el codigo lo mejor que podes hacer es depurar el programa con el WinDbg.
Recien lo probe con Olly, me devuelven 0. A su vez agregue un CMP para no tener que andar debugueando. cual sera el problema? edit, dejo foto del Olly: saludos
|
|
« Última modificación: 15 Marzo 2010, 17:04 pm por el_c0c0 »
|
En línea
|
'- coco "Te voy a romper el orto"- Las hemorroides
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Es dificil saber sin el codigo pero en teoria esos mensajes funcionaron bien ...
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
el_c0c0
Desconectado
Mensajes: 307
|
Es dificil saber sin el codigo pero en teoria esos mensajes funcionaron bien ...
te dejo el codigo completo, espero que sea una pelotudez. format PE GUI 4.0 entry start include 'win32w.inc' section '.data' data readable writeable _class TCHAR 'CocusUI®',0 _title TCHAR 'Window de prueba',0 _error TCHAR 'Startup failed.',0 _dlgLV TCHAR 'SysListView32',0 _cap1 TCHAR 'LV32',0 dlglvheader dd ? dlglvhwnd dd ? dlghwnd dd ? dlghdc dd ? tmp dd ? wc WNDCLASS 0,WindowProc,0,0,NULL,NULL,NULL,COLOR_BTNFACE+1,NULL,_class msg MSG lvi LV_ITEM lvc LV_COLUMN hdi HD_ITEM section '.text' code readable executable start: invoke GetModuleHandle,0 mov [wc.hInstance],eax invoke LoadIcon,0,IDI_APPLICATION mov [wc.hIcon],eax invoke LoadCursor,0,IDC_ARROW mov [wc.hCursor],eax invoke RegisterClass,wc test eax,eax jz error invoke CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_DLGFRAME+WS_SYSMENU,128,128,256,192,NULL,NULL,[wc.hInstance],NULL test eax,eax jz error mov [dlghwnd],eax invoke GetDC,eax mov [dlghdc],eax jmp createlv createlv: invoke CreateWindowEx,0,_dlgLV,NULL,WS_CHILD + WS_TABSTOP + WS_VISIBLE + LVS_REPORT,5,5,240,155,[dlghwnd],0,[wc.hInstance],NULL mov [dlglvhwnd],eax invoke SetWindowLong,[dlglvhwnd], GWL_WNDPROC, WindowProc2 invoke ShowWindow,[dlglvhwnd],SW_SHOW mov [lvi.mask], LVIF_TEXT ;or LVIF_STATE mov [lvi.iItem], 0 mov [lvi.iSubItem], 0 mov [lvi.pszText], _cap1 invoke SendMessage,[dlglvhwnd], LVM_INSERTITEM,0,[lvi] cmp eax,-1 ja msg_loop invoke MessageBeep, MB_OK msg_loop: invoke GetMessage,msg,NULL,0,0 cmp eax,1 jb end_loop jne msg_loop invoke TranslateMessage,msg invoke DispatchMessage,msg jmp msg_loop error: invoke MessageBox,NULL,_error,NULL,MB_ICONERROR+MB_OK end_loop: invoke ExitProcess,[msg.wParam] proc WindowProc2 uses ebx esi edi, hwnd,umsg,wparam,lparam invoke DefWindowProc,[hwnd],[umsg],[wparam],[lparam] cmp [umsg], LVM_INSERTITEM je .beep ret .beep: invoke MessageBeep, MB_OK ret endp proc WindowProc uses ebx esi edi, hwnd,wmsg,wparam,lparam cmp [wmsg],WM_DESTROY je .wmdestroy .defwndproc: invoke DefWindowProc,[hwnd],[wmsg],[wparam],[lparam] jmp .finish .wmdestroy: invoke DestroyWindow,[dlglvhwnd] invoke PostQuitMessage,0 xor eax,eax .finish: ret endp section '.idata' import data readable writeable library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL',\ shell32,'SHELL32.DLL' include 'api\kernel32.inc' include 'api\user32.inc' include 'api\shell32.inc'
Saludos y gracias por las respuestas
|
|
|
En línea
|
'- coco "Te voy a romper el orto"- Las hemorroides
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Detesto FASM ... al menos tenes que llamar a InitCommonControls/InitCommonControlsEx (fue en lo primero que pense al leer el hilo pero la explicacion me confundio, no se creaba el control ...), CreateWindowEx en createlv devuelve 0. Sigo viendo, esto tambien esta mal: invoke SendMessage,[dlglvhwnd], LVM_INSERTITEM,0, [lvi]invoke SendMessage,[dlglvhwnd], LVM_INSERTITEM,0, lviLo mismo para la columna (lvc no [lvc]) y sacando WindowProc2 ya podes seguir
|
|
« Última modificación: 16 Marzo 2010, 00:04 am por Eternal Idol »
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Re: consulta sobre utilizacion SysLink y LITEM Struct (SOLUCIONADO)
Programación C/C++
|
xkiz ™
|
4
|
3,573
|
9 Julio 2011, 23:57 pm
por BlackZeroX
|
|
|
Consulta sobre como crear un juego en Flash
Desarrollo Web
|
TheEGG 89
|
0
|
1,813
|
28 Junio 2012, 12:05 pm
por TheEGG 89
|
|
|
consulta sobre crear disco de arranque [usb]
GNU/Linux
|
xkiz ™
|
0
|
2,120
|
12 Julio 2013, 03:11 am
por xkiz ™
|
|
|
Git consulta sobre el archivo .gitignore [Solucionado]
Programación General
|
Pablo Videla
|
0
|
1,846
|
18 Marzo 2015, 19:09 pm
por Pablo Videla
|
|
|
Consulta sobre crear un Batch
Scripting
|
MudexID
|
0
|
1,835
|
7 Octubre 2015, 18:23 pm
por MudexID
|
|