| |
|
|
| TrackMenu SubClass OwnerDraw [...]
Andreas Miethe
Ist en el Schnelle zusammenkopiert, also todavía no bastante ausgereift. 'Encabezamiento-Archivos
$H windows.ph
$H messages.ph
Declarar Ende&
Declarar Rect1#,hIcon1&,lpmis#,Size#
Dim Rect1#,16
Dim lpmis#,24
Dim Size#,8
Declarar MyItem#[3]'reicht para 4 Einträge
Struct Item = Eintrag&,Icon&
Dim MyItem#[],Item
Var Texto$ = "Info"
Var Texto2$ = "Beenden"
MyItem#[0].Eintrag& = Addr(Texto$)
MyItem#[1].Eintrag& = Addr(Texto2$)
MyItem#[0].Icon& = ~LoadIcon(%hInstance,"A")
MyItem#[1].Icon& = ~LoadIcon(%hInstance,"Eimer")
Proc Menue
CreateMenu
AppendMenu 101, "Info"
~ModifyMenu(&hMenu,101,~MF_BYCOMMAND | ~MF_OWNERDRAW,101,MyItem#[0])
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
SubClass %HWnd, 1
Sinestar encargado Ende&
Waitinput
If %MousePressed = 2'Rechter Mausbutton gedrückt
Menue()
If (%MenuItem = 101)
@Messagebox("Programmiert en XProfan 11","Hinweis",64)
ElseIf (%MenuItem = 103)
Ende&=1
EndIf
Endif
Endwhile
Disponer Rect1#,lpmis#,Size#
End
SubClassProc
If SubClassMessage(%hWnd,~WM_MEASUREITEM)
lpmis# = &slParam
~GetTextExtentPoint32(%hdc,Largo(Largo(&slParam,20),0),Len(String$(Largo(Largo(&slParam,20),0),0)),Size#)
Largo lpmis#,12 = Largo(Size#,0)
Conjunto("WinProc", 0)
ElseIf SubClassMessage(%hWnd,~WM_DRAWITEM)
IF Largo(&slParam,16) & 1'si selektiert
~SetTextColor(Largo(&slParam,24),$FFFFFF)
~SetBkColor(Largo(&slParam,24),$8000)
Más
~SetTextColor(Largo(&slParam,24),0)
~SetBkColor(Largo(&slParam,24),$FCFDC8)
EndIf
'Rechteck para el Edición ermitteln
Largo Rect1#,0 = Largo(&slParam,28)'X
Largo Rect1#,4 = Largo(&slParam,32)'Y
Largo Rect1#,8 = Largo(&slParam,36)'Breite
Largo Rect1#,12 =Largo(&slParam,40)'Höhe
'Edición
~ExtTextOut(Largo(&slParam,24),Largo(&slParam,28)+20,Largo(&slParam,32),~ETO_OPAQUE,Rect1#,Largo(Largo(&slParam,44),0),Len(String$(Largo(Largo(&slParam,44),0),0)) ,0)
~DrawIconEx(Largo(&slParam,24),0,Largo(&slParam,32),Largo(Largo(&slParam,44),4),13,13,0,0,~DI_NORMAL)
Conjunto("WinProc", 0)
EndIf
ENDPROC
|
|
|
| |
|
|