Deutsch
Wünsche und Anregungen

Wunsch: SubClassMode erweitern

 

Uwe
''Pascal''
Niemeier
Hi Roland!

Habe gerade festgestellt, daß sich SubClassProc  nicht auf OwnerDraw-Menüs anwenden läßt, weil selbige per TrackPopupMenu -API aufgerufen werden müssen und SubClassProc  dabei nicht greift (nur bei WaitInput  oder dem Profan-Internen TrackMenu )

Vorschlag: Ein SubClassMode oder Ähnliches, bei dem die Proc permanent aufgerufen wird, auch wenn das Prog nicht explizit auf irgendwas wartet (also analog zur Methode mit ProcAddr ).
Möglicherweise nicht ganz unproblematisch bei der Anwendung, aber: No Risk, No Fun
Wäre für Sonderfälle jedenfalls nützlich.

SeeYou
Pascal
 
14.02.2009  
 




Andreas
Miethe


Uwe Pascal Niemeier
Hi Roland!

Habe gerade festgestellt, daß sich SubClassProc  nicht auf OwnerDraw-Menüs anwenden läßt, weil selbige per TrackPopupMenu -API aufgerufen werden müssen und SubClassProc  dabei nicht greift (nur bei WaitInput  oder dem Profan-Internen TrackMenu )

Vorschlag: Ein SubClassMode oder Ähnliches, bei dem die Proc permanent aufgerufen wird, auch wenn das Prog nicht explizit auf irgendwas wartet (also analog zur Methode mit ProcAddr ).
Möglicherweise nicht ganz unproblematisch bei der Anwendung, aber: No Risk, No Fun
Wäre für Sonderfälle jedenfalls nützlich.

SeeYou
Pascal


Warum müssen die denn per TrackPopupMenu aufgerufen werden ?
Das kapier ich irgendwie nicht.
Ich nehme an, Du beziehst Dich hier auf 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!


Warum müssen die denn per TrackPopupMenu aufgerufen werden ?
Ich nehme an, Du beziehst Dich hier auf Trackmenüs ?


Yepp! Und die müssen ja per API angelegt werden, um sie zu manipulieren (OwnerDraw setzen), weil das profane CreateMenu  kein Handle zurückgibt. Umgekehrt bezieht sich Profans TrackMenu  nur auf Menüs, die eben per Profan erzeugt wurden. Oder gibts dafür schon ne Systemvariable?

Es sei denn...(Bin ich eben erst drauf gekommen )
Wenn man kein TrackMenü anlegt und trotzdem versucht, eines aufzurufen, erscheint stattdessen das letzte Popup-Menü des Fensters, an das man ja per &hMenu  drankommt.

Abgesehen davon kann es ja auch Fälle geben, in denen man SubClassing generell nutzen will, während das Programm gerade mit irgendwas beschäftigt ist (auch wenn das Timing da vielleicht etwas haarig werden könnte)

SeeYou
Pascal
 
14.02.2009  
 




Andreas
Miethe


Uwe Pascal Niemeier
Hi Andreas!

Yepp! Und die müssen ja per API angelegt werden, um sie zu manipulieren (OwnerDraw setzen), weil das profane CreateMenu  kein Handle zurückgibt. Umgekehrt bezieht sich Profans TrackMenu  nur auf Menüs, die eben per Profan erzeugt wurden. Oder gibts dafür schon ne Systemvariable?



Das Beispiel zeigt, dass es auch anders geht.
Ist auf die Schnelle zusammenkopiert, also noch nicht ganz ausgereift.
KompilierenMarkierenSeparieren
Header-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 bei mir!
 
14.02.2009  
 



 
14.02.2009  
 




Uwe
''Pascal''
Niemeier
*sichvordenkopfschlag*

Ich sag ja: Ich und die Systemvariablen... (irgendwie denke ich immer, die Biester wären konstant )

Trotzdem lasse ich meinen Vorschlag mal so stehen

@ Andreas: Leite deinen Code doch mal an HoHo weiter!

SeeYou
Pascal
 
14.02.2009  
 




RGH
Hallo,
zwischen CreateMenu und TrackMenu() hat &Menu das Handle des PopUp-Menüs!

Gruß
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  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.486 Betrachtungen

Unbenanntvor 0 min.
Jörg Sellmeyer16.05.2018
Ernst30.04.2014
iF09.09.2012
Uwe ''Pascal'' Niemeier05.04.2012

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


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