Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
41 / 39 / 7
Регистрация: 21.05.2012
Сообщений: 198
1

Остановка сообщений окна при клике по его title bar

06.06.2017, 13:02. Показов 674. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.

Вот простецкий код, который использует таймер и обработчик сообщения WM_TIMER (для простоты) в котором выводится просто значение некоторого стетчика каждые 100 миллисекунд:

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
#include <windows.h>
#include <crtdbg.h>
 
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
 
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, PWSTR pCmdLine, int nCmdShow)
{
    // Register the window class.
    const wchar_t CLASS_NAME[]  = L"Sample Window Class";
    WNDCLASS wc = { };
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.lpszClassName = CLASS_NAME;
    ::RegisterClass(&wc);
 
    // Create the window.
    const HWND hwnd = ::CreateWindowEx(
                0, // Optional window styles.
                CLASS_NAME, // Window class
                L"Hello Qt bug", // Window text
                WS_OVERLAPPEDWINDOW, // Window style
                CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, // Size and position
                nullptr, // Parent window
                nullptr, // Menu
                hInstance, // Instance handle
                nullptr // Additional application data
                );
 
    if (hwnd == nullptr)
        return 0;
 
    ::ShowWindow(hwnd, nCmdShow);
 
    // Setup timer
    const auto timerId = ::SetTimer(
                hwnd, // handle to main window
                0, // timer identifier
                100, // 100-millisecond interval
                (TIMERPROC)nullptr // no timer callback
                );
 
    // Run the message loop.
    MSG msg = { };
    while (::GetMessage(&msg, nullptr, 0, 0)) {
        ::TranslateMessage(&msg);
        ::DispatchMessage(&msg);
    }
 
    ::KillTimer(hwnd, timerId);
    return 0;
}
 
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    static int counter = 0;
 
    switch (uMsg) {
    case WM_DESTROY:
        ::PostQuitMessage(0);
        break;
    case WM_TIMER: {
        _RPT1(0, "%d\n", ++counter);
    }
        break;
    default:
        return ::DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
    return 0;
}
Так вот, если кликнуть правой клавишей мыши по titlebar окна и удерживать это, то все сообщения останавливаются. А если левой - то останавливаются на некоторое время, а потом продолжаются опять.

Так вот, вопросы:

* Это нормальное поведение?
* Где можно про это почитать?
* Есть ли возможность обойти это?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.06.2017, 13:02
Ответы с готовыми решениями:

Как добавить свою кнопку в title-bar ЧУЖОГО окна?
Как добавить свою кнопку в title-bar ЧУЖОГО окна? Насколько я понял, полазив по Сети, это...

Как запретить закрытие модального окна при клике за его пределами?
Html окна: &lt;!-- Само окно --&gt; &lt;div id=&quot;boxes&quot;&gt; &lt;div id=&quot;dialog&quot; class=&quot;window&quot;&gt; ...

Остановка работы слайдера при клике
Установила в карточке товара слайдер owl carousel, подскажите, пожалуйста, что надо дописать в...

Остановка отсчета времени при клике на часы
Есть код, надо чтобы при нажатии часы не прятались, а просто останавливались. И если возможно то...

2
Заблокирован
06.06.2017, 13:14 2
Привет.

Нормально. Не нормально если, создан дополнительный поток, идет работа и - такое.
0
41 / 39 / 7
Регистрация: 21.05.2012
Сообщений: 198
06.06.2017, 13:34  [ТС] 3
Ах, сорри, кажется нашел: https://stackoverflow.com/ques... r-menu-but
0
06.06.2017, 13:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2017, 13:34
Помогаю со студенческими работами здесь

GDI остановка отрисовки при клике на форме
Существует форма Form1, на ней джедаем отрисовывается некий набор картинок по таймеру, все...

Как написать скрипт для скрытия модального окна при клике вне окна(на боди) ?
У меня модальное окно вообще даже не открывается при нажатии на кнопку,потому что у меня так...

Изменение Title Bar
Не нашел в интернете хорошего мануала, как можно изменить внешний вид стандартного title bar в...

Приложение без Title bar
Делаю так (як нагуглил): super.onCreate(savedInstanceState);...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru