Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2012, 20:58   #1
Rain_Walker
 
Регистрация: 17.10.2012
Сообщений: 8
По умолчанию Вывод координат миши

Доброго времени суток! Не могу понять в чем проблема, вроде все правильно, а она выводит какой-то мусор. Помогите плиз.

Вот код:
Код:
.386
.model flat,stdcall
option casemap:none

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib

.data
	ClassName db "WINDOW",0
	MouseClick db 0 ; 0=no click yet

.data?
	hInstance HINSTANCE ?
	CommandLine LPSTR ?
	hitpoint POINT <>

.code
start:
	invoke GetModuleHandle, NULL
	mov hInstance,eax
	invoke GetCommandLine
	mov CommandLine,eax 
	invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
	invoke ExitProcess,eax

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
 LOCAL wc:WNDCLASSEX
 LOCAL msg:MSG
 LOCAL hwnd:HWND
	mov wc.cbSize,SIZEOF WNDCLASSEX
	mov wc.style, CS_HREDRAW or CS_VREDRAW
	mov wc.lpfnWndProc, OFFSET WndProc
	mov wc.cbClsExtra,NULL
	mov wc.cbWndExtra,NULL
	push hInst
	pop wc.hInstance
	mov wc.hbrBackground,COLOR_WINDOW+1
	mov wc.lpszMenuName,NULL
	mov wc.lpszClassName,OFFSET ClassName
	invoke LoadIcon,NULL,IDI_APPLICATION
	mov wc.hIcon,eax
	mov wc.hIconSm,eax
	invoke LoadCursor,NULL,IDC_ARROW
	mov wc.hCursor,eax
	invoke RegisterClassEx, addr wc
	invoke CreateWindowEx,NULL,ADDR ClassName,ADDR ClassName,\
	WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
	CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\
	hInst,NULL
	mov hwnd,eax
	invoke ShowWindow, hwnd,SW_SHOWNORMAL
	invoke UpdateWindow, hwnd
	.WHILE TRUE
		invoke GetMessage, ADDR msg,NULL,0,0
		.BREAK .if (!eax)
		invoke DispatchMessage, ADDR msg
	.ENDW
	mov eax,msg.wParam
	ret
WinMain endp

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
 LOCAL hdc:HDC
 LOCAL ps:PAINTSTRUCT
	.if uMsg==WM_DESTROY
		invoke PostQuitMessage,NULL
	.elseif uMsg==WM_LBUTTONDOWN
		mov eax,lParam
		and eax,0FFFFh
		mov hitpoint.x,eax
		mov eax,lParam
		shr eax,16
		mov hitpoint.y,eax
		mov MouseClick,TRUE
		invoke InvalidateRect,hWnd,NULL,TRUE
	.elseif uMsg==WM_PAINT
		invoke BeginPaint,hWnd, ADDR ps
		mov hdc,eax
		.if MouseClick
			invoke lstrlen,ADDR hitpoint
			invoke TextOut,hdc,hitpoint.x,hitpoint.y,ADDR hitpoint,eax
		.endif
		invoke EndPaint,hWnd, ADDR ps
	.else
		invoke DefWindowProc,hWnd,uMsg,wParam,lParam
		ret
	.endif
	xor eax,eax
	ret
WndProc endp
end start
Буду благодарен за любые советы!
С ув. Влад!

Последний раз редактировалось Serge_Bliznykov; 11.12.2012 в 21:17.
Rain_Walker вне форума Ответить с цитированием
Старый 11.12.2012, 22:56   #2
Rain_Walker
 
Регистрация: 17.10.2012
Сообщений: 8
По умолчанию

И опять всем огромнейшее спасибо, сам все решил...
Закрывайте тему.


Это решение, может кому-то понадобиться...
Код:
.386
.model flat,stdcall
option casemap:none

WinMain proto :DWORD,:DWORD,:DWORD,:DWORD

include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\gdi32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\gdi32.lib

.data
	ClassName db "SimpleWinClass",0
	MouseClick db 0 ; 0=no click yet
		point_x       DD 0
        point_y       DD 0

        sx            db " X= ",0
        sy            db " Y= ",0

        buf           db 32 dup (0)
        ibuf          dd 0
        
        lpFmt         db "%s%u%s%u",0
.data?
	hInstance HINSTANCE ?
	CommandLine LPSTR ?

.code
start:
	invoke GetModuleHandle, NULL
	mov hInstance,eax
	invoke GetCommandLine
	mov CommandLine,eax 
	invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
	invoke ExitProcess,eax

WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
 LOCAL wc:WNDCLASSEX
 LOCAL msg:MSG
 LOCAL hwnd:HWND
	mov wc.cbSize,SIZEOF WNDCLASSEX
	mov wc.style, CS_HREDRAW or CS_VREDRAW
	mov wc.lpfnWndProc, OFFSET WndProc
	mov wc.cbClsExtra,NULL
	mov wc.cbWndExtra,NULL
	push hInst
	pop wc.hInstance
	mov wc.hbrBackground,COLOR_WINDOW+0
	mov wc.lpszMenuName,NULL
	mov wc.lpszClassName,OFFSET ClassName
	invoke LoadIcon,NULL,IDI_APPLICATION
	mov wc.hIcon,eax
	mov wc.hIconSm,eax
	invoke LoadCursor,NULL,IDC_ARROW
	mov wc.hCursor,eax
	invoke RegisterClassEx, addr wc
	invoke CreateWindowEx,NULL,ADDR ClassName,ADDR ClassName,\
	WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
	CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\
	hInst,NULL
	mov hwnd,eax
	invoke ShowWindow, hwnd,SW_SHOWNORMAL
	invoke UpdateWindow, hwnd
	.WHILE TRUE
		invoke GetMessage, ADDR msg,NULL,0,0
		.BREAK .if (!eax)
		invoke DispatchMessage, ADDR msg
	.ENDW
	mov eax,msg.wParam
	ret
WinMain endp

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
 LOCAL hdc:HDC
 LOCAL ps:PAINTSTRUCT
	.if uMsg==WM_DESTROY
		invoke PostQuitMessage,NULL
	.elseif uMsg==WM_LBUTTONDOWN
		  mov  EAX, lParam     
    mov  point_x, EAX
    and  point_x, 0FFFFh
     
    shr  EAX, 16
    mov  point_y, EAX

    push point_y
    push offset sy
    push point_x
    push offset sx
    push offset lpFmt
    push offset buf
    call wsprintf
    add  ESP, 24
    mov  ibuf, EAX
		mov MouseClick,TRUE
		invoke InvalidateRect,hWnd,NULL,TRUE
	.elseif uMsg==WM_PAINT
		invoke BeginPaint,hWnd, ADDR ps
		mov hdc,eax
		.if MouseClick
			invoke lstrlen,ADDR buf
			invoke TextOut,hdc,point_x,point_y,ADDR buf,ibuf
		.endif
		invoke EndPaint,hWnd, ADDR ps
	.else
		invoke DefWindowProc,hWnd,uMsg,wParam,lParam
		ret
	.endif
	xor eax,eax
	ret
WndProc endp
end start
Rain_Walker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Tchart вывод координат в файл sokolvano Общие вопросы Delphi 0 20.10.2012 14:18
Вывод координат окна на С++ GanJIk Помощь студентам 6 01.04.2012 23:06
Вывод трёхмерных координат. ТриСемёрки C++ Builder 0 08.03.2011 10:54
РАспознавание по экрану и эмуляция нажатия миши devi409 Общие вопросы Delphi 4 10.06.2010 22:46
вывод координат shelest Помощь студентам 1 20.12.2009 13:44