Español
Foro

Wunsch: ListBox OwnerDraw SubClass

 
Mi Cuestión a Andreas Miethe, qué richtigerweise en funzt posición podría, en el Malen aller individual Einträge el ListBox así incluso a tomar, que un hPic suscrito se en lugar de z.B. el Eintragstext.
KompilierenMarcaSeparación
 
20.02.2009  
 




Andreas
Miethe


¡Hola @IF

Posesiones todavía una kleines Problema beim Starten por Interpreter, veces ne poco Pause hacer, meistens hilft el.
KompilierenMarcaSeparación
Header-Dateien
 $H windows.ph
 $H messages.ph
Strukturen
Struct RECT = Left&,Top&,Right&,Bottom&
Struct DRAWITEMSTRUCT = CtlType&,CtlID&,itemID&,itemAction&,itemState&,hwndItem&,hDC&,rcItem!RECT,itemData&
Declare lpdis#,Rect#,h&
Dim lpdis#,DRAWITEMSTRUCT
Dim Rect#,RECT
var hPic&=create(hNewPic,15,15,$1278FF)
cls ~GetSysColor(~COLOR_BTNFACE)
subClass %hwnd,1
h& = Control(LISTBOX,,~WS_BORDER | ~WS_CHILD | ~WS_VISIBLE | ~LBS_OWNERDRAWFIXED | ~LBS_HASSTRINGS | ~LBS_STANDARD ,10,10,200,200,%hwnd,0,%hInstance,0)
SendMessage(h&, ~LB_SETITEMHEIGHT,0,Makelong(18,0))
Var Item& = AddString(h&,Hallo Welt)
SendMessage(h&,~LB_SETITEMDATA,Item&,hPic&)
Item& = AddString(h&,Hallo Welt 2)
SendMessage(h&,~LB_SETITEMDATA,Item&,hPic&)
AddString(h&,Hallo Welt 3)
Warum geht es mit dem Interpreter erst, wenn ich in die Listbox klicke ?
Als Kompilat funktioniert es !
Habe ich heute ein Brett vorm Kopf ?
Var Ende& = 0

Whilenot Ende&

    WaitInput

EndWhile

end

SubClassProc

    If SubClassMessage(%hwnd,~WM_DRAWITEM)

        lpdis# = &slParam
        Var Text$ = GetString$(lpdis#.hwndItem&,lpdis#.itemID&)
        Var hbmpPicture& = SendMessage(lpdis#.hwndItem&,~LB_GETITEMDATA, lpdis#.itemID&,0)
        Var hdcMem& = ~CreateCompatibleDC(lpdis#.hdc&)
        Var hbmpOld& = ~SelectObject(hdcMem&, hbmpPicture&)
        lpdis#.rcItem!left&= lpdis#.rcItem!left& + 20
        Rect#.Left& = lpdis#.rcItem!left&
        Rect#.Top& = lpdis#.rcItem!Top&
        Rect#.Right& = lpdis#.rcItem!Right&
        Rect#.Bottom& = lpdis#.rcItem!Bottom&
        ~DrawText(lpdis#.hdc&, Addr(Text$), Len(Text$), Rect#,0)
        ~BitBlt(lpdis#.hdc&, lpdis#.rcItem!left&-20, lpdis#.rcItem!top&, lpdis#.rcItem!right& - lpdis#.rcItem!left&,lpdis#.rcItem!bottom& - lpdis#.rcItem!top&, hdcMem&, 0, 0, ~SRCCOPY)
        ~SelectObject(hdcMem&, hbmpOld&)
        ~DeleteDC(hdcMem&)
        Set(WinProc, 1)

    EndIf

ENDPROC

 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
21.02.2009  
 



Wow dankesehr schonmal - así sehe I cada Fall como pensamiento es.

Falls Yo algo para Interpreter herausfind...
 
21.02.2009  
 




Jörg
Sellmeyer
En me knallts hier:
KompilierenMarcaSeparación
~DrawText(lpdis#.hdc&, Addr(Text$), Len(Text$), lpdis#.rcItem,0)
>

Ca. Línea 42
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
21.02.2009  
 




Andreas
Miethe


Jörg Sellmeyer
En me knallts hier:
KompilierenMarcaSeparación
~DrawText(lpdis#.hdc&, Addr(Text$), Len(Text$), lpdis#.rcItem,0)
>

Ca. Línea 42


¡Hola Jörg,

el scheint a el direkten Übergabe el Rechteckstruktur en el Drawitem-Struktur a mentira.
HH hatte auch el problema en Ownerdraw-Menüs. ¿Por qué en el me klappt y en andern no ? Keine Idea.
Pida a los Code dahingehend abgeändert, Ahora debe trabajo.
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
22.02.2009  
 




Jörg
Sellmeyer
Tuve todavía no 11.1 en él! Steoll doch otra vez el originalen Code rein - tal vez lag lo daran.
@Horst - welche Versión hast Usted?
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
22.02.2009  
 




Andreas
Miethe


¡Hola Jörg,

hier otra vez el Original.
KompilierenMarcaSeparación
Header-Dateien
 $H windows.ph
 $H messages.ph
Strukturen
Struct RECT = Left&,Top&,Right&,Bottom&
Struct DRAWITEMSTRUCT = CtlType&,CtlID&,itemID&,itemAction&,itemState&,hwndItem&,hDC&,rcItem!RECT,itemData&
Declare lpdis#,Rect#,h&,WP#
Dim lpdis#,DRAWITEMSTRUCT
var hPic&=create(hNewPic,15,15,$1278FF)
cls ~GetSysColor(~COLOR_BTNFACE)
subClass %hwnd,1
h& = Control(LISTBOX,,~WS_BORDER | ~WS_CHILD | ~WS_VISIBLE | ~LBS_OWNERDRAWFIXED | ~LBS_HASSTRINGS | ~LBS_STANDARD | ~LBS_NOTIFY,10,10,200,200,%hwnd,0,%hInstance,0)
SendMessage(h&, ~LB_SETITEMHEIGHT,0,Makelong(18,0))
Var Item& = AddString(h&,Hallo Welt)
SendMessage(h&,~LB_SETITEMDATA,Item&,hPic&)
Item& = AddString(h&,Hallo Welt 2)
SendMessage(h&,~LB_SETITEMDATA,Item&,hPic&)
AddString(h&,Hallo Welt 3)
Warum geht es mit dem Interpreter erst, wenn ich in die Listbox klicke ?
Als Kompilat funktioniert es !
Habe ich heute ein Brett vorm Kopf ?
Var Ende& = 0

Whilenot Ende&

    WaitInput

EndWhile

end

SubClassProc

    If SubClassMessage(%hwnd,~WM_DRAWITEM)

        lpdis# = &slParam
        Var Text$ = GetString$(lpdis#.hwndItem&,lpdis#.itemID&)
        Var hbmpPicture& = SendMessage(lpdis#.hwndItem&,~LB_GETITEMDATA, lpdis#.itemID&,0)
        Var hdcMem& = ~CreateCompatibleDC(lpdis#.hdc&)
        Var hbmpOld& = ~SelectObject(hdcMem&, hbmpPicture&)
        lpdis#.rcItem!left&= lpdis#.rcItem!left& + 20
        ~DrawText(lpdis#.hdc&, Addr(Text$), Len(Text$), lpdis#.rcItem,0)
        ~BitBlt(lpdis#.hdc&, lpdis#.rcItem!left&-20, lpdis#.rcItem!top&, lpdis#.rcItem!right& - lpdis#.rcItem!left&,lpdis#.rcItem!bottom& - lpdis#.rcItem!top&, hdcMem&, 0, 0, ~SRCCOPY)
        ~SelectObject(hdcMem&, hbmpOld&)
        ~DeleteDC(hdcMem&)
        Set(WinProc, 1)

    EndIf

ENDPROC

 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
22.02.2009  
 




Jörg
Sellmeyer
Mh - seltsam. Im Interpreter knallts no, en compilierter Form ya. Aunque zeigt en me el Runtime siempre todavía 11.0 a y Interpreter 11.1, obwohl Yo todos Archivos de el letzten(?) Actualización vom 2.12. en él habe.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
22.02.2009  
 




Andreas
Miethe


Dann es qué schiefgelaufen en Deinem Actualización. Mi Runtime zeigt korrekt 11.1 a.

Dateidatum Runtime, Interpreter y Compiler 26.11.2008 11:01
 
Gruss
Andreas
________ ________ ________ ________ _
Profan 3.3 - XProfanX2
Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit
ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher
Homepage :  [...] 
22.02.2009  
 




Jörg
Sellmeyer
Ok - ahora tener ego auch. Hatte vergessen en el Projekteinstellungen el neue Runtime anzugeben. Läuft also salvo el Interpreter-/Runtime-Seltsamigkeit, el Usted oben erwähnt hast.
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
22.02.2009  
 



Das Ejemplo zeigt, dass lo schade es, dass el SubClassProc sólo en el WaitInput greift.

Werden en el Programmablauf primero el Listboxen producido y befüllt, wonach entonces el Hauptschleife con WaitInput erreicht se.

Weil el Noticias perdido son, voluntad primero no Items dargestellt.

446 kB
Kurzbeschreibung: sin nachträgliches Anschubsen
Hochgeladen:02.03.2009
Ladeanzahl103
Descargar
446 kB
Kurzbeschreibung: con nachträglichem Anschubsen
Hochgeladen:02.03.2009
Ladeanzahl77
Descargar
448 kB
Kurzbeschreibung: nachträgliches Anschubsen manchmal wirkungslos
Hochgeladen:02.03.2009
Ladeanzahl96
Descargar
 
02.03.2009  
 



Hmpf, auch si yo z.B. wm_drawItem zusätzlich como UserMessage deklariere en el Hauptschleife mitzuteilen, dass en ListBoxen Einträge para dibujar wären, entonces erhalte Yo (natürlich) weder en uwnd, ulparam todavía uwparam una brauchbare Info - sodass Yo neu dibujar podría.

Könnte uno _nur innerhalb el subClassProc y innerhalb des waitInput addString anweisen sodass el Einträge auch adecuado voluntad. :/

Yo teste veces, si uno wm_command como UserMessage nutzen kann - debería sí en lbs_notfiy versandt voluntad con Handle el ListBox en el ulParam.

Apéndice: wm_command no es ausgelöst de addString - ldr. (auch) no Solución.
 
02.03.2009  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

11.624 Views

Untitledvor 0 min.
Manfred Barei28.12.2020
Normann Strübli24.03.2020
Rainer Hoefs12.05.2019
Member 154727723.09.2018
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie