Foro | | | | - Página 1 - |
| Georg Hovenbitzer | ¡Hola zusammen,
Yo sitze veces otra vez antes una Problema y ya no vienen. Hintergrund es, Yo búsqueda una Möglichkeit el Umklappen des Grippers sin el Verlassen de Waitinput herauszubekommen y otra vez herzustellen. Mein Intento war lo en Notifikafion RBN_HEIGHTCHANGE dies a erfahren, aber desafortunadamente kommt en meiner SubClassProd nichts gescheites a.
Desde que como no así geübt bin gehe Yo su de, dass Soy un Fehler beim Abfangen el Meldung mache. Yo hoffe muy lo kann me uno en el Sprünge helfen. KompilierenMarcaSeparación $H D:Eigene DateienProgrammeXProfan11INCLUDEMessages.ph
$H D:Eigene DateienProgrammeXProfan11INCLUDEWindows.ph
$H D:Eigene DateienProgrammeXProfan11INCLUDEcommctrl.ph
Declare Edit1&, Edit2&
Struct ReBar = Size&,
Mask&,
Style&,
clrFore&,
clrBack&,
lpText&,
cch&,
iImage&,
hwndChild&,
cxMinChild&,
cyMinChild&,
cx&,
hbmBack&,
wID&,
cyChild&,
cyMaxChild&,
cyIntegral&,
cxIdeal&,
lParam&,
cxHeader&
Declare ReBar#
Dim ReBar#,ReBar
Clear ReBar#
Declare a#
Dim a#,16
Struct TNMHdr = hwndFrom&,
idFrom%,
code%
Declare lpnmhdr#
Dim lpnmhdr#,TNMHdr
WindowStyle 2 + 8 + 16 + 128 + 256 + 512
WindowTitle "ReBar - Test"
Window 0,0-1024,768
Cls ~GetSysColor(~COLOR_BTNFACE)
Edit1& = @Create("Edit",%hWnd,"TreeView",0,0,0,0)
Edit2& = @Create("Edit",%hWnd,"ListView",0,0,0,0)
Clear a#
Long a#,0 = 8
Long a#,4 = $FFFF
@External("comctl32.dll","InitCommonControlsEx",a#)
Declare ReBar&
ReBar& = @Control("ReBarWindow32","",($50000000 | ~CCS_NORESIZE | ~RBS_FIXEDORDER),5,5,1008,250,%hWnd,%hInstance,0)
With ReBar#
.Size& = @SizeOf(ReBar#)
.Mask& = (~RBBIM_CHILD | ~RBBIM_CHILDSIZE | ~RBBIM_SIZE | ~RBBIM_STYLE | ~RBBIM_IDEALSIZE)
.Style& = ~RBBS_NOGRIPPER
.clrFore& = 0
.clrBack& = 0
.lpText& = 0
.cch& = 0
.iImage& = 0
.hwndChild& = Edit1&
.cxMinChild& = 0
.cyMinChild& = @Height(ReBar&)
.cx& = 300
.hbmBack& = 0
.wID& = 0
.cyChild& = @Height(ReBar&)
.cyMaxChild& = @Height(ReBar&)
.cyIntegral& = 0
.cxIdeal& = 300
.lParam& = 0
.cxHeader& = 0
@SendMessage(ReBar&,~RB_INSERTBAND,0,ReBar#)
.Style& = ~RBBS_GRIPPERALWAYS
.clrFore& = 0
.clrBack& = 0
.lpText& = 0
.cch& = 0
.iImage& = 0
.hwndChild& = Edit2&
.cxMinChild& = 0
.cyMinChild& = @Height(ReBar&)
.cx& = 690
.hbmBack& = 0
.wID& = 0
.cyChild& = @Height(ReBar&)
.cyMaxChild& = @Height(ReBar&)
.cyIntegral& = 0
.cxIdeal& = 690
.lParam& = 0
.cxHeader& = 0
@SendMessage(ReBar&,~RB_INSERTBAND,1,ReBar#)
EndWith
SubClassProc
If %sMessage = ~WM_NOTIFY
lpnmhdr# = &sLParam
If lpnmhdr#.hwndFrom& = ReBar&
Locate 40,30
Print lpnmhdr#.idFrom%
Print lpnmhdr#.code%
If lpnmhdr#.code% = ~RBN_HEIGHTCHANGE
Locate 40,30
Print "Treffer"
EndIf
EndIf
EndIf
@Set("WinProc",1)
EndProc
SubClass %hWnd,1
WhileNot %Key = 2
WaitInput
EndWhile
Dispose a#
Dispose ReBar#
Dispose lpnmhdr#
SubClass ReBar&,0
~D Ventana (ReBar& )
End
|
| | | Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 09.02.2010 ▲ |
| |
| | « Dieser Contribución wurde como Solución gekennzeichnet. » | | Jörg Sellmeyer | Habs auch veces repariert y el Veränderung eingefügt...
$H Messages.ph
$H Windows.ph
$H commctrl.ph
Declarar Editar1&, Editar2&
Struct ReBar = Size&,\
Mask&,\
Style&,\
clrFore&,\
clrBack&,\
lpText&,\
cch&,\
iImage&,\
hwndChild&,\
cxMinChild&,\
cyMinChild&,\
cx&,\
hbmBack&,\
wID&,\
cyChild&,\
cyMaxChild&,\
cyIntegral&,\
cxIdeal&,\
lParam&,\
cxHeader&
Declarar ReBar#
Dim ReBar#,ReBar
Claro ReBar#
Declarar a#
Dim a#,16
Struct TNMHdr = hwndFrom&,\
idFrom&,\
code%
Declarar lpnmhdr#
Dim lpnmhdr#,TNMHdr
Ventana de Estilo 2 + 8 + 16 + 128 + 256 + 512
Título de la ventana "ReBar - Test"
Ventana 0,0-1024,768
Cls ~GetSysColor(~COLOR_BTNFACE)
Edit1& = @Crear("Edit",%hWnd,"TreeView",0,0,0,0)
Edit2& = @Crear("Edit",%hWnd,"ListView",0,0,0,0)
Claro a#
Largo a#,0 = 8
Largo a#,4 = $FFFF
@Externo("comctl32.dll","InitCommonControlsEx",a#)
Declarar ReBar&
ReBar& = @Control("ReBarWindow32","",($50000000 | ~CCS_NORESIZE | ~RBS_FIXEDORDER),5,5,1008,250,%hWnd,%hInstance,0)
With ReBar#
.Size& = @SizeOf(ReBar#)
.Mask& = (~RBBIM_CHILD | ~RBBIM_CHILDSIZE | ~RBBIM_SIZE | ~RBBIM_STYLE | ~RBBIM_IDEALSIZE)
.Style& = ~RBBS_NOGRIPPER
.clrFore& = 0
.clrBack& = 0
.lpText& = 0
.cch& = 0
.iImage& = 0
.hwndChild& = Editar1&
.cxMinChild& = 0
.cyMinChild& = @Height(ReBar&)
.cx& = 300
.hbmBack& = 0
.wID& = 0
.cyChild& = @Height(ReBar&)
.cyMaxChild& = @Height(ReBar&)
.cyIntegral& = 0
.cxIdeal& = 300
.lParam& = 0
.cxHeader& = 0
@SendMessage(ReBar&,~RB_INSERTBAND,0,ReBar#)
.Style& = ~RBBS_GRIPPERALWAYS
.clrFore& = 0
.clrBack& = 0
.lpText& = 0
.cch& = 0
.iImage& = 0
.hwndChild& = Editar2&
.cxMinChild& = 0
.cyMinChild& = @Height(ReBar&)
.cx& = 690
.hbmBack& = 0
.wID& = 0
.cyChild& = @Height(ReBar&)
.cyMaxChild& = @Height(ReBar&)
.cyIntegral& = 0
.cxIdeal& = 690
.lParam& = 0
.cxHeader& = 0
@SendMessage(ReBar&,~RB_INSERTBAND,1,ReBar#)
EndWith
SubClassProc
If %sMessage = ~WM_NOTIFY
lpnmhdr# = &sLParam
If lpnmhdr#.hwndFrom& = ReBar&
If Largo(&slparam,8) = ~RBN_HEIGHTCHANGE
Claro a#
@SendMessage(ReBar&,~RB_SIZETORECT,0,a#)
@Conjunto("WinProc",0)
EndIf
EndIf
EndIf
ENDPROC
SubClass %hWnd,1
Sinestar encargado %Key = 2
WaitInput
EndWhile
Disponer a#
Disponer ReBar#
Disponer lpnmhdr#
SubClass ReBar&,0
~DestroyWindow(ReBar&)
End
|
| | | | | |
| | Frank Abbing | Hab no bastante dein Problema verstanden. Was es Umklappen des Gripper? Aber eventuel es mejor, direkt el ReBar-Control a subclassen... |
| | | | |
| | Georg Hovenbitzer | Stimmt, si uno el Fehlerbeschreibung ließt es ellos schwer a verstehen, todavía una Intento.
Zieht uno el Gripper después de unten de el ReBar Control heraus, verschwindet él völlig y es sólo con un neusetzen otra vez sichtbar. El puede ser hacer si la Waitinput unterbrochen se, indem uno el Höhe ermittelt. Yo möchte dies aber vorher, also antes el Unterbrechen des ReBar mitbekommen.
Wenn Yo el ReBar subclasse kommt kein WM_NOTIFY a.
Yo hoffe es nun algo verständlicher geschrieben. |
| | | Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 09.02.2010 ▲ |
| |
| | | Hast Usted lo una vez con uno nproc probiert? Posesiones de Rebars ni idea, aber echtes y unterbrechungsfreies SubClassing klingt esta doch bastante hilfreich. |
| | | | |
| | Georg Hovenbitzer | Bis ahora todavía no (voluntad lo aber veces probieren), wobei Yo no glaube, dass lo qué bringt. Como no Notifikation por kommt, siempre sólo 64 ?! |
| | | Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 09.02.2010 ▲ |
| |
| | | Weißt sí no, si una durchkommt, si Waitinput verlassen se y así sí no Messages mehr para el SubclassProc bereitstehen. Werden por ejemplo 20 Messages abgesandt y el erste Message löst ya una Verlassen de Waitinput de, entonces wirst Usted el restlichen 19 Messages vermutlich garnicht mehr por SubClassProc erfassen puede, porque Usted tal vez garnicht ya otra vez en el Waitinput bist. Exactamente esta Fall kann Yo hierbei bastante bien vorstellen, tambor otra vez mein Tip lo echt a subclassen. |
| | | | |
| | Frank Abbing | Ts, WM_NOTIFY arbeitet auch con XProfans Subclassing perfekt zusammen...
Su Art, como du el Notify-Struktur ansprichst, es verkehrt, como musst du ansetzen. Das hier funktioniert z.B. sin Problemas: KompilierenMarcaSeparación El Struktur es wohl fehlerhaft, z.B. muss lpnmhdr#.idFrom% una Largo-Int ser, en el Form voluntad aber sólo 2 Byte reserviert y angesprochen... |
| | | | |
| | Georg Hovenbitzer | ¡Hola Franco,
Volltreffer Daran lag lo, Yo de el Windows.ph el Struktur TNMHdr genommen (como lo no NMHdr gab) y dies war el Fehler. Super, así klappt alles y uno kann nun el Verschwinden des Grippers direkt verhindern. KompilierenMarcaSeparación |
| | | Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 10.02.2010 ▲ |
| |
| | Jörg Sellmeyer | Habs auch veces repariert y el Veränderung eingefügt...
$H Messages.ph
$H Windows.ph
$H commctrl.ph
Declarar Editar1&, Editar2&
Struct ReBar = Size&,\
Mask&,\
Style&,\
clrFore&,\
clrBack&,\
lpText&,\
cch&,\
iImage&,\
hwndChild&,\
cxMinChild&,\
cyMinChild&,\
cx&,\
hbmBack&,\
wID&,\
cyChild&,\
cyMaxChild&,\
cyIntegral&,\
cxIdeal&,\
lParam&,\
cxHeader&
Declarar ReBar#
Dim ReBar#,ReBar
Claro ReBar#
Declarar a#
Dim a#,16
Struct TNMHdr = hwndFrom&,\
idFrom&,\
code%
Declarar lpnmhdr#
Dim lpnmhdr#,TNMHdr
Ventana de Estilo 2 + 8 + 16 + 128 + 256 + 512
Título de la ventana "ReBar - Test"
Ventana 0,0-1024,768
Cls ~GetSysColor(~COLOR_BTNFACE)
Edit1& = @Crear("Edit",%hWnd,"TreeView",0,0,0,0)
Edit2& = @Crear("Edit",%hWnd,"ListView",0,0,0,0)
Claro a#
Largo a#,0 = 8
Largo a#,4 = $FFFF
@Externo("comctl32.dll","InitCommonControlsEx",a#)
Declarar ReBar&
ReBar& = @Control("ReBarWindow32","",($50000000 | ~CCS_NORESIZE | ~RBS_FIXEDORDER),5,5,1008,250,%hWnd,%hInstance,0)
With ReBar#
.Size& = @SizeOf(ReBar#)
.Mask& = (~RBBIM_CHILD | ~RBBIM_CHILDSIZE | ~RBBIM_SIZE | ~RBBIM_STYLE | ~RBBIM_IDEALSIZE)
.Style& = ~RBBS_NOGRIPPER
.clrFore& = 0
.clrBack& = 0
.lpText& = 0
.cch& = 0
.iImage& = 0
.hwndChild& = Editar1&
.cxMinChild& = 0
.cyMinChild& = @Height(ReBar&)
.cx& = 300
.hbmBack& = 0
.wID& = 0
.cyChild& = @Height(ReBar&)
.cyMaxChild& = @Height(ReBar&)
.cyIntegral& = 0
.cxIdeal& = 300
.lParam& = 0
.cxHeader& = 0
@SendMessage(ReBar&,~RB_INSERTBAND,0,ReBar#)
.Style& = ~RBBS_GRIPPERALWAYS
.clrFore& = 0
.clrBack& = 0
.lpText& = 0
.cch& = 0
.iImage& = 0
.hwndChild& = Editar2&
.cxMinChild& = 0
.cyMinChild& = @Height(ReBar&)
.cx& = 690
.hbmBack& = 0
.wID& = 0
.cyChild& = @Height(ReBar&)
.cyMaxChild& = @Height(ReBar&)
.cyIntegral& = 0
.cxIdeal& = 690
.lParam& = 0
.cxHeader& = 0
@SendMessage(ReBar&,~RB_INSERTBAND,1,ReBar#)
EndWith
SubClassProc
If %sMessage = ~WM_NOTIFY
lpnmhdr# = &sLParam
If lpnmhdr#.hwndFrom& = ReBar&
If Largo(&slparam,8) = ~RBN_HEIGHTCHANGE
Claro a#
@SendMessage(ReBar&,~RB_SIZETORECT,0,a#)
@Conjunto("WinProc",0)
EndIf
EndIf
EndIf
ENDPROC
SubClass %hWnd,1
Sinestar encargado %Key = 2
WaitInput
EndWhile
Disponer a#
Disponer ReBar#
Disponer lpnmhdr#
SubClass ReBar&,0
~DestroyWindow(ReBar&)
End
|
| | | | |
|
RespuestaThemeninformationenDieses Thema ha 4 subscriber: |