С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 1
Регистрация: 16.05.2015
Сообщений: 67
1

Получение информации о метрике, устройстве и шрифте

11.11.2015, 23:19. Показов 2605. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет,возникла проблема с последним заданием,не знаю как это сделать.Надеюсь на помощь)

Задание:
Написать, с использованием функций API, программу, которая выводит в окно приложения информацию, получаемую из контекста, об устройстве и метрике:
Информация о метрике: ширину полосы меню, наличие мыши в системе.
Информация об устройстве: действительное цветовое разрешение.
Информация о шрифте: усредненная ширина символа строки и ширина самого широкого символа.
Написать алгоритм закрашивания произвольной области экрана, ограниченной непрерывным контуром(прямоугольник||квадрат). Начало закраски определяется произвольной точкой внутри контура.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include <windows.h>         // подключение библиотеки с функциями API
 
// Глобальные переменные:
HINSTANCE hInst;    // Указатель приложения
LPCTSTR szWindowClass = "QWERTY";
LPCTSTR szTitle = "ПЕРВАЯ ПРОГРАММА";
 
// Предварительное описание функций
 
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
// Основная программа 
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    MSG msg;
 
    // Регистрация класса окна 
    MyRegisterClass(hInstance);
 
    // Создание окна приложения
    if (!InitInstance (hInstance, nCmdShow)) 
    {
        return FALSE;
    }
    // Цикл обработки сообщений
    while (GetMessage(&msg, NULL, 0, 0)) 
    {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
    }
    return msg.wParam;
}
 
//  FUNCTION: MyRegisterClass()
//  Регистрирует класс окна 
 
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex; 
    wcex.cbSize = sizeof(WNDCLASSEX); 
    wcex.style          = CS_HREDRAW | CS_VREDRAW;  // стиль окна
    wcex.lpfnWndProc    = (WNDPROC)WndProc; // оконная процедура
    wcex.cbClsExtra     = 0;                        
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;        // указатель приложения
    wcex.hIcon          = LoadIcon(NULL, IDI_HAND);     // определение иконки
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);    // определение курсора
    wcex.hbrBackground  = GetSysColorBrush(COLOR_WINDOW);   // установка фона
    wcex.lpszMenuName   = NULL;     // определение меню
    wcex.lpszClassName  = szWindowClass;    // имя класса
    wcex.hIconSm        = NULL;
 
    return RegisterClassEx(&wcex); // регистрация класса окна
}
 
// FUNCTION: InitInstance(HANDLE, int)
// Создает окно приложения и сохраняет указатель приложения в переменной hInst
 
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;
 
   hInst = hInstance; // сохраняет указатель приложения в переменной hInst
 
   hWnd=CreateWindow(szWindowClass, // имя класса окна
 szTitle,   // имя приложения
 WS_OVERLAPPEDWINDOW, // стиль окна
 CW_USEDEFAULT, // положение по Х
 CW_USEDEFAULT,     // положение по Y
 CW_USEDEFAULT,    // размер по Х
 CW_USEDEFAULT,    // размер по Y
 NULL// описатель родительского окна
 NULL,       // описатель меню окна
 hInstance,  // указатель приложения
 NULL);     // параметры создания.
 
   if (!hWnd) // Если окно не создалось, функция возвращает FALSE
   {
      return FALSE;
   }
   ShowWindow(hWnd, nCmdShow);      // Показать окно
   UpdateWindow(hWnd);          // Обновить окно
   return TRUE;             //Успешное завершение функции
}
 
//  FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
//  Оконная процедура. Принимает и обрабатывает все сообщения, приходящие в приложение
 
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HBRUSH brush;
    PAINTSTRUCT ps;
    HDC hdc;
    RECT rt;
    TEXTMETRIC tm;
    static int a;
    char buff[100];
 
    switch (message) 
    {
        case WM_CREATE: // Сообщение приходит при создании окна
            hdc=GetDC(hWnd);
            GetTextMetrics(hdc,&tm);
            a=tm.tmAveCharWidth;
            break;
 
        case WM_PAINT:  // Перерисовать окно
 
            hdc = BeginPaint(hWnd, &ps);    // Начать графический вывод
            GetClientRect(hWnd, &rt); // Область окна для рисования
            GetSystemMetrics(SM_CYMENU);
                GetSystemMetrics(SM_CYCAPTION);
                GetSystemMetrics(SM_CXCURSOR);
                GetSystemMetrics(SM_CYCURSOR);
            GetDeviceCaps(hdc,COLORRES);
            TextOut(hdc,600,10,buff,wsprintf(buff,"высота полосы меню %5d",GetSystemMetrics(SM_CYMENU)));
            TextOut(hdc,600,40,buff,wsprintf(buff,"высоту заголовка %5d",GetSystemMetrics(SM_CYCAPTION)));
            TextOut(hdc,600,70,buff,wsprintf(buff,"высота курсора %5d",GetSystemMetrics(SM_CXCURSOR)));
            TextOut(hdc,600,100,buff,wsprintf(buff,"ширина курсора %5d",GetSystemMetrics(SM_CYCURSOR)));
            TextOut(hdc,600,130,buff,wsprintf(buff,"действительное цветовое разрешение %5d",GetDeviceCaps(hdc,COLORRES)));
            brush=CreateHatchBrush(HS_DIAGCROSS,RGB(rand(),rand(),rand()));
            SelectObject(hdc,brush);
            Rectangle(hdc,100,100,200,200);
 
            EndPaint(hWnd, &ps);    // Закончить графический вывод
            
            break;
            case WM_LBUTTONDBLCLK // DOUBLE CLICK
                
                break;
        case WM_DESTROY: // Завершение работы
             PostQuitMessage(0);
            break;
        default: 
// Обработка сообщений, которые не обработаны пользователем
            return DefWindowProc(hWnd, message, wParam, lParam); 
   }
return 0;
}
0
Programming
Эксперт
9485 / 562 / 19
Регистрация: 12.04.2006
Сообщений: 11,671
Блог
11.11.2015, 23:19
Ответы с готовыми решениями:

Получение из контекста информации об устройстве и метрике
Задача звучит так: Извлекать информацию из контекста позволяет функция HDC GetDC( HWND...

Получение информации об устройстве
Как программно добраться до сведений об устройстве, в частности, до имени устройства, названия...

Программа, которая выводит в окно применения информацию об устройстве и метрике
Написать, с использованием функций API, программу, которая выводит в окно применения информацию,...

Получение данных о шрифте с помощью gdi32.dll
Задача состоит в том, чтобы определить, какие символы не прорисовываются при использовании данного...

0
11.11.2015, 23:19
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
11.11.2015, 23:19
Помогаю со студенческими работами здесь

Получение токена на андроид устройстве
Доброго времени суток, Камрады! Переношу готовый механизм синхронизации с гуглдиском из...

Получение списка всех картинок в устройстве
получаю таким методом: public @Nullable List&lt;Photo&gt; getPhotoList() { List&lt;Photo&gt; list =...

Получение информации о ПК
всем привет! Как мне listview получить следующую информацию о ПК: 1. Имя компьютера 2. Имя...

Получение информации об ОС
Есть программа которая показывает следующие функции: 1 Имя компьютера 2 Системная информация 3...

Получение информации о ПК
Всем доброго времени суток! Вопрос - как можно получить информацию о ПК через консольное...

Получение информации из БД
Это мой код...проблема в том, что sql запрос работает, а информацию на страницу не выводит!...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Блоги программистов
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(шес­­­­­­­­­­­­­­­ти­б­и­т­н­ы­й асихронный счётчик с управляющим сигналом заде
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget. . .
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin. Есть ещё регистры,. . .
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
Angular vs React vs Vue.js
BasicMan 03.01.2025
О, друзья-разработчики и просто любопытные читатели! Сегодня мы отправимся в увлекательное путешествие по миру фронтенд-разработки, и первой остановкой станет Angular – этакий строгий немецкий. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru