News:

Masm32 SDK description, downloads and other helpful links
Message to All Guests
NB: Posting URL's See here: Posted URL Change

Main Menu

Rebar control who don't want to change the size of the band

Started by TouEnMasm, July 23, 2021, 04:08:03 AM

Previous topic - Next topic

TouEnMasm

Hello,
This one works correctly with Four bands,two with a combobox ,one with a Toolbar,one with an up_down.
There is just a little problem,One click on the band don't maximize or minimize the band.
Normally,there is no need to proceed any message to do that.
The WM_MOUSE CLIC message is not sended to the parent window and normally it's the rebar control who do that.
I have tested may styles to try to solve the problem.
I have the same toolbar working in my IDE  :mrgreen: and I dont find what is the problem.
Any Help ?
see last post
Fa is a musical note to play with CL

six_L

   .elseif eax==WM_NOTIFY
      
      mov   rax,lParam
      .if   [rax].NMHDR.code==RBN_HEIGHTCHANGE
         invoke SendMessage,hWin,WM_SIZE,0,0
      .endif

   .elseif eax==WM_SIZE

      invoke   GetClientRect,hWin,addr rect1
      ;Size rebar
      invoke   GetDlgItem,hWin,IDC_REB1
      mov   hReb,rax
      invoke   GetClientRect,hReb,addr rect
      invoke   MoveWindow,hReb,0,2,rect1.right,rect.bottom,TRUE
Say you, Say me, Say the codes together for ever.

TouEnMasm



A clic on the band don't change the height but only the length.
The RBN_HEIGHTCHANGE can do nothing
Fa is a musical note to play with CL

six_L

Say you, Say me, Say the codes together for ever.

TouEnMasm

Fa is a musical note to play with CL

jj2007

Quote from: TouEnMasm on July 23, 2021, 04:05:00 PM
A clic on the band don't change the height but only the length.
The RBN_HEIGHTCHANGE can do nothing

There are a few others that you could test. Or do you prefer that six_L does the testing for you?

RBN_HEIGHTCHANGE               equ RBN_FIRST - 0
RBN_GETOBJECT  equ RBN_FIRST - 1
RBN_LAYOUTCHANGED              equ RBN_FIRST - 2
RBN_AUTOSIZE   equ RBN_FIRST - 3
RBN_BEGINDRAG  equ RBN_FIRST - 4
RBN_ENDDRAG    equ RBN_FIRST - 5
RBN_DELETINGBAND               equ RBN_FIRST - 6
RBN_DELETEDBAND                equ RBN_FIRST - 7
RBN_CHILDSIZE  equ RBN_FIRST - 8

TouEnMasm


I have added some notify messages to the original source code

Notify_Rebar PROC uses ebx uMsg:DWORD, wParam:DWORD, lParam:DWORD
Local  retour:DWORD
         mov retour,0
;uMsg = WM_NOTIFY et edx = hInstance Hrebar
mov     ebx, lParam          ; Get pointer to NMHDR
mov     eax, (NMHDR ptr [ebx]).code ;ex:TTN_NEEDTEXT ou EN_SELCHANGE
mov     edx,(NMHDR ptr [ebx]).hwndFrom
; valeur de retour ignorée sauf specification contraire
.if eax == RBN_CHILDSIZE
;invoke MessageBox,NULL,TXT("ien"),TXT("rty"),MB_OK
;ebx pointe NMREBARCHILDSIZE
;invoke SendMessage,Htoolbar,RB_SETBANDWIDTH,0,100
;Band's child window has been resized
.elseif eax == RBN_DELETEDBAND
;Band has been deleted
.elseif eax == RBN_DELETINGBAND
;Band is about to be deleted
.elseif eax == RBN_ENDDRAG
;User stopped dragging a band
.elseif eax == RBN_BEGINDRAG
;User began dragging a band
.elseif eax == RBN_AUTOSIZE
;Control has resized
.elseif eax == RBN_LAYOUTCHANGED
;Change in band layout
.elseif eax == RBN_GETOBJECT
;Object dragged over a band
.elseif eax == RBN_HEIGHTCHANGE
;invoke SendMessage,edx,WM_SIZE,0,0
;Control height changed
.elseif eax == RBN_CHEVRONPUSHED
.elseif eax == RBN_SPLITTERDRAG
.elseif eax == RBN_MINMAX
invoke MessageBox,NULL,TXT("ien"),TXT("RBN_MINMAX"),MB_OK
.elseif eax == NM_CUSTOMDRAW
;Custom draw request notification
;ebx NMCUSTOMDRAW
.elseif eax == NM_NCHITTEST
;Control received a non-client hit test
;ebx NMMOUSE
.elseif eax == NM_RELEASEDCAPTURE
;Control is releasing mouse capture
.elseif eax == NM_CLICK OR NM_LDOWN
.elseif eax == NM_DBLCLK
invoke MessageBox,NULL,TXT("ien"),TXT("NM_DBLCLK"),MB_OK
.else
;invoke MessageBox,NULL,TXT("ien"),TXT("rty"),MB_OK
.endif

FindeNotify_Rebar:
         mov eax,retour
         ret
Notify_Rebar endp



The NM_CLICK OR NM_LDOWN notifies who can be useful aren't send to the parent window.
It is the same with WM_MOUSE xx .
The execution of the maximize or minimize lenght of a band is internal to the band and when there is a problem there is not too many soluces.




Fa is a musical note to play with CL

TouEnMasm

Hello,
Finally found.
All notify messages of the rebar must be treat by DefWindowProc

.elseif uMsg == WM_NOTIFY
mov     ebx, lParam          ; Get pointer to NMHDR
mov     eax, (NMHDR ptr [ebx]).code ;ex:TTN_NEEDTEXT ou EN_SELCHANGE
mov     edx,(NMHDR ptr [ebx]).hwndFrom
; valeur de retour ignorée sauf specification contraire
.if edx == Hrebar
jmp AutomatiqueMessage    ; INVOKE     DefWindowProc, hwnd, uMsg, wParam, lParam
invoke Notify_Rebar,uMsg, wParam, lParam
.endif
Fa is a musical note to play with CL