Дочерние окна

Тема в разделе "WASM.WIN32", создана пользователем calidus, 14 окт 2008.

  1. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Есть проблемка в созданнии окон Таб вью , ранее они работали через eax==TCN_SELCHANGE шоу и хайд с проверкой от какого таба идет сообщение. Проект разросся и поэтому переделал Таб окна под отдельный диалог. Проблема в том что оконные процедуры не могут получить правильный код. То есть , не один месаджбокс не срабатывает ни на одном окне табвью, хотя какие то сообщения шлются , есть примеры где все сообщения обрабатываются в главном окне диалоговом. Но дело в том что это тоже не работает. Ниже приведу коды все мест связанных с этим делом.

    Код (Text):
    1.         MOV TabCtrlItem.imask,TCIF_TEXT or TCIF_PARAM
    2.         MOV TabCtrlItem.cchTextMax,64
    3.        
    4.                 ;3
    5.         Invoke CreateDialogParam,hInstance,IDD_DLG4,hwndTAB,Offset DialogFourProc,0
    6.         MOV TabCtrlItem.pszText,Offset  third
    7.         MOV TabCtrlItem.lParam,EAX
    8.         Invoke SendDlgItemMessage,h2Wnd,IDD_TAB,TCM_INSERTITEM,0,ADDR TabCtrlItem
    9.        
    10.         ;2
    11.         Invoke CreateDialogParam,hInstance,IDD_DLG3,hwndTAB,Offset DialogThreeProc,0
    12.         MOV TabCtrlItem.pszText,Offset  third
    13.         MOV TabCtrlItem.lParam,EAX
    14.         Invoke SendDlgItemMessage,h2Wnd,IDD_TAB,TCM_INSERTITEM,0,ADDR TabCtrlItem
    15.        
    16.         ;1
    17.         Invoke CreateDialogParam,hInstance,IDD_DLG2,hwndTAB,Offset DialogTwoProc,0
    18.         MOV TabCtrlItem.pszText,Offset second
    19.         MOV TabCtrlItem.lParam,EAX
    20.         Invoke SendDlgItemMessage,h2Wnd,IDD_TAB,TCM_INSERTITEM,0,ADDR TabCtrlItem
    21.        
    22.        
    23.         ;0
    24.         Invoke CreateDialogParam,hInstance,IDD_DLG1,hwndTAB,Offset DialogOneProc,0
    25.         MOV TabCtrlItem.pszText,Offset first
    26.         MOV TabCtrlItem.lParam,EAX
    27.        
    28.         ;Store handle of the visible child dialog
    29.         Invoke SetWindowLong,h2Wnd,GWL_USERDATA,TabCtrlItem.lParam
    30.        
    31.         Invoke SendDlgItemMessage,h2Wnd,IDD_TAB,TCM_INSERTITEM,0,ADDR TabCtrlItem
    32.        
    33.         Invoke SendDlgItemMessage,h2Wnd,IDD_TAB,TCM_SETCURSEL,0,0
    далее
    Код (Text):
    1.              .if [edi.NMHDR].code ==TCN_SELCHANGE                                     ; is this notification tabs changing?
    2.                   ;  invoke SendMessage,hwndTAB,TCM_GETCURSEL,0,0            ; then learn the TAB index.
    3.                   ;  mov tabIndex, eax                                       ; store to "tabIndex"
    4.             Invoke GetWindowLong,hWnd,GWL_USERDATA
    5.             Invoke ShowWindow,EAX,SW_HIDE
    6.            
    7.             Invoke SendDlgItemMessage,hWnd,IDD_TAB,TCM_GETCURSEL,0,0
    8.             MOV TabCtrlItem.imask,TCIF_PARAM
    9.             MOV EDX,EAX
    10.             Invoke SendDlgItemMessage,hWnd,IDD_TAB,TCM_GETITEM,EDX,ADDR TabCtrlItem
    11.            
    12.             Invoke SetWindowLong,hWnd,GWL_USERDATA,TabCtrlItem.lParam
    13.             Invoke ShowWindow,TabCtrlItem.lParam,SW_SHOW
    14.            
    15.                 .endif
    и далее

    Код (Text):
    1. DialogTwoProc Proc hWnd:DWORD, uMsg:DWORD,wParam:DWORD,lParam:DWORD
    2.    
    3.     .If uMsg == WM_INITDIALOG
    4.  
    5.     .Else
    6.         MOV EAX,FALSE
    7.         RET
    8.     .EndIf
    9.    
    10.     MOV EAX,TRUE
    11.     RET
    12.  
    13. DialogTwoProc EndP
    14.  
    15. DialogThreeProc Proc hWnd:DWORD, uMsg:DWORD,wParam:DWORD,lParam:DWORD
    16.    
    17.     .If uMsg == WM_INITDIALOG
    18.  
    19.     .Else
    20.         MOV EAX,FALSE
    21.         RET
    22.     .EndIf
    23.    
    24.     MOV EAX,TRUE
    25.     RET
    26.  
    27. DialogThreeProc EndP
    28.  
    29. DialogFourProc Proc hWnd:DWORD, uMsg:DWORD,wParam:DWORD,lParam:DWORD
    30.    
    31.     .If uMsg == WM_INITDIALOG
    32.  
    33.     .Else
    34.         MOV EAX,FALSE
    35.         RET
    36.     .EndIf
    37.    
    38.     MOV EAX,TRUE
    39.     RET
    40.  
    41. DialogFourProc EndP
    стороннюю прогу прикрепляю , у меня чуть иначе но не работает