Подскажите с кодом

Тема в разделе "WASM.ASSEMBLER", создана пользователем 123dragon, 23 янв 2005.

Статус темы:
Закрыта.
  1. 123dragon

    123dragon New Member

    Публикаций:
    0
    Регистрация:
    12 янв 2005
    Сообщения:
    46
    Адрес:
    Russia
    Где задаётся кол-во символов я нашёл, а вот координаты окна (левый верхний и правый нижний) клиентской части не могу найти. Не могут они с воздуха взяться.

    Тутор 4 Айсзелиона (только учусь, хочется всё разложить по полочкам).

    Вот код:
    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. option casemap:none
    4.  
    5. WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
    6.  
    7. include \masm32\include\windows.inc
    8. include \masm32\include\user32.inc
    9. include \masm32\include\kernel32.inc
    10. includelib \masm32\lib\user32.lib
    11. includelib \masm32\lib\kernel32.lib
    12. .data
    13. ClassName db "SimpleWinClass",0
    14. AppName  db "Our First Window",0
    15. OurText  db "Win32 assembly is great and easy!",0
    16. .data?
    17. hInstance HINSTANCE ?
    18. CommandLine LPSTR ?
    19. .code
    20. start:
    21.     invoke GetModuleHandle, NULL
    22.     mov    hInstance,eax
    23.     invoke GetCommandLine
    24.     mov CommandLine,eax
    25.     invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
    26.     invoke ExitProcess,eax
    27. WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
    28.     LOCAL wc:WNDCLASSEX
    29.     LOCAL msg:MSG
    30.     LOCAL hwnd:HWND
    31.     mov   wc.cbSize,SIZEOF WNDCLASSEX
    32.     mov   wc.style, CS_HREDRAW or CS_VREDRAW
    33.     mov   wc.lpfnWndProc, OFFSET WndProc
    34.     mov   wc.cbClsExtra,NULL
    35.     mov   wc.cbWndExtra,NULL
    36.     push  hInst
    37.     pop   wc.hInstance
    38.     mov   wc.hbrBackground,COLOR_WINDOW+1
    39.     mov   wc.lpszMenuName,NULL
    40.     mov   wc.lpszClassName,OFFSET ClassName
    41.     invoke LoadIcon,NULL,IDI_APPLICATION
    42.     mov   wc.hIcon,eax
    43.     mov   wc.hIconSm,0
    44.     invoke LoadCursor,NULL,IDC_ARROW
    45.     mov   wc.hCursor,eax
    46.     invoke RegisterClassEx, addr wc
    47.     INVOKE CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\
    48.            WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
    49.            CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\
    50.            hInst,NULL
    51.     mov   hwnd,eax
    52.     INVOKE ShowWindow, hwnd,SW_SHOWNORMAL
    53.     INVOKE UpdateWindow, hwnd
    54.     .WHILE TRUE
    55.                 INVOKE GetMessage, ADDR msg,NULL,0,0
    56.                 .BREAK .IF (!eax)
    57.                 INVOKE TranslateMessage, ADDR msg
    58.                 INVOKE DispatchMessage, ADDR msg
    59.     .ENDW
    60.     mov     eax,msg.wParam
    61.     ret
    62. WinMain endp
    63. WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    64.     LOCAL hdc:HDC
    65.     LOCAL ps:PAINTSTRUCT
    66.     LOCAL rect:RECT
    67.     .IF uMsg==WM_DESTROY
    68.         invoke PostQuitMessage,NULL
    69.     .ELSEIF uMsg==WM_PAINT
    70.         invoke BeginPaint,hWnd, ADDR ps
    71.         mov    hdc,eax
    72.         invoke GetClientRect,hWnd, ADDR rect
    73.         invoke DrawText, hdc,ADDR OurText,30, ADDR rect, DT_SINGLELINE or DT_CENTER or DT_VCENTER
    74.         invoke EndPaint,hWnd, ADDR ps
    75.     .ELSE
    76.         invoke DefWindowProc,hWnd,uMsg,wParam,lParam
    77.         ret
    78.     .ENDIF
    79.     xor    eax,eax
    80.     ret
    81. WndProc endp
    82. end start
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    GetClientRect получает координаты клиентской области окна.
     
  3. pas

    pas New Member

    Публикаций:
    0
    Регистрация:
    18 апр 2003
    Сообщения:
    330
    Адрес:
    Russia
    Код (Text):
    1. HWND CreateWindowEx(
    2.  
    3.     DWORD dwExStyle,    // extended window style
    4.     LPCTSTR lpClassName,    // pointer to registered class name
    5.     LPCTSTR lpWindowName,   // pointer to window name
    6.     DWORD dwStyle,  // window style
    7.     int x,  // horizontal position of window
    8.     int y,  // vertical position of window
    9.     int nWidth, // window width
    10.     int nHeight,    // window height
    11.     HWND hWndParent,    // handle to parent or owner window
    12.     HMENU hMenu,    // handle to menu, or child-window identifier
    13.     HINSTANCE hInstance,    // handle to application instance
    14.     LPVOID lpParam  // pointer to window-creation data
    15.    );


    5 и 6 параметр координата левого верхнего угла окна. 7 и 8 ширина и высота окна. MSDN Rules.
     
  4. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615


    Iczelion читается "икзелион".
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
  6. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Вот на этой страничке видно, что по-японски Iczelion пишется как イクセリオン (ikuserion). С учетом редукции u перед глухими согласными и замены l->r получаем приблизительную русскую транскрипцию "икселион." Но так как в латинской записи ze, а не se, то мне кажется, что "икзелион" всё же правильнее.
     
  7. 123dragon

    123dragon New Member

    Публикаций:
    0
    Регистрация:
    12 янв 2005
    Сообщения:
    46
    Адрес:
    Russia
    Спасибо за уточнение.

    Все делают ошибки.
     
  8. 123dragon

    123dragon New Member

    Публикаций:
    0
    Регистрация:
    12 янв 2005
    Сообщения:
    46
    Адрес:
    Russia
    Спасибо кто подсказал по коду
     
Статус темы:
Закрыта.