| |
|
|
Uwe ''Pascal'' Niemeier | Hi Roland!
Posesiones gerade festgestellt, daß se SubClassProc no en OwnerDraw-Menüs anwenden läßt, porque selbige por TrackPopupMenu -API aufgerufen voluntad necesario y SubClassProc esta no greift (sólo en WaitInput oder el Profano-Internen TrackMenu )
Vorschlag: Ein SubClassMode oder Ähnliches, en el el Proc permanent aufgerufen se, auch si el Prog no explizit en algo wartet (also analog a Método con ProcAddr ). Möglicherweise no bastante unproblematisch en Anwendung, aber: No Risk, No Fun Wäre para Sonderfälle jedenfalls nützlich.
SeeYou Pascal |
|
|
| |
|
|
|
Andreas Miethe
| Uwe Pascal Niemeier
Hi Roland! Posesiones gerade festgestellt, daß se SubClassProc no en OwnerDraw-Menüs anwenden läßt, porque selbige por TrackPopupMenu -API aufgerufen voluntad necesario y SubClassProc esta no greift (sólo en WaitInput oder el Profano-Internen TrackMenu ) Vorschlag: Ein SubClassMode oder Ähnliches, en el el Proc permanent aufgerufen se, auch si el Prog no explizit en algo wartet (also analog a Método con ProcAddr ). Möglicherweise no bastante unproblematisch en Anwendung, aber: No Risk, No Fun Wäre para Sonderfälle jedenfalls nützlich. SeeYou Pascal
¿Por qué necesario el porque por TrackPopupMenu aufgerufen voluntad ? Das kapier Yo irgendwie no. Yo nehme a, Usted beziehst Usted hier en Trackmenüs ? Oder auch Fenstermenüs ? |
|
|
| 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 : [...] | 14.02.2009 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | Hi Andreas!
¿Por qué necesario el porque por TrackPopupMenu aufgerufen voluntad ? Yo nehme a, Usted beziehst Usted hier en Trackmenüs ?
Yepp! Und el necesario sí por API creado voluntad, en ellos a manipulieren (OwnerDraw conjunto), porque el profane CreateMenu kein Handle zurückgibt. Umgekehrt bezieht se Profans TrackMenu sólo en Menüs, el eben por Profano producido fueron. Oder gibts dafür ya ne Systemvariable?
Lo sei porque...(Bin Yo eben sólo en él gekommen ) Wenn uno kein TrackMenü anlegt y trotzdem intenta, uno aufzurufen, erscheint stattdessen el letzte Popup-Menü la ventana, a el uno sí por &hMenu drankommt.
Abgesehen su kann lo en efecto Fälle geben, en denen uno SubClassing generell nutzen voluntad, während el Programa gerade con algo beschäftigt es (auch si el Timing como tal vez algo haarig voluntad podría)
SeeYou Pascal |
|
|
| |
|
|
|
Andreas Miethe
| Uwe Pascal Niemeier
Hi Andreas!
Yepp! Und el necesario sí por API creado voluntad, en ellos a manipulieren (OwnerDraw conjunto), porque el profane CreateMenu kein Handle zurückgibt. Umgekehrt bezieht se Profans TrackMenu sólo en Menüs, el eben por Profano producido fueron. Oder gibts dafür ya ne Systemvariable?
Das Ejemplo zeigt, dass lo auch anders va. Ist en el Schnelle zusammenkopiert, also todavía no bastante ausgereift. KompilierenMarcaSeparaciónHeader-Dateien
$H windows.ph
$H messages.ph
Declare Ende&
Declare Rect1#,hIcon1&,lpmis#,Size#
Dim Rect1#,16
Dim lpmis#,24
Dim Size#,8
Declare MyItem#[3]reicht für 4 Einträge
Struct Item = Eintrag&,Icon&
Dim MyItem#[],Item
Var Text$ = Info
Var Text2$ = Beenden
MyItem#[0].Eintrag& = Addr(Text$)
MyItem#[1].Eintrag& = Addr(Text2$)
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])
Return @TrackMenu()
EndProc
Windowstyle 26 + 512
WindowTitle Test
Window 0,0-640,480
SubClass %HWnd, 1
Whilenot Ende&
Waitinput
If %MousePressed = 2Rechter Mausbutton gedrückt
Menue()
If (%MenuItem = 101)
@Messagebox(Programmiert in XProfan 11,Hinweis,64)
ElseIf (%MenuItem = 103)
Ende&=1
EndIf
Endif
Endwhile
Dispose Rect1#,lpmis#,Size#
End
SubClassProc
If SubClassMessage(%hWnd,~WM_MEASUREITEM)
lpmis# = &slParam
~GetTextExtentPoint32(%hdc,Long(Long(&slParam,20),0),Len(String$(Long(Long(&slParam,20),0),0)),Size#)
Long lpmis#,12 = Long(Size#,0)
Set(WinProc, 0)
ElseIf SubClassMessage(%hWnd,~WM_DRAWITEM)
IF Long(&slParam,16) & 1wenn selektiert
~SetTextColor(Long(&slParam,24),$FFFFFF)
~SetBkColor(Long(&slParam,24),$8000)
Else
~SetTextColor(Long(&slParam,24),0)
~SetBkColor(Long(&slParam,24),$FCFDC8)
EndIf
Rechteck für die Ausgabe ermitteln
Long Rect1#,0 = Long(&slParam,28)X
Long Rect1#,4 = Long(&slParam,32)Y
Long Rect1#,8 = Long(&slParam,36)Breite
Long Rect1#,12 =Long(&slParam,40)Höhe
Ausgabe
~ExtTextOut(Long(&slParam,24),Long(&slParam,28)+20,Long(&slParam,32),~ETO_OPAQUE,Rect1#,Long(Long(&slParam,44),0),Len(String$(Long(Long(&slParam,44),0),0)) ,0)
~DrawIconEx(Long(&slParam,24),0,Long(&slParam,32),Long(Long(&slParam,44),4),13,13,0,0,~DI_NORMAL)
Set(WinProc, 0)
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 : [...] | 14.02.2009 ▲ |
|
|
|
|
| Das funktioniert super en me! |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | *sichvordenkopfschlag*
Yo sag sí: Yo y el Systemvariablen... (irgendwie denke Yo siempre, el Biester wären konstant )
Trotzdem lasse Yo media Vorschlag veces así posición
@ Andreas: Leite deinen Code doch veces a HoHo más!
SeeYou Pascal |
|
|
| |
|
|
|
RGH | ¡Hola, zwischen CreateMenu y TrackMenu() ha &Menu el Handle des PopUp-Menüs!
Saludo Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 14.02.2009 ▲ |
|
|
|