Forum | | | | Detlef Jagolski | Hallo,
habe ein kleines Problem.
Warum steigt das Programm aus? KompilierenMarkierenSeparieren $P+
SetErrorLevel 0
WINDOWS.PH
MESSAGES.PH
Declare OldEditProc1&
Declare OldEditProc2&
Declare OldEditProc3&
Declare OldEditProc4&
Declare OldEditProc5&
Declare OldEditProc6&
Proc EditProc1
Parameters Edit&, Message&, wParam&, lParam&
If Message& = ~WM_CHAR
Message& = 0
EndIf
Return ~CallWindowProc(OldEditProc1&, Edit&, Message&, wParam&, lParam&)
EndProc
Proc EditProc2
Parameters Edit&, Message&, wParam&, lParam&
If Message& = ~WM_CHAR
Message& = 0
EndIf
Return ~CallWindowProc(OldEditProc2&, Edit&, Message&, wParam&, lParam&)
EndProc
Proc EditProc3
Parameters Edit&, Message&, wParam&, lParam&
If Message& = ~WM_CHAR
Message& = 0
EndIf
Return ~CallWindowProc(OldEditProc3&, Edit&, Message&, wParam&, lParam&)
EndProc
Proc EditProc4
Parameters Edit&, Message&, wParam&, lParam&
If Message& = ~WM_CHAR
Message& = 0
EndIf
Return ~CallWindowProc(OldEditProc4&, Edit&, Message&, wParam&, lParam&)
EndProc
Proc EditProc5
Parameters Edit&, Message&, wParam&, lParam&
If Message& = ~WM_CHAR
Message& = 0
EndIf
Return ~CallWindowProc(OldEditProc5&, Edit&, Message&, wParam&, lParam&)
EndProc
Proc EditProc6
Parameters Edit&, Message&, wParam&, lParam&
If Message& = ~WM_CHAR
Message& = 0
EndIf
Return ~CallWindowProc(OldEditProc6&, Edit&, Message&, wParam&, lParam&)
EndProc
Declare appexit%
Declare Edit1&
Declare Edit2&
Declare Edit3&
Declare Edit4&
Declare Edit5&
Declare Edit6&
SetTrueColor 1
WindowStyle $003F
WindowTitle "DesignForm"
Window %maxX + 5,114 - 498,415
Cls ~GetSysColor(15)
UseFont "MS Sans Serif",13,0,0,0,0
SetDialogFont 1
Edit1&=CreateEdit(%hwnd,"",130,50,121,22)
Edit2&=CreateEdit(%hwnd,"",130,80,121,21)
Edit3&=CreateEdit(%hwnd,"",130,110,121,21)
Edit4&=CreateEdit(%hwnd,"",130,140,121,21)
Edit5&=CreateEdit(%hwnd,"",130,170,121,21)
Edit6&=CreateEdit(%hwnd,"",130,200,121,21)
OldEditProc1& = ~GetWindowLong(Edit1&, ~GWL_WNDPROC)
~SetWindowLong(Edit1&,~GWL_WNDPROC,ProcAddr(EditProc1,4))
OldEditProc2& = ~GetWindowLong(Edit2&, ~GWL_WNDPROC)
~SetWindowLong(Edit2&,~GWL_WNDPROC,ProcAddr(EditProc2,4))
OldEditProc3& = ~GetWindowLong(Edit3&, ~GWL_WNDPROC)
~SetWindowLong(Edit3&,~GWL_WNDPROC,ProcAddr(EditProc3,4))
OldEditProc4& = ~GetWindowLong(Edit4&, ~GWL_WNDPROC)
~SetWindowLong(Edit4&,~GWL_WNDPROC,ProcAddr(EditProc4,4))
OldEditProc5& = ~GetWindowLong(Edit5&, ~GWL_WNDPROC)
~SetWindowLong(Edit5&,~GWL_WNDPROC,ProcAddr(EditProc5,4))
Urspruengliche ProgramMainRoutine wieder herstellen
OldEditProc1& = ~SetWindowLong(Edit1&,~GWL_WNDPROC,OldEditProc1&)
Callback-Platz wieder freigeben
ProcAddr(EditProc1,-4)
Urspruengliche ProgramMainRoutine wieder herstellen
OldEditProc2& = ~SetWindowLong(Edit2&,~GWL_WNDPROC,OldEditProc2&)
Callback-Platz wieder freigeben
ProcAddr(EditProc2,-4)
Urspruengliche ProgramMainRoutine wieder herstellen
OldEditProc3& = ~SetWindowLong(Edit3&,~GWL_WNDPROC,OldEditProc3&)
Callback-Platz wieder freigeben
ProcAddr(EditProc3,-4)
Urspruengliche ProgramMainRoutine wieder herstellen
OldEditProc4& = ~SetWindowLong(Edit4&,~GWL_WNDPROC,OldEditProc4&)
Callback-Platz wieder freigeben
ProcAddr(EditProc4,-4)
Urspruengliche ProgramMainRoutine wieder herstellen
OldEditProc5& = ~SetWindowLong(Edit5&,~GWL_WNDPROC,OldEditProc5&)
Callback-Platz wieder freigeben
ProcAddr(EditProc5,-4)
OldEditProc6& = ~GetWindowLong(Edit6&, ~GWL_WNDPROC)
~SetWindowLong(Edit6&,~GWL_WNDPROC,ProcAddr(EditProc6,4))
SetWindowPos %hwnd = 207,114 - 498,415;0
WhileNot appexit%
WaitInput
If %key = 2
appexit%=1
ElseIf GetFocus(Edit1&)
ElseIf GetFocus(Edit2&)
ElseIf GetFocus(Edit3&)
ElseIf GetFocus(Edit4&)
ElseIf GetFocus(Edit5&)
ElseIf GetFocus(Edit6&)
ElseIf %key = 4
Fenstergröße
ElseIf %key = 5
Hilfe
EndIf
Wend
OldEditProc6& = ~SetWindowLong(Edit6&,~GWL_WNDPROC,OldEditProc6&)
ProcAddr(EditProc6,-4)
Gruß Detlef |
| | | XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 18.07.2008 ▲ |
| |
| | Detlef Jagolski | Habe Fehler schon gefunden.
Set("FastMode",1)
Gruß Detlef |
| | | XProfan X4, PRFellow, Profan2Cpp - Version 2.0c-pre5, Windows 11 | 18.07.2008 ▲ |
| |
| | | In der letzten Zeile das ProcAddr(EditProc6,-4) verstehe ich nicht - scheint ein Überbleibsel.
Ebenso brauchst Du doch garnicht für jedes Control eine eigene Proc definieren - nimm einfach immer die selbe. |
| | | | |
| | Frank Abbing | iF
In der letzten Zeile das ProcAddr(EditProc6,-4) verstehe ich nicht - scheint ein Überbleibsel. Ebenso brauchst Du doch garnicht für jedes Control eine eigene Proc definieren - nimm einfach immer die selbe.
Eben, und den alten Handle speicherst du einfach im GWL_USERDATA des jeweiligen Control. |
| | | | |
|
AntwortenThemenoptionen | 630 Betrachtungen |
ThemeninformationenDieses Thema hat 3 Teilnehmer: |