| |
|
|
Uwe ''Pascal'' Niemeier | Hi Roland!
Habe justement festgestellt, qui sich SubClassProc pas sur OwnerDraw-Menüs anwenden läßt, weil selbige per TrackPopupMenu -API aufgerufen volonté doit et SubClassProc dabei pas greift (seulement chez WaitInput ou bien dem Profan-Internen TrackMenu )
Vorschlag: un SubClassMode ou bien Ähnliches, chez dem qui Proc permanent aufgerufen wird, aussi si cela Prog pas explizit sur irgendwas wartet (alors analog zur Methode avec ProcAddr ). Möglicherweise pas entier unproblematisch chez qui Anwendung, mais: No Risk, No Fun Wäre pour Sonderfälle jedenfalls nützlich.
SeeYou Pascal |
|
|
| |
|
|
|
Andreas Miethe
| Uwe Pascal Niemeier
Hi Roland! Habe justement festgestellt, qui sich SubClassProc pas sur OwnerDraw-Menüs anwenden läßt, weil selbige per TrackPopupMenu -API aufgerufen volonté doit et SubClassProc dabei pas greift (seulement chez WaitInput ou bien dem Profan-Internen TrackMenu ) Vorschlag: un SubClassMode ou bien Ähnliches, chez dem qui Proc permanent aufgerufen wird, aussi si cela Prog pas explizit sur irgendwas wartet (alors analog zur Methode avec ProcAddr ). Möglicherweise pas entier unproblematisch chez qui Anwendung, mais: No Risk, No Fun Wäre pour Sonderfälle jedenfalls nützlich. SeeYou Pascal
pourquoi doit qui car per TrackPopupMenu aufgerufen volonté ? cela kapier je irgendwie pas. je prends à, Du beziehst toi ici sur Trackmenüs ? ou bien aussi 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!
pourquoi doit qui car per TrackPopupMenu aufgerufen volonté ? je prends à, Du beziehst toi ici sur Trackmenüs ?
Yepp! et qui doit oui per API angelegt volonté, um vous trop manipuler (OwnerDraw mettons), weil cela profane CreateMenu ne...aucune Handle zurückgibt. renversé bezieht sich Profans TrackMenu seulement sur Menüs, qui plan per Profan erzeugt wurden. ou bien gibts pour déjà ne Systemvariable?
Es sei car...(suis je tantôt sur elle gekommen ) si on ne...aucune TrackMenü anlegt et quand même versucht, eines aufzurufen, erscheint stattdessen cela dernier Popup-menu des Fensters, à cela on oui per &hMenu drankommt.
Abgesehen en peux es oui aussi Fälle donner, dans denen on SubClassing generell nutzen veux, au cours de cela Programme justement avec irgendwas beschäftigt ist (aussi si cela Timing là peut-être quelque chose haarig volonté pourrait)
SeeYou Pascal |
|
|
| |
|
|
|
Andreas Miethe
| Uwe Pascal Niemeier
Hi Andreas!
Yepp! et qui doit oui per API angelegt volonté, um vous trop manipuler (OwnerDraw mettons), weil cela profane CreateMenu ne...aucune Handle zurückgibt. renversé bezieht sich Profans TrackMenu seulement sur Menüs, qui plan per Profan erzeugt wurden. ou bien gibts pour déjà ne Systemvariable?
cela Beispiel zeigt, dass es aussi anders allez. Ist sur qui Schnelle zusammenkopiert, alors encore pas entier ausgereift. KompilierenMarqueSéparationHeader-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 ▲ |
|
|
|
|
| cela funktioniert super chez mir! |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | *sichvordenkopfschlag*
je sag oui: je et qui Système... (irgendwie denke je toujours, qui Biester wären konstant )
quand même lasse je meinen Vorschlag la fois so stehen
@ Andreas: Leite deinen Code doch la fois à HoHo plus!
SeeYou Pascal |
|
|
| |
|
|
|
RGH | Salut, entre CreateMenu et TrackMenu() hat &Menu cela Handle des PopUp-Menüs!
Salut 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 ▲ |
|
|
|