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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2010, 22:11   #1
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию нажатие кнопок

Пишу программу на masm в которой с помощью winapi создаю окно и две кнопки в нём, но возниклв проблема как отслеживать сообщение о нажатии определённой кнопки? если бы была одна кнопка то можно было бы использовать WM_COMAND а как быть с двумя?
вот Главная процедура в которой происходит считывание сообщения в ней же создаются две кнопки
Код:
;--------------------------------------------------------------------
;									WINDOW		PROCEDURE									
;--------------------------------------------------------------------
MAIN_WINDOW_PROC	PROC	  USES EBX	ESI  EDI \		hWnd_ :DWORD	, MESG :DWORD , wParam :DWORD , IParam :DWORD
LOCAL	_HDC	:DWORD
LOCAL rect:RECT
									
;----
				CMP	MESG	,	WM_CREATE
			JE		WMCREATE
				CMP	MESG	,	WM_COMMAND
			JE		WMSTART

				CMP	MESG	,	WM_DESTROY
			JE		WMDESTROY
;---

		
DEF_:
		invoke	DefWindowProc ,	hWnd_ ,	MESG , wParam , IParam
		jmp	FINISH
;-----
WMCREATE:

		 invoke  CreateWindowEx 	,	NULL	,	addr	BUTTON_CLASS,\ addr	BUTTON_START,\
				WS_CHILD+WS_VISIBLE+BS_DEFPUSHBUTTON	,	20,100, 100, 25,\
				hWnd_,	NULL,		HINST	,	NULL 
				
		invoke  CreateWindowEx 	,	NULL	,	addr	BUTTON_CLASS,\ addr	BUTTON_ABOUT ,\
				WS_CHILD+WS_VISIBLE+BS_DEFPUSHBUTTON	,	150,100, 180, 25,\
				hWnd_,	NULL,		HINST	,	NULL 
				jmp DEF_	
				
	
;-----	
WMSTART:

				invoke GetDC	,	hWnd_
					mov	_HDC	,	EAX
					invoke	SetBkMode	,	_HDC	,	TRANSPARENT
				invoke	TextOut,	_HDC ,0,20, addr MARKA,17 
				invoke	TextOut,	_HDC ,0,40, addr SPEED,9	
						mov edi, OFFSET PNAME
				mov eax, 80000002h
        			cpuid
        			mov [edi], eax
        			add edi, 4
        			mov [edi], ebx
        			add edi, 4
        			mov [edi], ecx
        			add edi, 4
        			mov [edi], edx
        			add edi, 4
        			mov eax, 80000003h
        			cpuid
        			mov [edi], eax
        			add edi, 4
        			mov [edi], ebx
        			add edi, 4
        			mov [edi], ecx
       			add edi, 4
        			mov [edi], edx
        			add edi, 4
        			mov eax, 80000004h
        			cpuid
        			mov [edi], eax
        			add edi, 4
        			mov [edi], ebx
        			add edi, 4
        			mov [edi], ecx
        			add edi, 4
        			mov [edi], edx
        			add edi, 4
        			mov eax, $
        			mov [edi], eax
        		     invoke SetRect, addr rect, 135, 20, 500, 35 
        	      	invoke DrawText, _HDC , addr PNAME, -1, addr rect, DT_SINGLELINE
					jmp speed
speed:			
	   			rdtsc          
				mov      esi,eax
				mov      edi,edx

				push     1000   
				call     Sleep 
				push     0      

				rdtsc           
				cmp      edx,edi
				jb	speed
				sub	eax,esi
				sbb      edx,edi
				mov      ebx,1000000
				div      ebx    
				mov      digEAX,eax
 		invoke   wsprintf,addr buf1,addr frmt,digEAX
		invoke SetRect, addr rect, 70, 40, 500, 55 
        	invoke DrawText, _HDC , addr buf1, -1, addr rect, DT_SINGLELINE		
				jmp	FINISH
					

WMDESTROY:

		invoke	PostQuitMessage , FALSE
;---	 
FINISH: 
RET 16
MAIN_WINDOW_PROC	ENDP
Подскажите пожалуйста

Последний раз редактировалось rpy3uH; 07.01.2010 в 22:36.
Nitrino вне форума Ответить с цитированием
Старый 07.01.2010, 22:29   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Незнаю, что творится у вас в программе, но похоже, что-то страшное
Поглядите лучше пример, например, здесь
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 07.01.2010, 22:43   #3
Nitrino
Я ещё только учусь
Форумчанин
 
Регистрация: 06.05.2009
Сообщений: 158
По умолчанию

Да не тут всё нормально))))
Кстати разобрался через WM_COMMAND отслеживаем нажатие на кнопку, а затем сравниваем wParam в котором будет находится идентификатор кнопки
примерно так выглядит
Код:
.IF msg == WM_COMMAND
  .IF wParam == ID_BUTTON1
    ...
  .ENDIF
.ENDIF
Nitrino вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
фокус и нажатие кнопок на клавиатуре Juffin Общие вопросы Delphi 6 22.05.2009 10:52
Нажатие кнопок на клавиатуре Orodret Общие вопросы C/C++ 6 16.04.2009 09:06
Нажатие кнопок SeregaIRK Компоненты Delphi 9 18.09.2008 18:13
Отловить нажатие кнопок Sanek_ntsk Паскаль, Turbo Pascal, PascalABC.NET 2 12.03.2008 17:38
Нажатие кнопок мыши zzzzz Win Api 7 02.12.2007 12:33