Italia
Fonte/ Codesnippets

Icon Menu Menuitem Ownerdraw Popupmenu

 
OwnerDraw PopupMenu ganz einfach:

Herunterladen
KompilierenMarkierenSeparieren
 {$cleq}
cls
popup "Hallo"
appendMenu 100,"Welt"
appendMenu 200,"Welt"
appendMenu 300,"Welt"
appendMenu 400,"Welt"
appendMenu 500,"Welt"
Var hIcon1& = @create("hIcon", "Icon_Test.dll", 0)
Var hIcon2& = @create("hIcon", "Icon_Test.dll", 1)
Var hIcon3& = @create("hIcon", "Icon_Test.dll", 2)
setWindowLong(hWnd,gwl_userData,setWindowLong(hWnd,gwl_wndProc,procaddr(hWnd.wndProc,4)))
modifyMenu(&hMenu,200,MF_BYCOMMAND | MF_OWNERDRAW,200,hIcon1&)
modifyMenu(&hMenu,300,MF_BYCOMMAND | MF_OWNERDRAW,300,hIcon2&)
modifyMenu(&hMenu,400,MF_BYCOMMAND | MF_OWNERDRAW,300,hIcon3&)

while 1

    waitinput

wend

end

nProc hWnd.wndProc

    Parameters wnd&,msg&,wp&,lp&

    if msg&==WM_MEASUREITEM

        return 1

    elseif msg&==WM_DRAWITEM

        if long(lp&,0)==ODT_MENU

            var dc&=long(lp&,24)
            setTextColor(dc&,iff(long(lp&,16)==257,$FF0000,$0000FF))
            SetBkMode(dc&,TRANSPARENT)
            selectObject(dc&,createPen(PS_SOLID,0,iff(long(lp&,16)==257,$777777,$CCCCCC)))
            selectObject(dc&,CreateSolidBrush(iff(long(lp&,16)==257,$AAAAAA,$DDDDDD)))
            Rectangle(dc&,Long(lp&,28),Long(lp&,32),Long(lp&,36),Long(lp&,40))
            drawText(dc&,GetSystemMetrics(71)+4,Long(lp&,32),"Test")
            drawIconEx(dc&,Long(lp&,28),Long(lp&,32),long(lp&,44),16,16,0,0,3)

        endif

        return 1

    endif

    return callWindowProc(getWindowLong(wnd&,gwl_userData),wnd&,msg&,wp&,lp&)

endproc




Entstanden aus: Bitmaps im Menü: [...] 
 
11.10.2010  
 



Nochmal besser & chicker:
KompilierenMarkierenSeparieren
 {$cleq}
cls
popup "Hallo"
appendODMenuItem(100,"Hallo",0)
appendODMenuItem(200,"Welt",create("hIcon", "A"))
appendODMenuItem(300,"Hallo",create("hIcon", "PROFAN"))
appendODMenuItem(400,"Welt",create("hIcon", "BAUM"))
appendODMenuItem(500,"Hallo",create("hIcon", "WASSER"))
appendODMenuItem(600,"Welt",create("hIcon", "A"))
appendODMenuItem(700,"Hallo",0)
setWindowLong(hWnd,gwl_userData,setWindowLong(hWnd,gwl_wndProc,procaddr(hWnd.wndProc,4)))

while 1

    waitinput

wend

end

nProc hWnd.wndProc

    Parameters wnd&,msg&,wp&,lp&

    if msg&==WM_MEASUREITEM

        long lp&,12=100,GetSystemMetrics(SM_CYMENUSIZE)+3
        return 1

    elseif msg&==WM_DRAWITEM

        if long(lp&,0)==ODT_MENU

            var itm&=long(lp&,20)
            var dc&=long(lp&,24)
            SetBkMode(dc&,TRANSPARENT)

            if long(lp&,16)==257

                selectObject(dc&,createPen(PS_SOLID,0,$555555))
                selectObject(dc&,CreateSolidBrush($FF9933))
                setTextColor(dc&,$FFFFFF)

            elseif long(lp&,16)==256

                selectObject(dc&,createPen(PS_SOLID,0,getSysColor(COLOR_MENU)))
                selectObject(dc&,CreateSolidBrush(getSysColor(COLOR_MENU)))
                setTextColor(dc&,0)

            endif

            var txt&=dim(101)
            getMenuString(getMenu(hWnd),long(lp&,8),txt&,100,0)
            Rectangle(dc&,Long(lp&,28),Long(lp&,32),Long(lp&,36),Long(lp&,40))
            drawText(dc&,GetSystemMetrics(71)+8,Long(lp&,32)+3,string$(txt&,0))
            drawIconEx(dc&,Long(lp&,28)+2,Long(lp&,32)+3,long(lp&,44),16,16,0,0,3)
            dispose(txt&)

        endif

        return 1

    endif

    return callWindowProc(getWindowLong(wnd&,gwl_userData),wnd&,msg&,wp&,lp&)

endproc

proc appendODMenuItem

    parameters itm&,txt$,icn&
    appendMenu itm&,txt$
    modifyMenu(&hMenu,itm&,MF_BYCOMMAND | MF_OWNERDRAW,itm&,icn&)

<
s=s4 href='./../../funktionsreferenzen/xprofan/endproc/'>endproc


8 kB
Hochgeladen:11.10.2010
Downloadcounter214
Herunterladen
 
11.10.2010  
 




E.T.

XProfan 11.2.1.8a.63 Praekompiler [XPSE]
Copyright (C) 1998-2010 XProfan.Com, built DE.

File: c:dokumente und einstellungen....prf (38)
Objektcode: POLINK: warning: Unrecognized keyword '_MIT_ICON_A
US_DLL' in module-definition file 'C:DOKUME~1MARIODESKTOPM
ENMIT~1.EXT'; ignored.
Creating object: MEN.EXP
Creating library: MEN.LIB

Warnung: Fehler im Assembler Linker

[C ]ompile [I ]nterpr [L ]ink [R ]unPrc Run[E ]xe [S ]ource [H ]ilfe

XPSE:>
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
12.10.2010  
 



Ich tippe mal das Pfad und/ oder Dateiname, den Du per die XPrf vergeben hast, Umlaute und/ oder Freizeichen enthält - damit kann der externe Linker nicht umgehen.

In folgenden Versionen von XPSE versuche ich Pfad und Dateiname per den Linker "egal" sein zu lassen.

Mein Tip: C:\dev\englishNamedProjectName\englishNamedSourceFileName.xprf
 
12.10.2010  
 




E.T.
Na dann warens wohl die Leerzeichen, welche mir hier ein "Lehrzeichen" gesetzt haben.
Aber wieder was gelernt...
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
12.10.2010  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

7.217 Views

Untitledvor 0 min.
Normann Strübli31.03.2020
Manfred Barei29.02.2020
Jörg Sellmeyer02.07.2018
Georg Teles10.03.2018
Di più...

Themeninformationen

Dieses Thema hat 2 subscriber:

iF (3x)
E.T. (2x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie