Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ WinAPI У меня проблема с форматированием переменной в строку https://www.cyberforum.ru/ win-api/ thread2487239.html
У меня вот эта часть кода работает на многобайтовой кодировке TextOut( hdc, 500, cyChar * i, szBuffer, wsprintf( szBuffer, L"%5d", GetSystemMetrics(sysmetrics.iIndex) ) );
C++ WinAPI Перекрытие панели задач окном приложения
Здравствуйте еще раз.~ Возможно ли открыть окно в фуллскрин, так чтобы панель задач была полностью перекрыта окном приложения? Инициализация приложения происходит так: if (!InitInstance (hInstance, nCmdShow)) { return FALSE; }
C++ WinAPI Выгрузка dll из чужого процесса https://www.cyberforum.ru/ win-api/ thread2486989.html
Добрый вечер! Подскажите пожалуйста, как правильно выгрузить подключенную ранее dll из целевого процесса? Подключение делал с помощью функций: HANDLE process = OpenProcess(PROCESS_ALL_ACCESS, false, pid); LPVOID fp = (LPVOID)GetProcAddress(GetModuleHandleA("kernel32.dll"), "LoadLibraryA"); LPVOID alloc = (LPVOID)VirtualAllocEx(process, 0, strlen("mydll.dll"), MEM_RESERVE |...
C++ WinAPI Оптимизация кейлогера https://www.cyberforum.ru/ win-api/ thread2486925.html
Приветствую. Пишу кейлогер и сейчас он написан как большая лапша из if - else if. Очень хочу оптимизировать это дело, но совсем не понимаю как. Как можно получить код клавиши, которая нажата без обхода цикла и без этой самой лапши? Читала, что из wParam после приведения его к структуре (какой именно не помню), можно вытащить vKey и потом отдать это vKey в GetAsyncKeyState() как аргумент. ...
C++ WinAPI Настройка контрола
Как можно сделать кнопку чтобы был виден только текст от нее. И вокруг текста был невидимый бокс при нажатии на него кнопку работала. Дайте идею пж
C++ WinAPI Передача данных между консолью с использованием Pipe https://www.cyberforum.ru/ win-api/ thread2485945.html
Добрый день! Не получается организовать передачу данных между двумя консольными приложениями при использовании буфера с типом wchar_t. Если использую просто char все нормально работает. С клиента отправка вроде как происходит без ошибок и сервер даже получает сообщение, затем отправляет ответ клиенту. Клиент получает сообщение, но дальше при отправке последующих сообщений сервер никак не...
C++ WinAPI Как определить дескриптор кнопки под курсором? https://www.cyberforum.ru/ win-api/ thread2485883.html
Пробовал ChildWindowFromPoint. На кнопку это не работает. Если можно напишите весь код.
C++ WinAPI Почему у меня if не срабатывает?
case WM_MOUSEMOVE: { POINT P; HWND Handle; GetCursorPos(&P); Handle = WindowFromPoint(P); if (Handle == hRandom) { //... //...
C++ WinAPI Как создать прозрачную кнопку с текстом https://www.cyberforum.ru/ win-api/ thread2485691.html
Я хочу создать прозрачную кнопку с текстом и при наведении на прозрачную область кнопка будет менятся. Так вот как правильно сделать прозрачную кнопку winapi или gdi+
C++ WinAPI При добавлении библиотеки gdiplus.h 2000+ ошибок https://www.cyberforum.ru/ win-api/ thread2485633.html
Windows 10 VS 2017 Я просто добавил хэдер и либ и куча ошибок по типу необъявленного идентификатора.
C++ WinAPI Как можно создать в окне "зону" и проверять в ней нажатие и просто наведение на эту "pjye"?
Я собираюсь поместить туда картинку и при наведении мышью на "зону" картинка будет меняться. Я при нажатии в этой зоне будет происходить событие. Его я обработаю в WM_COMMAND. Объясните поподробнее.
C++ WinAPI Как закрасить белую линию между панелью меню и клиентской областью окна? Я пытаюсь добавить в приложение возможность менять цветовые схемы. В частности - для меню. Но внизу меню есть линия, которая не рисует цветом MenuInfo.hbrBack. Если курсор мыши находится над элементами, часть этой линии перерисовывается. Но если я изменю размер окна, линия вернется. А в области меню, где нет пунктов, линия нарисована постоянно. Как я могу навсегда закрасить эту линию? Вот как... https://www.cyberforum.ru/ win-api/ thread2485492.html
3 / 3 / 1
Регистрация: 20.03.2019
Сообщений: 150
0

Мерцания при вертикальной прокрутке - C++ WinAPI - Ответ 13749624

02.08.2019, 11:12. Показов 983. Ответов 2
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
У меня иногда мерцает окно когда я перемещаю вертикальную прокрутку. Со всем остальным проблем ноль. Что можно сделать?
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
#include <windows.h>
#include "sysmets.h"
#include "math.h"
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
    wchar_t szAppName[] = L"SysMets3";
    HWND hwnd;
    MSG msg;
    WNDCLASSEX wndclass;
    wndclass.cbSize = sizeof(wndclass);
    wndclass.style = CS_HREDRAW | CS_VREDRAW;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hInstance = hInstance;
    wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = szAppName;
    wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
    RegisterClassEx(&wndclass);
    hwnd = CreateWindow(
        szAppName,
        L"Get System Metrics No. 3",
        WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL,
        CW_USEDEFAULT, CW_USEDEFAULT,
        775, 500,
        NULL, NULL, hInstance, NULL
    );
    ShowWindow(hwnd, iCmdShow);
    UpdateWindow(hwnd);
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
    static int cxChar, cxCaps, cyChar, cxClient, cyClient, iMaxWidth,
        iVscrollPos, iVscrollMax, iHscrollPos, iHscrollMax;
    wchar_t szBuffer[10];
    HDC hdc;
    int i, x, y, iPaintBeg, iPaintEnd, iVscrollInc, iHscrollInc;
    PAINTSTRUCT ps;
    TEXTMETRIC tm;
    switch (iMsg)
    {
    case WM_CREATE:
        {
            hdc = GetDC(hwnd);
            GetTextMetrics(hdc, &tm);
            cxChar = tm.tmAveCharWidth;
            cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2;
            cyChar = tm.tmHeight + tm.tmExternalLeading;
            ReleaseDC(hwnd, hdc);
            iMaxWidth = 40 * cxChar + 22 * cxCaps;
            return 0;
        }
 
        case WM_SIZE:
            cxClient = LOWORD(lParam);
            cyClient = HIWORD(lParam);
            iVscrollMax = max(0, NUMLINES - cyClient / cyChar);
            iVscrollPos = min(iVscrollPos, iVscrollMax);
            SetScrollRange(hwnd, SB_VERT, 0, iVscrollMax, FALSE);
            SetScrollPos(hwnd, SB_VERT, iVscrollPos, TRUE);
            iHscrollMax = max(0, 2 + (iMaxWidth - cxClient) / cxChar);
            iHscrollPos = min(iHscrollPos, iHscrollMax);
            SetScrollRange(hwnd, SB_HORZ, 0, iHscrollMax, FALSE);
            SetScrollPos(hwnd, SB_HORZ, iHscrollPos, TRUE);
            return 0;
        case WM_VSCROLL:
            switch (LOWORD(wParam))
            {
            case SB_TOP:
                iVscrollInc = -iVscrollPos;
                break;
            case SB_BOTTOM:
                iVscrollInc = iVscrollMax - iVscrollPos;
                break;
            case SB_LINEUP:
                iVscrollInc = -1;
                break;
            case SB_LINEDOWN:
                iVscrollInc = 1;
                break;
            case SB_PAGEUP:
                iVscrollInc = min(-1, -cyClient / cyChar);
                break;
            case SB_PAGEDOWN:
                iVscrollInc = max(1, cyClient / cyChar);
                break;
            case SB_THUMBTRACK:
                iVscrollInc = HIWORD(wParam) - iVscrollPos;
                break;
            default:
                iVscrollInc = 0;
            }
            iVscrollInc = max(
                -iVscrollPos,
                min(iVscrollInc, iVscrollMax - iVscrollPos)
            );
            if (iVscrollInc != 0)
            {
                iVscrollPos += iVscrollInc;
                ScrollWindow(hwnd, 0, -cyChar * iVscrollInc, NULL, NULL);
                SetScrollPos(hwnd, SB_VERT, iVscrollPos, TRUE);
                InvalidateRect(hwnd, NULL, TRUE);
            }
            return 0;
        case WM_HSCROLL:
            switch (LOWORD(wParam))
            {
            case SB_LINEUP:
                iHscrollInc = -1;
                break;
            case SB_LINEDOWN:
                iHscrollInc = 1;
                break;
            case SB_PAGEUP:
                iHscrollInc = -8;
                break;
            case SB_PAGEDOWN:
                iHscrollInc = 8;
                break;
            case SB_THUMBPOSITION:
                iHscrollInc = HIWORD(wParam) - iHscrollPos;
                break;
            default:
                iHscrollInc = 0;
            }
            iHscrollInc = max(
                -iHscrollPos,
                min(iHscrollInc, iHscrollMax - iHscrollPos)
            );
            if (iHscrollInc != 0)
            {
                iHscrollPos += iHscrollInc;
                ScrollWindow(hwnd, -cxChar * iHscrollInc, 0, NULL, NULL);
                SetScrollPos(hwnd, SB_HORZ, iHscrollPos, TRUE);
            }
            return 0;
 
        case WM_PAINT:
        {
            hdc = BeginPaint(hwnd, &ps);
            iPaintBeg = max(0, iVscrollPos);
            iPaintEnd = min(NUMLINES, (int)floor(cyClient / cyChar) + iVscrollPos);
            for (i = 0; i < iPaintEnd; i++)
            {
                x = cxChar * (1 - iHscrollPos);
                y = cyChar * (0 - iVscrollPos + i);
                TextOut(
                    hdc, x, y,
                    sysmetrics[i].szLabel,
                    lstrlen(sysmetrics[i].szLabel)
                );
                TextOut(
                    hdc, x + 22 * cxCaps, y,
                    sysmetrics[i].szDesc,
                    lstrlen(sysmetrics[i].szDesc)
                );
                SetTextAlign(hdc, TA_RIGHT | TA_TOP);
                TextOut(
                    hdc, x + 22 * cxCaps + 40 * cxChar, y,
                    szBuffer,
                    wsprintf(
                        szBuffer, L"%5d",
                        GetSystemMetrics(sysmetrics[i].iIndex)
                    )
                );
                SetTextAlign(hdc, TA_LEFT | TA_TOP);
            }
            EndPaint(hwnd, &ps);
            return 0;
        }
 
        case WM_DESTROY:
        {
            PostQuitMessage(0);
            return 0;
        }
    }
    return DefWindowProc(hwnd, iMsg, wParam, lParam);
}
Думаю проблема в 115 строке.

Вернуться к обсуждению:
Мерцания при вертикальной прокрутке C++ WinAPI
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.08.2019, 11:12
Готовые ответы и решения:

Фон статичным и по зуму и по прокрутке вертикальной
добрый день народ. вопрос тут такой: надо 1 что бы фоновый ресунок стоял на месте 2 при зуме он...

Мерцания при анимации
Как убрать мерцания при анимации движение объекта курсорными стрелками?

Мерцания при воспроизведении gif
Здравствуйте! Подскажите пожалуйста, как избавиться от мерцания при воспроизведении gif?...

Мерцания при движении TPanel
Здраствуйте. При движении панели на которой расположена image с картинкой происходит мерцания...

2
02.08.2019, 11:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.08.2019, 11:12
Помогаю со студенческими работами здесь

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

Устранение эффекта мерцания при анимации
Здравствуйте! Разбираюсь с анимацией в Lazarus. Сделал простенький пример (прикреплён) - движение...

Как избежать мерцания при перерисовке Panel
Необходимо чтобы после того, как загнал все точки в список (List), их отрисовало на panel. Причем...

Как избавиться от мерцания при выводе массива?
вообщем есть массив 20x50. и его нужно часто выводит на консоль и происходит мерцание. что можно...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru