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 |
| | | | |
|
AntwortenThemenoptionen | 3.015 Betrachtungen |
ThemeninformationenDieses Thema hat 6 Teilnehmer: |