resizing/moving Dialog item

Тема в разделе "WASM.BEGINNERS", создана пользователем rain, 23 июл 2006.

  1. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    добрый день/ночь/утро/вечер/.. (кому что выбирайте).
    ситуация: с помошью редактора ресурсов кинул на форму литсбокс (или эдит или ещё что-то, это не главное), нужно что-бы это что-то именяло свой рамер на всю свободную часть клиентской области.
    пробовал MoveWindow,SetWindowPos- не перемещает, прошу заметить что это элемент диалога а не контрол созданный CreateWindowEx, в последнем случае очевидно работала MoveWindow как в Iczelion tutorial.
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Видать, где-то ошибка, т.к. MoveWindow работает всегда и с любыми окнами.
     
  3. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    извените, но она почему-то возвращает 0, во избежании недоговорок приведу сорец, благо он небольшой:
    Код (Text):
    1. .586
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5.    include windows.inc
    6.    include user32.inc
    7.    include kernel32.inc
    8.  
    9.    includelib user32.lib
    10.    includelib kernel32.lib
    11.  
    12.  
    13. WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
    14.  
    15.  
    16. .data
    17.    ClassName db "DialogClass",0
    18.    DialogName db "SomeDialog",0
    19. .data?
    20.    hInstance HINSTANCE ?
    21.    CommandLine LPSTR ?
    22.    hwndEdit HWND ?
    23. .const
    24.    IDC_EDT1 equ 1001
    25.  
    26. .code
    27.  
    28.  
    29. start:
    30.     invoke GetModuleHandle, NULL
    31.     mov    hInstance,eax
    32.    
    33.     invoke GetCommandLine
    34.     mov    CommandLine,eax
    35.    
    36.     invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
    37.     invoke ExitProcess,eax
    38.  
    39.    WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
    40.  
    41.        LOCAL wc:WNDCLASSEX
    42.        LOCAL msg:MSG
    43.        LOCAL hDlg:HWND
    44.        mov   wc.cbSize,SIZEOF WNDCLASSEX
    45.        mov   wc.style, CS_HREDRAW or CS_VREDRAW
    46.        mov   wc.lpfnWndProc, OFFSET WndProc
    47.        mov   wc.cbClsExtra,NULL
    48.        mov   wc.cbWndExtra,DLGWINDOWEXTRA
    49.        push  hInst
    50.        pop   wc.hInstance
    51.        mov   wc.hbrBackground,COLOR_BTNFACE+1
    52.        mov   wc.lpszMenuName,NULL
    53.        mov   wc.lpszClassName,OFFSET ClassName
    54.        invoke LoadIcon,NULL,IDI_APPLICATION
    55.        mov   wc.hIcon,eax
    56.        mov   wc.hIconSm,eax
    57.        invoke LoadCursor,NULL,IDC_ARROW
    58.        mov   wc.hCursor,eax
    59.        invoke RegisterClassEx, addr wc
    60.        invoke CreateDialogParam,hInstance,ADDR DialogName,NULL,NULL,NULL
    61.        mov   hDlg,eax
    62.        invoke ShowWindow, hDlg,SW_SHOWNORMAL
    63.        invoke UpdateWindow, hDlg
    64.        .WHILE TRUE
    65.            invoke GetMessage, ADDR msg,NULL,0,0
    66.            .BREAK .IF (!eax)
    67.            invoke IsDialogMessage, hDlg, ADDR msg
    68.            .IF eax ==FALSE
    69.              invoke TranslateMessage, ADDR msg
    70.              invoke DispatchMessage, ADDR msg
    71.            .ENDIF
    72.        .ENDW
    73.        mov     eax,msg.wParam
    74.  
    75.        ret
    76.  
    77.    WinMain endp
    78.  
    79.  
    80. WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    81.    
    82.     .IF uMsg==WM_DESTROY
    83.         invoke PostQuitMessage,NULL
    84.     .ELSEIF uMsg==WM_CLOSE
    85.         invoke EndDialog,hWnd,NULL
    86.         invoke SendMessage,hWnd,WM_DESTROY,NULL,NULL
    87.     .elseif uMsg==WM_SIZE
    88.         invoke GetDlgItem,hWnd,IDC_EDT1
    89.         mov eax,hwndEdit
    90.            mov eax,lParam
    91.            mov edx,eax
    92.            shr edx,16
    93.            and eax,0ffffh
    94.         invoke MoveWindow,hwndEdit,0,0,edx,eax,TRUE
    95.     .ELSE
    96.         invoke DefWindowProc,hWnd,uMsg,wParam,lParam       
    97.         ret
    98.     .ENDIF
    99.    
    100.     xor eax,eax
    101.     ret
    102. WndProc endp
    103.  
    104.  
    105.  
    106. end start
    и rc:
    Код (Text):
    1. #define IDC_EDT1 1001
    2. SomeDialog DIALOGEX 6,6,194,106
    3. CAPTION "IDD_DLG"
    4. FONT 8,"MS Sans Serif",400,0
    5. CLASS "DialogClass"
    6. STYLE 0x10CF0000
    7. EXSTYLE 0x00000000
    8. BEGIN
    9.   CONTROL "",IDC_EDT1,"Edit",0x50010000,8,5,90,52,0x00000200
    10. END
    вот
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    > mov eax,hwndEdit
    Может, лучше так:
    mov hwndEdit,eax

    ;)
     
  5. rain

    rain New Member

    Публикаций:
    0
    Регистрация:
    22 апр 2006
    Сообщения:
    976
    8-$ аааа =))) ого, от это я дал, пасиба, извените за флуд