Français
Forum

Icon chez SubPopUp

 

Paul
Glatz
Salut,

homme peux oui avec qui API SetMenuItemBitmaps une AppendMenu un Icon zuweisen. allez cela aussi avec SubPopUps??
 
20.02.2009  
 



je crois non*! (habe je aussi encore pas gesehen)

*) ausgenommen (naturellement) per Ownerdraw, ici peux Andreas Miethe peut-être aider.
 
20.02.2009  
 




Paul
Glatz
Windows machts aussi!
 
20.02.2009  
 



la hâte la fois nen Ss?
 
20.02.2009  
 




Paul
Glatz
bien sûr!

ss.png  
9 kB
Hochgeladen:20.02.2009
Downloadcounter81
Download
 
20.02.2009  
 



SubPopups, oui - quoi soll je dire - allez.
 
20.02.2009  
 




Paul
Glatz
cela es irgentwie allez sais je aussi seulement comment??
 
20.02.2009  
 




Andreas
Miethe


Paul Glatz
cela es irgentwie allez sais je aussi seulement comment??


cela allez per Ownerdraw.
là un SubPopUp ne...aucune Handle zurückgibt allerdings seulement sur qui Position.

avec SetMenuItemBitmaps() sollte es aussi per Position marcher !
justement getestet, allez.

Beispiel avec SetMenuItemBitmaps ( j'ai pour Rolands Beispiel benutzt )
KompilierenMarqueSéparation
 $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) Fin

Beispiel Ownerdraw :
KompilierenMarqueSéparation
En-tête-Fichiers
 $H windows.ph
 $H messages.ph
Strukturen
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&
Déclarer Ende&,Brush&,MenuPic&,PicWidth&,PicHeight&
Déclarer Rect1#,hIcon1&,lpmis#,Size#
Déclarer ReadItem#,lpdis#,ItemInfo#
Faible lpmis#,MEASUREITEMSTRUCT
Faible lpdis#,DRAWITEMSTRUCT
Faible Size#,SIZE
Faible Rect1#,RECT
Var i& = Importdll(Msimg32.dll,)
Menu-Bildbreite festlegen ( Farbverlauf )
PicWidth& = 20
Déclarer MyItem#[5]reicht pour 3 menu-Einträge
qui Struktur nimmt qui aiguille pour den Text et cela Icon sur
Struct Item = Eintrag&,Icon&
Faible MyItem#[],Item
Faible ReadItem#,Item  wird nécessaire um qui Informationen auszulesen
Strukturen füllen
Var Text$ = Info
Var Text2$ = finissons
Var TextSep$ = -
Var Sous$ = Schriftschnitte
Var f$ = fett
Var k$ = kursiv
MyItem#[0].Eintrag& = Addr(Text$)
MyItem#[1].Eintrag& = Addr(Text2$)
MyItem#[0].Icon&    = ~LoadIcon(%hInstance,A)
MyItem#[1].Icon&    = ~LoadIcon(%hInstance,seau)
MyItem#[2].Eintrag& = Addr(TextSep$)
MyItem#[2].Icon&    = 0
MyItem#[3].Eintrag& = Addr(Sous$)
MyItem#[3].Icon&    = ~LoadIcon(%hInstance,Drucker)
MyItem#[4].Eintrag& = Addr(f$)
MyItem#[4].Icon&    = ~LoadIcon(%hInstance,glace)
MyItem#[5].Eintrag& = Addr(k$)
MyItem#[5].Icon&    = ~LoadIcon(%hInstance,Gesicht)

Proc Menue

    Ownerdraw-menu anlegen et Montrer
    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 per position et  pas per Command bestimmt volonté
    cela Zählen commence chez zéro à
    ~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, finissons
    ~ModifyMenu(&hMenu,103,~MF_BYCOMMAND | ~MF_OWNERDRAW,103,MyItem#[1])
    Retour @TrackMenu()

ENDPROC

Windowstyle 26 + 512
Titre de la fenêtre Test
Fenêtre 0,0-640,480
GradientRect(%hdc2,0,0,Width(%hwnd),Height(%hwnd),$FFFFFF,$FFC1C1,0)
Repaint
SubClass %HWnd, 1

Whilenot Ende&

    Waitinput

    Si %MousePressed = 2Rechter Mausbutton gedrückt

        Menue()

        Si (%MenuItem = 101)

            @Messagebox(Programmiert dans XProfan 11,Hinweis,64)

        ElseIf (%MenuItem = 103)

            Ende&=1

        EndIf

    Endif

Endwhile

Dispose lpmis#,Size#,lpdis#,Rect1#
Fin

SubClassProc

    Si SubClassMessage(%hWnd,~WM_MEASUREITEM)

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

        Si String$(ReadItem#.Eintrag&,0) = -Séparateur behandeln

            lpmis#.itemHeight& = -2

        Endif

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

    ElseIf SubClassMessage(%hWnd,~WM_DRAWITEM)

        lpdis# = &slParam

        Si lpdis#.CtlType& = ~ODT_MENU	seulement si Menu

            ReadItem# = lpdis#.itemData&

            Si String$(ReadItem#.Eintrag&,0) <> -fass ne...aucune Séparateur

                IF lpdis#.itemState& & ~ODS_SELECTED	si selektiert

                    ~SetTextColor(lpdis#.hDC&,$FFFFFF)
                    ~SetBkColor(lpdis#.hDC&,$FFC1C1)
                    D'autre si pas selektiert
                    ~SetTextColor(lpdis#.hDC&,0)
                    ~SetBkColor(lpdis#.hDC&,$FFFFFF)

                EndIf

            Endif

            Ausgabe

            Si String$(ReadItem#.Eintrag&,0) <> -  si ne...aucune Séparateur

                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)
                D'autre si Séparateur
                GradientRect(lpdis#.hDC&,0,lpdis#.rcItem!Top&,PicWidth&,lpdis#.rcItem!Bottom&,$FFFFFF,$FFC1C1,0)
                ~Rectangle(lpdis#.hDC&,0,lpdis#.rcItem!Top&+1,lpdis#.rcItem!Right&,lpdis#.rcItem!Bottom&-2)

            Endif

            Set(WinProc, 0)

        Endif

    EndIf

ENDPROC

Proc GradientRect

    Paramètres DC&,x%,y%,w%,h%,Color1&,Color2&,HV&
    Déclarer GradRect#,Trivertex#
    Faible GradRect#,8
    Faible Trivertex#,32
    Long Gradrect#,0 = 0
    Long Gradrect#,4 = 1
    Long Trivertex#,0=x%
    Long 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
    Long Trivertex#,16=w%
    Long 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&)
    Dispose Trivertex#
    Dispose 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
merci j'ai es avec SetMenuItemBitmaps gemacht klappt supper!
 
20.02.2009  
 



@Paul: Vlt. könntest Du diesmal entsprechendes Codesnippet einsortieren, vois oui cela es fehlt.
 
20.02.2009  
 




Paul
Glatz
Habe grade encore un Problem.

comment peux je qui SetMenuItemBitmaps-variante sur SubPopUps dans SubPopUps anwenden
 
20.02.2009  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

3.561 Views

Untitledvor 0 min.
Jörg Sellmeyer05.06.2020
Manfred Barei29.02.2020
rquindt13.11.2016
Georg Teles07.05.2014
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie