Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Расширение функциональности WndProc
Назначением функции WndProc является обработка сообщений, получаемых приложением. Обработка таких сообщений обычно реализуется путем использования функции Switch. Для начала реализуем обработку сообщения WM_PAINT. Приложение получает это сообщение, когда возникает необходимость в обновлении какой-либо области окна приложения. При создании окна данное сообщение передается для указания на необходимость обновления всего окна. При обработке сообщения WM_PAINT сперва необходимо вызвать функцию BeginPaint, а в завершение следует вызвать функцию EndPaint. Между вызовами этих двух функций обрабатывается логика по отображению текста, кнопок и других элементов управления в окне. Данное приложение отображает в окне строку "Hello, World!". Для отображения текста следует использовать функцию TextOut. Обычно приложение обрабатывает множество других сообщений, таких как WM_CREATE и WM_DESTROY. Ниже приведен код простой, но полноценной функции WndProc: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ PAINTSTRUCT ps; HDC hdc; TCHAR greeting[] = _T("Hello, World!"); switch (message) { case WM_PAINT: hdc = BeginPaint(hWnd, &ps); TextOut(hdc, 5, 5, greeting, _tcslen(greeting)); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); break; } return 0;}
Итак, сейчас упрощенно, что же произойдет, если щелкнуть по окну левой кнопкой мыши. 1. Пользователь нажимает левую кнопку мыши в то время когда курсор мыши находится над рабочей областью окна. 2. Windows помещает сообщение WM_LBUTTONDOWN в очередь потока. 3. Цикл обработки сообщения должен вынуть сообщение с помощью функции GetMessage и передать его на обработку функции DispatchMessage. 4. Функция DispatchMessage находит окно, которому предназначено сообщение и помещает сообщение в его очередь. 5. Функция окна обрабатывает сообщение WM_LBUTTONDOWN и возвращает результат. 6. Тело цикла заканчивается, и управление снова передается функции GetMessage для ожидания новых сообщений. Пример рабочего кода для вышеописанного алгоритма можно посмотреть в приложении 1. 3. С чего начать? Переход от Win32 к Win64 Приятная особенность Win64 и процессорной архитектуры x64 заключается в том, что они достаточно сильно отличаются от своих предшественников - как раз настолько, чтобы вызывать интерес, в то же время не требуя основательного переобучения. Хотя мы, предпочитаем считать, будто при переходе на платформу x64 удастся отделаться простой перекомпиляцией своих программ, реальность такова, что нам все равно придется долго возиться с ними в отладчике. И здесь хорошее понимание новой программно-аппаратной платформы будет важным подспорьем. Системы x64 хороши еще и тем, что они - в отличие от систем на основе процессоров Itanium - позволяют использовать либо Win32, либо Win64 на одном компьютере без серьезных потерь в производительности. И несмотря на некоторые, весьма туманные различия между реализациями x64 от Intel и AMD x64-совместимая версия Windows должна работать с любой из них. Вам не понадобятся отдельные сборки Windows для x64-процессоров AMD и Intel. Date: 2015-09-18; view: 401; Нарушение авторских прав |