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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2012, 03:26   #1
Sylvos
 
Регистрация: 23.02.2012
Сообщений: 6
По умолчанию Не срабатывает WM_KEYDOWN

Почему не отрабатывает мой case WM_KEYDOWN:? Если нечего не писать в case WM_INITDIALOG: тогда работает.
Код:
#include<Windows.h>
#include"resource.h"
BOOL CALLBACK DlgProc(HWND hwnd,UINT msg,WPARAM wPAram,LPARAM lParam);
INT WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrew,LPSTR lpsz,INT nShow)
{
	return DialogBox(hInst,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DlgProc);
}
HWND hSt[16];
INT ARR[4][4],X=3,Y=3;
BOOL CALLBACK DlgProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
	switch(msg)
	{
		case WM_INITDIALOG:
			TCHAR STR[5];
			for(int i=0,x=0,y=0;i<15;i++,x++)
			{
				wsprintf(STR,L"%d",i+1);
				if(x>3)
				{
					x=0;
					y++;
				}
				ARR[x][y]=i;
				hSt[i]=CreateWindowEx(0,L"STATIC",STR,WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER|SS_CENTERIMAGE,x*50,y*50,50,50,hwnd,NULL,GetModuleHandle(0),NULL);
			}
			ARR[3][3]=0;
			hSt[15]=CreateWindowEx(0,L"STATIC",L"",WS_CHILD|WS_VISIBLE|WS_BORDER|SS_CENTER|SS_CENTERIMAGE,3*50,3*50,50,50,hwnd,NULL,GetModuleHandle(0),NULL);
			return TRUE;
			break;
		case WM_KEYDOWN:
			SetWindowText(hwnd,L"Нажата Клавиша");
		//	if(wParam==VK_UP)
		//	if(wParam==VK_LEFT)
		//	if(wParam==VK_DOWN)
		//	if(wParam==VK_RIGHT)
			return TRUE;
			break;
		case WM_LBUTTONDOWN:
			SetWindowText(hwnd,L"Нажата ЛКМ");
			return TRUE;
			break;
		case WM_CLOSE:
			EndDialog(hwnd,0);
			return TRUE;
			break;
	}
	return FALSE;
}
Вложения
Тип файла: rar Barley-Break.rar (12.5 Кб, 8 просмотров)
Sylvos вне форума Ответить с цитированием
Старый 23.02.2012, 03:38   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Цитата:
MSDN The WM_KEYDOWN message is posted to the window with the keyboard focus...
Скорее всего фокус на одном из дочерних окон.
EUGY вне форума Ответить с цитированием
Старый 23.02.2012, 03:43   #3
Sylvos
 
Регистрация: 23.02.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от EUGY Посмотреть сообщение
Скорее всего фокус на одном из дочерних окон.
Как мне его сменить? Мышкой не получается.
Sylvos вне форума Ответить с цитированием
Старый 23.02.2012, 04:02   #4
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Похоже надо организовать свой цикл GetMessage.
Либо ловить WM_KEYDOWN в дочерних окнах.
EUGY вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не срабатывает mouseenter() shevron JavaScript, Ajax 3 28.02.2012 10:30
SendMessage + WM_KEYDOWN fate Общие вопросы Delphi 6 28.01.2011 23:40
Индекс не срабатывает GenniY БД в Delphi 4 24.11.2009 15:05
Как сразу после WM_KEYDOWN отправить WM_KEYUP ? Someb7 Win Api 2 17.10.2009 21:50
Обработка wm_keydown если на форме присутствует TFrame Oburec Компоненты Delphi 1 13.04.2009 10:01