Сворачивание и разворачивание родительского окна

Тема в разделе "WASM.WIN32", создана пользователем vg, 7 янв 2010.

  1. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Сворачиваю родительское окно из дочернего при сворачивании дочернего
    Код (Text):
    1. .ELSEIF uMsg == WM_SIZE  
    2. .IF wParam == SIZE_MINIMIZED  
    3. invoke ShowWindow,hWnd,SW_MINIMIZE ;hWnd - родитель
    4. .ENDIF
    Окно сворачивается, но не разворачивается, висит в панели задач. Перестаёт вызываться системное меню.
    ???
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    SetWindowPos
     
  3. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    С какими параметрами?
    Так
    Код (Text):
    1. invoke SetWindowPos,hwnd,NULL,0,0,0,0,SWP_HIDEWINDOW or SWP_NOZORDER or SWP_NOSIZE or SWP_NOMOVE
    не работает, окно пропадает даже из панели задач.
     
  4. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    vg
    Так вы еще и здесь об этом спрашиваете?
    Только что ответил на "Исходниках".

    Ну, продублирую:
    ... если бы употребляли правильную терминологию (не parent/child, а owner/owned) - наверняка бы вспомнилось о WM_ENTERIDLE и набросалось что-то типа того:
    .asm
    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. option casemap:none
    4. include \masm32\include\windows.inc
    5. include \masm32\include\user32.inc
    6. include \masm32\include\kernel32.inc
    7. includelib \masm32\lib\user32.lib
    8. includelib \masm32\lib\kernel32.lib
    9.  
    10. .const
    11.   id  equ 100
    12. .data
    13.  _owner db "OWNER",0
    14. .data?
    15.   hinst dd ?
    16.   hwin dd ?
    17. .code
    18.  
    19. DlgProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM  
    20.   mov eax,hWnd
    21.   .if uMsg==WM_CLOSE
    22.     invoke EndDialog,hWnd,0
    23.     mov eax,TRUE
    24.   .elseif uMsg==WM_INITDIALOG
    25.     .if hwin==0
    26.       mov eax,hWnd
    27.       mov hwin,eax
    28.       invoke SetWindowText,hWnd,offset _owner
    29.       jmp @f
    30.     .endif
    31.     mov eax,TRUE    
    32.   .elseif uMsg==WM_RBUTTONUP && eax==hwin
    33. @@:
    34.     invoke DialogBoxParam,hinst,id,hWnd,offset DlgProc,0
    35.     mov eax,TRUE
    36.   .elseif uMsg==WM_ENTERIDLE && wParam==MSGF_DIALOGBOX
    37.     invoke IsIconic,lParam
    38.     .if eax!=0
    39.       invoke ShowWindow,hWnd,SW_MINIMIZE
    40.       invoke EnableWindow,hWnd,TRUE      
    41.     .else
    42.       invoke ShowWindow,hWnd,SW_SHOWNA
    43.       invoke GetFocus
    44.       .if eax==hWnd
    45.         invoke SetFocus,lParam
    46.       .endif
    47.       invoke EnableWindow,hWnd,FALSE
    48.     .endif
    49.     mov eax,TRUE
    50.     .else
    51.     mov eax,FALSE
    52.   .endif
    53.   ret
    54. DlgProc endp
    55.  
    56. start:
    57.   invoke GetModuleHandle,0
    58.   mov hinst,eax
    59.   invoke DialogBoxParam,eax,id,0,offset DlgProc,0
    60.   invoke ExitProcess,eax
    61. end start
    .rc
    Код (Text):
    1. #include "\masm32\include\resource.h"
    2. #define  id  100
    3. id DIALOGEX 20,10,200,100
    4. STYLE WS_OVERLAPPEDWINDOW | WS_VISIBLE
    5. EXSTYLE WS_EX_TOPMOST
    6. CAPTION "MODAL OWNED"
    7. FONT 8, "Tahoma"
    8. {}