Título: Consulta sobre como crear un ListView32 (solucionado) Publicado por: el_c0c0 en 15 Marzo 2010, 01:02 am 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:
Código y tengo declarado asi: Código 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 ::) Título: Re: Consulta sobre como crear un ListView32 Publicado por: MCKSys Argentina en 15 Marzo 2010, 02:40 am Hola!
Fíjate por aqui: http://win32assembly.online.fr/tut31.html Quizás te ayude :) Saludos! Título: Re: Consulta sobre como crear un ListView32 Publicado por: el_c0c0 en 15 Marzo 2010, 02:57 am Hola! Che gracias por responder. Mientras tanto estvue indagando por mi cuenta. Lo que me pusiste vos Fíjate por aqui: http://win32assembly.online.fr/tut31.html Quizás te ayude :) Saludos! Código yo lo tengo asi: Código
y para el tema de agregar un item en ese codigo esta asi: Código y yo por mi parte lo tengo como Código
misteriosamente sigue sin funcionar. sorry que sea duro con esto, recien empiezo :D saludos Título: Re: Consulta sobre como crear un ListView32 Publicado por: MCKSys Argentina en 15 Marzo 2010, 03:14 am Tuyo
Código: inc lvi.iSubItem Iczelion Código: mov [lvi.iSubItem], 0 ¿ No será por eso ? (Mucho de ASM no manejo :)) Título: Re: Consulta sobre como crear un ListView32 Publicado por: el_c0c0 en 15 Marzo 2010, 03:21 am Tuyo Al revez, el que uso yo usa los []. Esto es porque le estoy pasando como puntero. (de todas formas sin [] no funciona :D). Estoy casi seguro que es un problema al pasar el string; aun sigo viendo que carajos pasa. Código: inc lvi.iSubItem Iczelion Código: mov [lvi.iSubItem], 0 ¿ No será por eso ? (Mucho de ASM no manejo :)) Gracias por contestar, ademas espero otras respuestas. saludos Título: Re: Consulta sobre como crear un ListView32 Publicado por: Eternal Idol en 15 Marzo 2010, 12:06 pm ¿Ambos mensajes devuelven -1? Teniendo el codigo lo mejor que podes hacer es depurar el programa con el WinDbg.
Título: Re: Consulta sobre como crear un ListView32 Publicado por: el_c0c0 en 15 Marzo 2010, 16:47 pm ¿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: (http://img85.imageshack.us/img85/7398/1503100103.jpg) (http://img85.imageshack.us/i/1503100103.jpg/) saludos Título: Re: Consulta sobre como crear un ListView32 Publicado por: Eternal Idol en 15 Marzo 2010, 18:16 pm Es dificil saber sin el codigo pero en teoria esos mensajes funcionaron bien ...
Título: Re: Consulta sobre como crear un ListView32 Publicado por: el_c0c0 en 15 Marzo 2010, 22:31 pm Es dificil saber sin el codigo pero en teoria esos mensajes funcionaron bien ... te dejo el codigo completo, espero que sea una pelotudez. Código Saludos y gracias por las respuestas ;) Título: Re: Consulta sobre como crear un ListView32 Publicado por: Eternal Idol en 15 Marzo 2010, 22:53 pm 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, lvi Lo mismo para la columna (lvc no [lvc]) y sacando WindowProc2 ya podes seguir ::) Título: Re: Consulta sobre como crear un ListView32 Publicado por: el_c0c0 en 16 Marzo 2010, 04:14 am 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, lvi Lo mismo para la columna (lvc no [lvc]) y sacando WindowProc2 ya podes seguir ::) Bien, agregue el initcommoncontrols y initcommoncontrolsex con el parametro ICC_LISTVIEW_CLASSES, pero no me va. Ah, tambien cambie de [lvi] a lvi. Tambien saque la linea de SetWindowLong,[dlglvhwnd], GWL_WNDPROC, WindowProc2,pero igual. Que rayos pasa? Saludos ! Título: Re: Consulta sobre como crear un ListView32 Publicado por: bizco en 16 Marzo 2010, 04:48 am (http://r.i.elhacker.net/cache?url=http://img691.imageshack.us/img691/7922/ventanita2.jpg)
Código: start: No me va, no es una explicacion. mira justo en el call que devuelve la funcion. si actualizaste el codigo lo mejor es que lo pongas aqui y podemos ser mas concretos. (http://r.i.elhacker.net/cache?url=http://img169.imageshack.us/img169/4883/ventanita.jpg) No te voy a dar el codigo, pero fijate bien en tu codigo. ¿que va primero el huevo o la gallina? En pocas palabras intentas meter un item cuando aun no existe la columna que lo contiene. Columna1 Columna2 ColumnaX Elemento1 sub sub PD ya no se cuantas veces edite, ese "problema" te viene pq usas LVS_REPORT ¿quieres ese estilo para tu lv? Título: Re: Consulta sobre como crear un ListView32 Publicado por: Eternal Idol en 16 Marzo 2010, 07:56 am Bien, agregue el initcommoncontrols y initcommoncontrolsex con el parametro ICC_LISTVIEW_CLASSES, pero no me va. Ah, tambien cambie de [lvi] a lvi. Tambien saque la linea de SetWindowLong,[dlglvhwnd], GWL_WNDPROC, WindowProc2,pero igual. Que rayos pasa? Saludos ! ¿Y esta parte?: "Lo mismo para la columna (lvc no [lvc])", tenes que agregar la columna, usa elcodigo que tenias antes para eso pero con lvc (yo lo copie del primer mensaje del hilo). Título: Re: Consulta sobre como crear un ListView32 Publicado por: el_c0c0 en 18 Marzo 2010, 18:32 pm Bien, agregue el initcommoncontrols y initcommoncontrolsex con el parametro ICC_LISTVIEW_CLASSES, pero no me va. Ah, tambien cambie de [lvi] a lvi. Tambien saque la linea de SetWindowLong,[dlglvhwnd], GWL_WNDPROC, WindowProc2,pero igual. Que rayos pasa? Saludos ! ¿Y esta parte?: "Lo mismo para la columna (lvc no [lvc])", tenes que agregar la columna, usa elcodigo que tenias antes para eso pero con lvc (yo lo copie del primer mensaje del hilo). Bien, no habia posteado resultados porque no estuve en casa. Si, quiero LVS_REPORT. Ya lo solucione, habia que usar Initcommoncontrols sin el Ex. Ahora lo que no entiendo es porque solo toma la letra L de la variable LV32, imagino que es por el tema de Wide o Ansi. No? Muchisimas gracias gente :D Título: Re: Consulta sobre como crear un ListView32 Publicado por: Eternal Idol en 18 Marzo 2010, 18:43 pm De nadas ::)
Seguramente; yo lo habia cambiado asi: include 'win32a.inc' probando otras cosas por eso me olvide y no lo mencione (a mi me sale LV32). Título: Re: Consulta sobre como crear un ListView32 Publicado por: el_c0c0 en 18 Marzo 2010, 19:34 pm De nadas ::) Seguramente; yo lo habia cambiado asi: include 'win32a.inc' probando otras cosas por eso me olvide y no lo mencione (a mi me sale LV32). Claro yo habia usado eso mismo. Pero bueno, para sacarme la duda, como seria el asunto en Wide? yo tengo declarado _cap1 TCHAR 'LV32',0 sera otro tipo en vez de TCHAR? podria usar db para eso?. Saludos! Título: Re: Consulta sobre como crear un ListView32 Publicado por: Eternal Idol en 18 Marzo 2010, 20:04 pm TCHAR suena correcto pero es algo de FASM (en cuanto a ASM), mejor consulta su documentacion.
Título: Re: Consulta sobre como crear un ListView32 Publicado por: bizco en 19 Marzo 2010, 04:41 am si, puedes usar db perfectamente. realmente tchar lo que haces es declarar como db (multibyte) o du para unicode que es el caso de la cabecera que estas usando.
Título: Re: Consulta sobre como crear un ListView32 Publicado por: Eternal Idol en 19 Marzo 2010, 07:48 am Si usas db tenes que llamar a SendMessageA y usar la estructura LV_ITEMA (si incluis la cabecera correcta eso se hace automaticamente en teoria).
|