Español
Foro

Icon en SubPopUp

 

Paul
Glatz
¡Hola,

mann de hecho puede con el API SetMenuItemBitmaps una AppendMenu una Icon zuweisen. Geht el auch con SubPopUps??
 
20.02.2009  
 



Yo glaube nein*! (Yo auch todavía no gesehen)

*) salvo (natürlich) por Ownerdraw, hier kann Andreas Miethe tal vez helfen.
 
20.02.2009  
 




Paul
Glatz
Windows machts auch!
 
20.02.2009  
 



Hast veces nen Ss?
 
20.02.2009  
 




Paul
Glatz
Klar!

ss.png  
9 kB
Hochgeladen:20.02.2009
Ladeanzahl81
Descargar
 
20.02.2009  
 



SubPopups, sí - qué se Yo sagen - va.
 
20.02.2009  
 




Paul
Glatz
Das lo irgentwie va weiß Yo auch sólo como??
 
20.02.2009  
 




Andreas
Miethe


Paul Glatz
Das lo irgentwie va weiß Yo auch sólo como??


Es por Ownerdraw.
Como una SubPopUp kein Handle zurückgibt allerdings sólo en Position.

Mit SetMenuItemBitmaps() debería lo auch por Position trabajo !
Gerade getestet, va.

Ejemplo con SetMenuItemBitmaps ( Yo dafür Rolands Ejemplo benutzt )
KompilierenMarcaSeparación
 $H windows.ph
Declare Hicon&,Ende%,Show%
Declare Checkmerker%,Menuhandle&
Declare hbmChecked&,hbmUnchecked&
DEF SetMenuItemBitmaps(5) !USER32,SetMenuItemBitmaps

Proc Ico2SizedBmp

    Parameters Icon&, dx&, dy&
    Weiße temporäre Bitmap in Größe 32 * 32 erzeugen
    Var TempBmp& = Create(hNewPic, 32, 32, RGB(255,255,255))
    Auf diese Bitmap das Icon zeichnen
    StartPaint TempBmp&
    DrawIcon Icon&, 0, 0
    EndPaint
    Weiße Bitmap in Größe dx& * dy& erzeugen
    Var IBmp& = Create(hNewPic, dx&, dy&, RGB(255,255,255))
    Auf diese Bitmap die temporäre Bitmap verkleinert zeichnen
    StartPaint IBmp&
    DrawSizedPic TempBmp&, 0, 0 - dx&, dy&; 0
    EndPaint
    DeleteObject TempBmp&
    Return IBmp&

EndProc

Proc Menue

    CreateMenu
    AppendMenu 101, &Info
    SubPopup Test
    SetMenuItemBitmaps(&hMenu,1,$400,hbmChecked&,hbmUnChecked&)Menu-Grafik ändern...
    ##### NEU ####
    SubPopup Test1 SubPopUp in SubPopUp
    SetMenuItemBitmaps(~GetSubMenu(&hMenu,1),0,$400,hbmChecked&,hbmUnChecked&)Menu-Grafik ändern...
    AppendMenu 202, &test1
    Endsub
    ##########
    AppendMenu 202, &test2
    Endsub
    AppendMenu 102, &deaktiviert
    SetMenuItemBitmaps(&hMenu,102,$10,hbmChecked&,hbmUnChecked&)Menu-Grafik ändern...
    AppendMenu 106, Hauptfenster &sichtbar
    SetMenuItemBitmaps(&hMenu,106,$10,hbmChecked&,hbmUnChecked&)Menu-Grafik ändern...
    AppendMenu 104, -
    AppendMenu 103, &Beenden
    CheckMenu 106, Show%
    CheckMenu 102, Checkmerker%
    Return @TrackMenu()

EndProc

Windowstyle 26 + 512
WindowTitle TrayIcon_Test
Window 0,0-640,480
@ShowWindow(%hWnd,0)
Hicon&        = @create(hIcon,Profan)
hbmChecked&   = Ico2SizedBmp(@create(hIcon, A),13,13)
hbmUnChecked& = Ico2SizedBmp(@create(hIcon, Baum),13,13)
@TrayIcon(Add, %hWnd, 1, hIcon&, TrayIcon 11)

Whilenot Ende%

    Waitinput

    If @TrayIcon(Msg, 1) = $203Doppelklick links

        Ende%=1

    Elseif @TrayIcon(Msg, 1) = $204Rechter Mausbutton gedrückt

        @SetActiveWindow(%hWnd)
        Menue()

        If (%MenuItem = 102)

            Checkmerker% = @Not(Checkmerker%)Zustandsänderung merken...

            If Checkmerker% = 0

                Hicon& = @create(hIcon, A)
                @TrayIcon(SetIcon, %hWnd, 1, hIcon&)

            Else

                Hicon& = @create(hIcon, Baum)
                @TrayIcon(SetIcon, %hWnd, 1, hIcon&)

            EndIf

            Setmenuitem 0

        ElseIf (%MenuItem = 101)

            @Messagebox(Programmiert in XProfan 11,Hinweis,64)
            Setmenuitem 0

        ElseIf (%MenuItem = 103)

            Ende%=1

        ElseIf (%MenuItem = 106)

            Show% = @Not(Show%)
            @Showwindow(%hWnd,Show%)
            Setmenuitem 0

        EndIf

    Endif

Endwhile

@TrayIcon(Delete, %hWnd, 
class=s2>1) End

Ejemplo Ownerdraw :
KompilierenMarcaSeparación
Encabezamiento-Archivos
 $H windows.ph
 $H messages.ph
Estructuras
Struct SIZE = cx&,cy&
Struct RECT = Left&,Top&,Right&,Bottom&
Struct MEASUREITEMSTRUCT  = CtlType&,CtlID&,itemID&,itemWidth&,itemHeight&,itemData&
Struct DRAWITEMSTRUCT = CtlType&,CtlID&,itemID&,itemAction&,itemState&,hwndItem&,hDC&,rcItem!RECT,itemData&
Declarar Ende&,Brush&,MenuPic&,PicWidth&,PicHeight&
Declarar Rect1#,hIcon1&,lpmis#,Size#
Declarar ReadItem#,lpdis#,ItemInfo#
Dim lpmis#,MEASUREITEMSTRUCT
Dim lpdis#,DRAWITEMSTRUCT
Dim Size#,SIZE
Dim Rect1#,RECT
Var i& = Importdll(Msimg32.dll,)
Menu-Ancho de imagen festlegen ( Farbverlauf )
PicWidth& = 20
Declarar MyItem#[5]reicht para 3 Menü-Einträge
El Struktur nimmt el Zeiger para el Texto y el Icon en
Struct Item = Eintrag&,Icon&
Dim MyItem#[],Item
Dim ReadItem#,Item  se benötigt en el Informationen auszulesen
Estructuras füllen
Var Texto$ = Info
Var Texto2$ = Beenden
Var TextSep$ = -
Var Sub$ = Schriftschnitte
Var f$ = fett
Var k$ = kursiv
MyItem#[0].Eintrag& = Addr(Texto$)
MyItem#[1].Eintrag& = Addr(Texto2$)
MyItem#[0].Icon&    = ~LoadIcon(%hInstance,A)
MyItem#[1].Icon&    = ~LoadIcon(%hInstance,Eimer)
MyItem#[2].Eintrag& = Addr(TextSep$)
MyItem#[2].Icon&    = 0
MyItem#[3].Eintrag& = Addr(Sub$)
MyItem#[3].Icon&    = ~LoadIcon(%hInstance,Drucker)
MyItem#[4].Eintrag& = Addr(f$)
MyItem#[4].Icon&    = ~LoadIcon(%hInstance,Eis)
MyItem#[5].Eintrag& = Addr(k$)
MyItem#[5].Icon&    = ~LoadIcon(%hInstance,Gesicht)

Proc Menue

    Ownerdraw-Menü invertir y Mostrar
    CreateMenu
    AppendMenu 101, Info0
    ~ModifyMenu(&hMenu,101,~MF_BYCOMMAND | ~MF_OWNERDRAW,101,MyItem#[0])
    AppendMenu 102, -1
    ~ModifyMenu(&hMenu,102,~MF_BYCOMMAND | ~MF_OWNERDRAW,102,MyItem#[2])
    SubPopUp Schriftschnitte 2  ModifyMenu muss por position y  no por Command determinado voluntad
    Das Zählen fängt en Null a
    ~ModifyMenu(&hMenu,2,~MF_BYPOSITION | ~MF_OWNERDRAW,2,MyItem#[3])
    AppendMenu 214,fett
    AppendMenu 215,kursiv
    ~ModifyMenu(&hMenu,214,~MF_BYCOMMAND | ~MF_OWNERDRAW,214,MyItem#[4])
    ~ModifyMenu(&hMenu,215,~MF_BYCOMMAND | ~MF_OWNERDRAW,215,MyItem#[5])
    EndSub
    AppendMenu 103, Beenden
    ~ModifyMenu(&hMenu,103,~MF_BYCOMMAND | ~MF_OWNERDRAW,103,MyItem#[1])
    Volver @TrackMenu()

ENDPROC

Windowstyle 26 + 512
Título de la ventana Test
Ventana 0,0-640,480
GradientRect(%hdc2,0,0,Width(%hwnd),Height(%hwnd),$FFFFFF,$FFC1C1,0)
Repaint
SubClass %HWnd, 1

Sinestar encargado Ende&

    Waitinput

    If %MousePressed = 2Rechter Mausbutton gedrückt

        Menue()

        If (%MenuItem = 101)

            @Messagebox(Programmiert en XProfan 11,Referencia,64)

        ElseIf (%MenuItem = 103)

            Ende&=1

        EndIf

    Endif

Endwhile

Disponer lpmis#,Size#,lpdis#,Rect1#
End

SubClassProc

    If SubClassMessage(%hWnd,~WM_MEASUREITEM)

        lpmis# = &slParam
        ReadItem# = lpmis#.itemData&
        Texbreite para Item ermitteln, muss übergeben voluntad !!
        ~GetTextExtentPoint32(%hdc,ReadItem#.Eintrag&,Len(String$(ReadItem#.Eintrag&,0)),Size#)
        lpmis#.itemWidth&  = Size#.cx& + PicWidth&

        If String$(ReadItem#.Eintrag&,0) = -Separador behandeln

            lpmis#.itemHeight& = -2

        Endif

        lpmis#.itemHeight& = lpmis#.itemHeight& + 6
        PicHeight& = PicHeight& + lpmis#.itemHeight&
        Conjunto(WinProc, 0)

    ElseIf SubClassMessage(%hWnd,~WM_DRAWITEM)

        lpdis# = &slParam

        If lpdis#.CtlType& = ~ODT_MENU	sólo si Menu

            ReadItem# = lpdis#.itemData&

            If String$(ReadItem#.Eintrag&,0) <> -fass kein Separador

                IF lpdis#.itemState& & ~ODS_SELECTED	si selektiert

                    ~SetTextColor(lpdis#.hDC&,$FFFFFF)
                    ~SetBkColor(lpdis#.hDC&,$FFC1C1)
                    Más si no selektiert
                    ~SetTextColor(lpdis#.hDC&,0)
                    ~SetBkColor(lpdis#.hDC&,$FFFFFF)

                EndIf

            Endif

            Edición

            If String$(ReadItem#.Eintrag&,0) <> -  si kein Separador

                lpdis#.rcItem!Left& = lpdis#.rcItem!Left& + PicWidth&
                ~ExtTextOut(lpdis#.hDC&,lpdis#.rcItem!Left&+10,lpdis#.rcItem!Top&+4,~ETO_OPAQUE,lpdis#.rcItem,ReadItem#.Eintrag&,Len(String$(ReadItem#.Eintrag&,0)) ,0)
                GradientRect(lpdis#.hDC&,0,lpdis#.rcItem!Top&,PicWidth&,lpdis#.rcItem!Bottom&,$FFFFFF,$FFC1C1,0)
                ~DrawIconEx(lpdis#.hDC&,2,lpdis#.rcItem!Top&+4,ReadItem#.Icon&,13,13,0,0,~DI_NORMAL)
                Más si Separador
                GradientRect(lpdis#.hDC&,0,lpdis#.rcItem!Top&,PicWidth&,lpdis#.rcItem!Bottom&,$FFFFFF,$FFC1C1,0)
                ~Rectángulo(lpdis#.hDC&,0,lpdis#.rcItem!Top&+1,lpdis#.rcItem!Right&,lpdis#.rcItem!Bottom&-2)

            Endif

            Conjunto(WinProc, 0)

        Endif

    EndIf

ENDPROC

Proc GradientRect

    Parámetros DC&,x%,y%,w%,h%,Color1&,Color2&,HV&
    Declarar GradRect#,Trivertex#
    Dim GradRect#,8
    Dim Trivertex#,32
    Largo Gradrect#,0 = 0
    Largo Gradrect#,4 = 1
    Largo Trivertex#,0=x%
    Largo Trivertex#,4=y%
    word Trivertex#,8=GETRVALUE(Color1&) << 8
    word Trivertex#,10=GETGVALUE(Color1&) << 8
    word Trivertex#,12=GETBVALUE(Color1&) << 8
    word Trivertex#,14=0
    Largo Trivertex#,16=w%
    Largo Trivertex#,20=h%
    word Trivertex#,24=GETRVALUE(Color2&) << 8
    word Trivertex#,26=GETGVALUE(Color2&) << 8
    word Trivertex#,28=GETBVALUE(Color2&) << 8
    word Trivertex#,30=0
    GradientFill(DC&,Trivertex#,2,Gradrect#,1,HV&)
    Disponer Trivertex#
    Disponer Gradrect#

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 :  [...] 
20.02.2009  
 



 
20.02.2009  
 




Paul
Glatz
Gracias Yo lo con SetMenuItemBitmaps gemacht klappt supper!
 
20.02.2009  
 



@Paul: Vlt. könntest Usted diesmal entsprechendes Codesnippet einsortieren, siehst sí el lo fehlt.
 
20.02.2009  
 




Paul
Glatz
Posesiones grade todavía una Problema.

¿Cómo se puede Yo el SetMenuItemBitmaps-Variante en SubPopUps en SubPopUps anwenden
 
20.02.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

3.554 Views

Untitledvor 0 min.
Jörg Sellmeyer05.06.2020
Manfred Barei29.02.2020
rquindt13.11.2016
Georg Teles07.05.2014
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