| Forum |  |  |  |  |  |  |  |  Detlef
 Jagolski
 | 
 |  |  |  |  | | XProfan X4,  PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 02.06.2008  ▲ | 
 |  |  |  | 
 
 
 |  |  |  |  |  |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Detlef
 Jagolski
 | | Hallo If, 
 die Prozeduren ConTextMenu, MeasureItem  und DrawItem sind bei beiden gleich.
 
 Nochwas, wenn ich das hwnd Menu Subclasse Funktioniert auch ohne Probleme.
 
 Wie gesagt Code 1 Funktioniert ohne Probleme
  Der andere nicht
  KompilierenMarkierenSeparieren
  $P+
Set(ErrorLevel,0)
Set(FastMode,1)
*** GlobalStatements der Form
 $H C:PROGRAMMEXPROFAN10INCLUDEWINDOWS.PH
 $H C:PROGRAMMEXPROFAN10INCLUDEMESSAGES.PH
 $H C:PROGRAMMEXPROFAN10INCLUDESHELLAPI.PH
 $H C:PROGRAMMEXPROFAN10INCLUDESTRUCTS.PH
 $H C:PROGRAMMEXPROFAN10INCLUDECOMMCTRL.PH
 $H C:PROGRAMMEXPROFAN10INCLUDEWIND.PH
 $I C:PROGRAMMEPRFELLOWLIBXPMENU.INC
Def EnableMenuItem(3) !USER32,EnableMenuItem
var hOldFont& = Create(FONT,Arial,14,0,0,0,0)
Proc EditProc
    Parameters Edit&, Message&, wParam&, lParam&
    Select Message&
        CaseOf ~WM_CONTEXTMENU
        ConTextMenu LoWord(lParam&), HiWord(lParam&)
        CaseOf ~WM_MEASUREITEM
        MeasureItem Edit&, lParam&
        CaseOf ~WM_DRAWITEM
        DrawItem lParam&
    EndSelect
    Return ~CallWindowProc(OldEdit&Proc&, Edit&&, Message&, wParam&, lParam&)
EndProc
Declare appexit%
Declare Edit&
Set(TrueColor,1)
WindowStyle $003F
WindowTitle DesignForm
Window %maxX + 5,114 - 498,415
Cls ~GetSysColor(15)
UseFont MS Sans Serif,13,0,0,0,0
CreateImageList ICONXP32.DLL
SetMenuBitmap SP32.DLL, FSSP
SetCheckedImage 116
SetMenuStandardColors
var Rueckgaengig$    = Rückgängig
var Ausschneiden$    = Ausschneiden
var Kopieren$        = Kopieren
var Einfuegen$       = Einfügen
var Loeschen$        = Löschen
var AllesMarkieren$  = Alles markieren
var hConTextMenu& = ~CreatePopupMenu()
~AppendMenu(hConTextMenu&, ~MF_STRING,1000,Addr(Rueckgaengig$))
~AppendMenu(hConTextMenu&, ~MF_SEPARATOR,101,0)
~AppendMenu(hConTextMenu&, ~MF_STRING,1002,Addr(Ausschneiden$))
~AppendMenu(hConTextMenu&, ~MF_STRING,1003,Addr(Kopieren$))
~AppendMenu(hConTextMenu&, ~MF_STRING,1004,Addr(Einfuegen$))
~AppendMenu(hConTextMenu&, ~MF_STRING,1005,Addr(Loeschen$))
~AppendMenu(hConTextMenu&, ~MF_SEPARATOR,106,0)
~AppendMenu(hConTextMenu&, ~MF_STRING,1007,Addr(AllesMarkieren$))
ChangeMenuItem hConTextMenu&,0,3,hOldFont&
ChangeMenuItem hConTextMenu&,1,-1,-1
ChangeMenuItem hConTextMenu&,2,0,hOldFont&
ChangeMenuItem hConTextMenu&,3,1,hOldFont&
ChangeMenuItem hConTextMenu&,4,2,hOldFont&
ChangeMenuItem hConTextMenu&,5,5,hOldFont&
ChangeMenuItem hConTextMenu&,6,-1,-1
ChangeMenuItem hConTextMenu&,7,-1,hOldFont&
Edit&=CreateEdit(%hwnd,,125,90,121,21)
OldEdit&Proc& = ~SetWindowLong(Edit&,~GWL_WNDPROC,ProcAddr(EditProc,4))
SetWindowPos %hwnd = 207,114 - 498,415;0
WhileNot appexit%
    WaitInput
    If %key = 2
        appexit%=1
    ElseIf GetFocus(Edit1&)
    ElseIf %key = 4
        Fenstergröße
    ElseIf %key = 5
        Hilfe
    EndIf
Wend
KompilierenMarkierenSeparieren
  $P+
Set(ErrorLevel,0)
*** GlobalStatements der Form
 $H C:PROGRAMMEXPROFAN10INCLUDEWINDOWS.PH
 $H C:PROGRAMMEXPROFAN10INCLUDEMESSAGES.PH
 $H C:PROGRAMMEXPROFAN10INCLUDESHELLAPI.PH
 $H C:PROGRAMMEXPROFAN10INCLUDESTRUCTS.PH
 $H C:PROGRAMMEXPROFAN10INCLUDECOMMCTRL.PH
 $H C:PROGRAMMEXPROFAN10INCLUDEWIND.PH
 $I C:PROGRAMMEPRFELLOWLIBXPMENU.INC
Def EnableMenuItem(3) !USER32,EnableMenuItem
var hOldFont& = Create(FONT,Arial,14,0,0,0,0)
SubClassProc
    If SubClassMessage(Edit&, ~WM_CONTEXTMENU)
        ConTextMenu LoWord(&sLParam), HiWord(&sLParam)
    ElseIf SubClassMessage(Edit&, ~WM_MEASUREITEM)
        MeasureItem Edit&, &sLParam
    ElseIf SubClassMessage(Edit&, ~WM_DRAWITEM)
        DrawItem &sLParam
    EndIf
EndProc
Declare appexit%
Declare Edit&
Set(TrueColor,1)
WindowStyle $003F
WindowTitle DesignForm
Window %maxX + 5,114 - 498,415
Cls ~GetSysColor(15)
UseFont MS Sans Serif,13,0,0,0,0
CreateImageList ICONXP32.DLL
SetMenuBitmap SP32.DLL, FSSP
SetCheckedImage 116
SetMenuStandardColors
var Rueckgaengig$    = Rückgängig
var Ausschneiden$    = Ausschneiden
var Kopieren$        = Kopieren
var Einfuegen$       = Einfügen
var Loeschen$        = Löschen
var AllesMarkieren$  = Alles markieren
var hConTextMenu& = ~CreatePopupMenu()
~AppendMenu(hConTextMenu&, ~MF_STRING,1000,Addr(Rueckgaengig$))
~AppendMenu(hConTextMenu&, ~MF_SEPARATOR,101,0)
~AppendMenu(hConTextMenu&, ~MF_STRING,1002,Addr(Ausschneiden$))
~AppendMenu(hConTextMenu&, ~MF_STRING,1003,Addr(Kopieren$))
~AppendMenu(hConTextMenu&, ~MF_STRING,1004,Addr(Einfuegen$))
~AppendMenu(hConTextMenu&, ~MF_STRING,1005,Addr(Loeschen$))
~AppendMenu(hConTextMenu&, ~MF_SEPARATOR,106,0)
~AppendMenu(hConTextMenu&, ~MF_STRING,1007,Addr(AllesMarkieren$))
ChangeMenuItem hConTextMenu&,0,3,hOldFont&
ChangeMenuItem hConTextMenu&,1,-1,-1
ChangeMenuItem hConTextMenu&,2,0,hOldFont&
ChangeMenuItem hConTextMenu&,3,1,hOldFont&
ChangeMenuItem hConTextMenu&,4,2,hOldFont&
ChangeMenuItem hConTextMenu&,5,5,hOldFont&
ChangeMenuItem hConTextMenu&,6,-1,-1
ChangeMenuItem hConTextMenu&,7,-1,hOldFont&
Edit&=CreateEdit(%hwnd,,125,90,121,21)
SubClass Edit&, 1
SetWindowPos %hwnd = 207,114 - 498,415;0
WhileNot appexit%
    WaitInput
    If %key = 2
        appexit%=1
    ElseIf GetFocus(Edit1&)
    ElseIf %key = 4
        Fenstergröße
    ElseIf %key = 5
        Hilfe
    EndIf
Wend
SubClass Edit&, 0
Gruß
 
 Detlef
 | 
 |  |  |  |  | | XProfan X4,  PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 02.06.2008  ▲ | 
 |  |  |  | 
 
 
 |  |  |  |  RGH
 | | Hallo, so lange Du nicht z.B. auch die XPMENU.INC und andere Dateien, die nicht zum Lieferumfang von XProfan 10 gehören, hier mitlieferst, wird niemand Deinen Code testen und auf Fehlersuche gehen können. Mit unvollständigen Beispielcodes kann niemand etwas anfangen.
 
 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 | 02.06.2008  ▲ | 
 |  |  |  | 
 
 
 |  |  |  |  Detlef
 Jagolski
 | | Danke an alle! Klappt jetzt SUPER 
 Besondern Dank an RGH und  Andreas Miethe
 
 Gruß
 
 Detlef
 | 
 
 |  |  |  |  | | XProfan X4,  PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 11.06.2008  ▲ | 
 |  |  |  | 
 
 
 |  |  |  |  Jörg
 Sellmeyer
 | | Sieht sehr professionell und so gar nicht profan aus!  | 
 |  |  |  |  | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ...  | 11.06.2008  ▲ | 
 |  |  |  | 
 
 
 |  |  |  |  Detlef
 Jagolski
 |  |  |  |  |  | | XProfan X4,  PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 12.06.2008  ▲ | 
 |  |  |  | 
 
 
 |  |  |  |  | | Mach dafür ein neues Thema auf. | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Jac
 de
 Lad
 | | Und mit welchem Code funktioniert das jetzt?? | 
 |  |  |  |  | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
 | 08.07.2008  ▲ | 
 |  |  |  | 
 
 
 |  |  |  |  Detlef
 Jagolski
 | | Hallo Jac, 
 das hat RGH noch geändert:
 
 Neu in Subscriptionsversion RC7:
 ================================
 ACHTUNG: ÄNDERUNGEN BEIM SUBCLASSING - Nach eingehenden Tests wurden einige
 kleinere Änderungen notwendig:
 
 - Die Funktion @SubClassMessage() verändert den Status, ob die ursprüngliche
 Windowsprozedur aufgerufen wird oder nicht, nicht mehr! Soll sie nicht aufgerufen
 werden, ist immer ganz bewußt Set(WinProc, 0) einzufügen.
 Defaultmäßig wird, wenn nichts anderes angegeben wird, die ursprüngliche
 Windowsprozedur im Anschluß an SubClassProc aufgerufen (wie bisher)
 - Bislang sorgt eine interne Abfrage dafür, dass eine Message, die während der
 SubClassProc aufgerufen wird, nicht erneut die SubClassProc aufruft, da dies in
 seltenen Fällen zu Problemen führen kann. In diesem Fall wird die Message natürlich
 nicht verschluckt, sondern an die ursprüngliche Windowsprozedur weitergeleitet.
 Diese Abfrage kann nun mit @Set(SubClassMode, 1) übergangen werden.
 Der abgesicherte Modus kann mit @Set(SubClassMode, 0) eingestellt werden.
 - TrackMenu und @TrackMenu() gelten im Sinne des SubClassings auch als WaitInput.
 
 Gruß
 
 Detlef
 | 
 |  |  |  |  | | XProfan X4,  PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 08.07.2008  ▲ | 
 |  |  |  | 
 
 
 |  |  |  |  Jac
 de
 Lad
 | | Ah verstehe, der oben genannte Source müsste jetzt also gehen.  | 
 |  |  |  |  | | Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE)Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP
 | 08.07.2008  ▲ | 
 |  |  |  | 
 
 
 |  |  |  |  Sato
 Pinto
 | | Hallo Detlef 
 Kann man die  XPMENU.INC irgendwo laden? Ist mit diese INC auch die Tortengraphic machbar wie es in deinen Programm Plan-Calc steht?
 
 Gruss
 
 Sato
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 | 
 
 Antworten| Themenoptionen | 3.755 Betrachtungen | 
 ThemeninformationenDieses Thema hat 6 Teilnehmer: |