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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2013, 23:32   #1
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
Вопрос Количество "кликов"

Написать приложение в котором ведется подсчет количества "кликов" левой, правой и средней кнопки мыши. Обновляемую статистику необходимо
выводить в заголовок окна.

Код:
#include <Windows.h>
#include <tchar.h>
//прототип оконной процедуры
LRESULT CALLBACK WindowProc(HWND,UINT,WPARAM,LPARAM);

TCHAR szClassWindow[]=TEXT("Каркасное приложение");

INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,LPSTR lpszCmdLine, 
	int nCmdShow)
{
	
	HWND hWnd;
	MSG lpMsg;
	WNDCLASSEX wcl;
	//1.Определение класса окна
	wcl.cbSize=sizeof(wcl);//размер структуры WNDCLASSEX
	//перерисовать все окно, если изменен размер по горизонтали или по вертикали
	wcl.style=CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;//стиль класса окна
	wcl.lpfnWndProc=WindowProc;
	wcl.cbClsExtra=0;
	wcl.cbWndExtra=0;
	wcl.hInstance=hInst;//дескриптор данного приложения
	//загрузка стандартной иконки
	wcl.hIcon=LoadIcon(NULL, IDI_APPLICATION);
	//загрузка стандартного курсора
	wcl.hCursor=LoadCursor(NULL,IDC_HAND);
	//заполнение окна белым цветом
	wcl.hbrBackground=(HBRUSH) GetStockObject(WHITE_BRUSH);
	wcl.lpszMenuName=NULL;// приложение не содержит меню
	wcl.lpszClassName=szClassWindow;//имя класса окна
	wcl.hIconSm=NULL;//отсутствие маленькой иконки
	//Регистрация имя окна
    if(!RegisterClassEx(&wcl))
		return 0;//при неудачной регистрации выход
	//Создание окна
    //создается окно и переменной hWnd присваивается дескриптор окна
    hWnd=CreateWindowEx(
		0,
		szClassWindow,//имя класса
		TEXT("Каркас приложение Windows"),//
		WS_OVERLAPPEDWINDOW,//
		200,
		200,
		500,
		500,
		NULL,
		NULL,
		hInst,
		NULL);
	//
	ShowWindow(hWnd,nCmdShow);
	UpdateWindow(hWnd);
	while(GetMessage(&lpMsg, NULL, 0, 0))
	{
	TranslateMessage(&lpMsg);
	DispatchMessage(&lpMsg);
	}
	
	return 0;
}

LRESULT CALLBACK WindowProc(HWND hWnd,UINT uMessage, WPARAM wParam,LPARAM lParam)
{
    	switch(uMessage)
	{
        case WM_LBUTTONDOWN:
MessageBox(0,TEXT("Нажата левая кнопка мыши"), TEXT("WM_LBUTTON"), MB_OK|MB_ICONINFORMATION);
break;
        case WM_RBUTTONDOWN:
MessageBox(0,TEXT("нажата правая кнопка мыши"),TEXT("WM_RBUTTON"),MB_OK|MB_ICONINFORMATION);
break;
        case WM_MBUTTONDOWN:
MessageBox(0,TEXT("Нажата средняя кнопка мыши"),TEXT("WM_MBUTTON"), MB_OK|MB_ICONINFORMATION);
break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;	

	default:
		return DefWindowProc(hWnd,uMessage,wParam,lParam);
	}
	return 0;
}
подскажите как вывести в заголовок окна обновляеммую статистику???
mixon-21 вне форума Ответить с цитированием
Старый 30.10.2013, 10:21   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

используй SetWindowText
counter вне форума Ответить с цитированием
Старый 30.10.2013, 10:54   #3
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Я вот в этих ваших це не силён. Функцию написать терпения не хватило. Вот, накурлюкал чего-то. Но работает.

Код:
#include <Windows.h>
#include <tchar.h>
//прототип оконной процедуры
LRESULT CALLBACK WindowProc(HWND,UINT,WPARAM,LPARAM);

TCHAR szClassWindow[]=TEXT("Каркасное приложение");
TCHAR buffer[260];
TCHAR format[]={L"Количество кликов лкм %d, пкм %d, скм %d"};
int lbutton=0;
int rbutton=0;
int mbutton=0;


INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst,LPSTR lpszCmdLine, 
	int nCmdShow)
{
	
	HWND hWnd;
	MSG lpMsg;
	WNDCLASSEX wcl;
	//1.Определение класса окна
	wcl.cbSize=sizeof(wcl);//размер структуры WNDCLASSEX
	//перерисовать все окно, если изменен размер по горизонтали или по вертикали
	wcl.style=CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;//стиль класса окна
	wcl.lpfnWndProc=WindowProc;
	wcl.cbClsExtra=0;
	wcl.cbWndExtra=0;
	wcl.hInstance=hInst;//дескриптор данного приложения
	//загрузка стандартной иконки
	wcl.hIcon=LoadIcon(NULL, IDI_APPLICATION);
	//загрузка стандартного курсора
	wcl.hCursor=LoadCursor(NULL,IDC_ARROW);
	//заполнение окна белым цветом
	wcl.hbrBackground=(HBRUSH) GetStockObject(WHITE_BRUSH);
	wcl.lpszMenuName=NULL;// приложение не содержит меню
	wcl.lpszClassName=szClassWindow;//имя класса окна
	wcl.hIconSm=NULL;//отсутствие маленькой иконки
	//Регистрация имя окна
    if(!RegisterClassEx(&wcl))
		return 0;//при неудачной регистрации выход
	//Создание окна
    //создается окно и переменной hWnd присваивается дескриптор окна
    hWnd=CreateWindowEx(
		0,
		szClassWindow,//имя класса
		TEXT("Каркас приложение Windows"),//
		WS_OVERLAPPEDWINDOW,//
		200,
		200,
		500,
		500,
		NULL,
		NULL,
		hInst,
		NULL);
	//
	ShowWindow(hWnd,nCmdShow);
	UpdateWindow(hWnd);
	while(GetMessage(&lpMsg, NULL, 0, 0))
	{
	TranslateMessage(&lpMsg);
	DispatchMessage(&lpMsg);
	}
	
	return 0;
}

LRESULT CALLBACK WindowProc(HWND hWnd,UINT uMessage, WPARAM wParam,LPARAM lParam)
{
    	switch(uMessage)
	{
        case WM_LBUTTONDOWN:
//MessageBox(0,TEXT("Нажата левая кнопка мыши"), TEXT("WM_LBUTTON"), MB_OK|MB_ICONINFORMATION);
lbutton=lbutton+1;
wsprintf((PWSTR)buffer,(PWSTR)format,lbutton,rbutton,mbutton);
SetWindowText(hWnd,(LPCWSTR)buffer);
break;
        case WM_RBUTTONDOWN:
//MessageBox(0,TEXT("нажата правая кнопка мыши"),TEXT("WM_RBUTTON"),MB_OK|MB_ICONINFORMATION);
rbutton=rbutton+1;
wsprintf((PWSTR)buffer,(PWSTR)format,lbutton,rbutton,mbutton);
SetWindowText(hWnd,(LPCWSTR)buffer);
break;
        case WM_MBUTTONDOWN:
//MessageBox(0,TEXT("Нажата средняя кнопка мыши"),TEXT("WM_MBUTTON"), MB_OK|MB_ICONINFORMATION);
mbutton=mbutton+1;
wsprintf((PWSTR)buffer,(PWSTR)format,lbutton,rbutton,mbutton);
SetWindowText(hWnd,(LPCWSTR)buffer);
break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;	

	default:
		return DefWindowProc(hWnd,uMessage,wParam,lParam);
	}
	return 0;
}
vadimych вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Подсчитать количество букв "й", "ы" и "я", содержащихся в заданной строке. VoltZZZ Помощь студентам 2 01.03.2012 23:39
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04