Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/170: Рейтинг темы: голосов - 170, средняя оценка - 4.67
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30

Как запретить сворачивание окна приложения при нажатии кнопки "свернуть все окна"

06.05.2012, 22:50. Показов 36095. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Что происходит при нажатии этой кнопки в плане сообщениий, и как их перехватить и игнорировать,что бы окно не сворачивалось?
Чем это событие отличается от обычного сворачивания окна через кнопку свернуть ?
Календарик на рабочий стол в C++/WinAPI
Изображения
 
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.05.2012, 22:50
Ответы с готовыми решениями:

Предотвратить сворачивание окна по нажатию кнопки Windows «Свернуть все окна»
Здравствуйте, пишу что то вроде гаджета на c# wpf, и возник вопрос: можно ли как нибудь предотвратить сворачивание окна при нажатии...

При нажатии кнопки закрытия окна, оно должно сворачиваться, а при нажатии на сворачивание - закрываться
привет всем)) задача такая: при нажатии кнопки закрытия окна, оно должно сворачиваться, а при нажатии на сворачивание - закрываться)) с...

Как запретить сворачиваться окну при нажатии кнопки "свернуть все окна"?
Как запретить сворачиваться окну при нажатии кнопки "свернуть все окна", или отловить событие сворачивания и развернуться?

40
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
07.05.2012, 01:16
Методом научного тыка выяснил - в программе отслеживаю сворачивание окна , всё нормально , но когда нажимаеш на "Свернуть все окна" программа этого не отслеживает и не говорит , что её свернули ( возможно я где то накосячил ) , попробовал , как то это обойти , получилось правда криво , но работает ,вот код -
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
#include <windows.h>
 
/*  Declare Windows procedure  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
 
/*  Make the class name into a global variable  */
char szClassName[ ] = "WindowsApp";
 
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)
 
{
    HWND hwnd;               /* This is the handle for our window */
    MSG messages;            /* Here messages to the application are saved */
    WNDCLASSEX wincl;        /* Data structure for the windowclass */
 
    /* The Window structure */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
    wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
    wincl.cbSize = sizeof (WNDCLASSEX);
 
    /* Use default icon and mouse-pointer */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* No menu */
    wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
    wincl.cbWndExtra = 0;                      /* structure or the window instance */
    /* Use Windows's default color as the background of the window */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
 
    /* Register the window class, and if it fails quit the program */
    if (!RegisterClassEx (&wincl))
        return 0;
 
    /* The class is registered, let's create the program*/
    hwnd = CreateWindowEx (
           0,                   /* Extended possibilites for variation */
           szClassName,         /* Classname */
           "Windows App",       /* Title Text */
           WS_OVERLAPPEDWINDOW, /* default window */
           CW_USEDEFAULT,       /* Windows decides the position */
           CW_USEDEFAULT,       /* where the window ends up on the screen */
           544,                 /* The programs width */
           375,                 /* and height in pixels */
           HWND_DESKTOP,        /* The window is a child-window to desktop */
           NULL,                /* No menu */
           hThisInstance,       /* Program Instance handler */
           NULL                 /* No Window Creation data */
           );
 
    /* Make the window visible on the screen */
    ShowWindow (hwnd, nFunsterStil);
 
    /* Run the message loop. It will run until GetMessage() returns 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Translate virtual-key messages into character messages */
        TranslateMessage(&messages);
        /* Send message to WindowProcedure */
        DispatchMessage(&messages);
    }
 
    /* The program return-value is 0 - The value that PostQuitMessage() gave */
    return messages.wParam;
}
 
 
/*  This function is called by the Windows function DispatchMessage()  */
 
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* handle the messages */
    {
           
     case WM_SIZE:
     SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 1, 1, SWP_NOMOVE or SWP_NOSIZE);
     ShowWindow(hwnd,SW_SHOWNORMAL);
       break;
              
        case WM_DESTROY:
            PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
            break;
        default:                      /* for messages that we don't deal with */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }
 
    return 0;
}
Что происходит - когда программа запущенна и подводим мышь к "свернуть все окна" наше окно становится в рамке , но стоит нажать на кнопку "Свернуть все окна" окно остаётся на месте.
Есть минусы если ты будеш использовать этот код , но можно пораскинуть мозгами и исправить те или иные недочёты которые будут тебя не устраивать!
Вложения
Тип файла: rar 1.rar (5.2 Кб, 40 просмотров)
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
07.05.2012, 01:20
Да забыл сказать у меня - Windows 7 Ultimate всё работает нормально , но не уверен про Windows Xp , хотя по логике вещей должно и там работать ! Вообщем удачи !!!
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
07.05.2012, 01:26  [ТС]
C++
1
2
3
 case WM_SIZE:
     SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 1, 1, SWP_NOMOVE or SWP_NOSIZE);
     ShowWindow(hwnd,SW_SHOWNORMAL);
Ага а что будет если прользователь будет менять размер окна?
Явно что-то не хорошее...
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
07.05.2012, 01:32
Как я понял в Win вообще все окна сворачиваются при нажатии "Свернуть все окна". Даже те которые нельзя свернуть. Но при попытке развернуть любое окно автоматически разворачиваются все окна которые нельзя свернуть нажатием кнопки "Свернуть". Уф как все запутанно. Но это из личных наблюдений, возможно это не так.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
07.05.2012, 01:33  [ТС]
Форма сходит с ума
Миниатюры
Как запретить сворачивание окна приложения при нажатии кнопки "свернуть все окна"  
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
07.05.2012, 01:35  [ТС]
Toshkarik, но гаджеты не сворачиваются, и почему то если сделать дочерним от Proman это дает какой-то эффект
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
07.05.2012, 01:39
Цитата Сообщение от Avazart Посмотреть сообщение
Ага а что будет если прользователь будет менять размер окна?
Как я понял ты пытаешься сделать , что то типо гаджета , так вот в гаджетах (по крайне мере сколько я видел) изменить размер гаджета можно только с помощью меню, и вообще если ,что то надо мозги напрягать , а не ждать , что тебе полный проект скинет без молейших глюков.Есть какое то направление вперёд,дерзай!!!
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
07.05.2012, 01:39
Гаджеты не являются приложениями.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
07.05.2012, 01:42  [ТС]
Игорь с++, Окно было в правом углу при сворачивани убежало в левый верхний

Добавлено через 1 минуту
Гаджеты не являются приложениями
но у них есть окно как я понимаю
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
07.05.2012, 01:43
Цитата Сообщение от Avazart Посмотреть сообщение
Игорь с++, Окно было в правом углу при сворачивани убежало в левый верхний
Да вы , что а я и незнал!!!А вы код программы смотрели или копирнули и всё.Отследи те где окно ваше и в SetWindowPosition поставте ваши координаты!!!
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
07.05.2012, 01:44
Они являются частью рабочего стола, и кнопочки там другие. За них отвечает одна служба, не помню как называется.
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
07.05.2012, 01:48
Цитата Сообщение от Toshkarik Посмотреть сообщение
Они являются частью рабочего стола
Это вы откуда взяли такую информацию?
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
07.05.2012, 01:50
Логично, что "Гаджеты рабочего стола" являются частью рабочего стола, нет?
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
07.05.2012, 01:52
Цитата Сообщение от Toshkarik Посмотреть сообщение
Логично, что "Гаджеты рабочего стола" являются частью рабочего стола, нет?
Логично,но не правельно
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
07.05.2012, 01:53  [ТС]
Да вы , что а я и незнал!!!А вы код программы смотрели или копирнули и всё.Отследи те где окно ваше и в SetWindowPosition поставте ваши координаты!!!
Я не автор той темы, мне интересен сам процес и как это обойти, а использовал я ваш exe
Намой взглад это явно не решение как и создание таймера автором той темы

Toshkarik,Ну вообще все окна являюся дочерними рабочего стола, а служба называется SideBar

Календарик на рабочий стол в C++/WinAPI - тут скрины

Но стоит заметить что они тоже не всегда адекватно реагируют на эту кнопку- становятся "поверх других окон"
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
07.05.2012, 01:55
Неправильно это не аргумент.

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
"поверх других окон"
Это как, если другие окна сворачиваются?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
07.05.2012, 01:57  [ТС]
После разворачивания, но это происходит не всегда, но возможно я ошибаюсь и это со сворачиванием не связано
0
 Аватар для Игорь с++
500 / 474 / 63
Регистрация: 26.01.2011
Сообщений: 2,033
07.05.2012, 01:59
Цитата Сообщение от Avazart Посмотреть сообщение
Я не автор той темы, мне интересен сам процес и как это обойти, а использовал я ваш exe
так вот если вы посмотрите мой код , то увидите ,что
1)там нет определение где стоит окно
2)оно тупо ставится в точку 0,0
По моему дальше можно самому разворачивать тему(искать координаты и тд).
0
 Аватар для Toshkarik
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
07.05.2012, 01:59
Про гаджеты я имел ввиду, что ими управляет процесс/служба. Они не являются отдельными простыми оконными приложениями.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2012, 01:59
Помогаю со студенческими работами здесь

JS как отслеживать все кнопки и при нажатии на них показывать скрытые окна
Добрый день. Есть страница сайта. На странице есть динамически создаваемое количество кнопок для ответа на комментарий пользователя....

Как запретить сворачивание окна через WinApi?
Как запретить сворачивание окна через WinApi? Нашёл код Delphi как переписать для C#? public procedure WMActivate(var Message:...

Разворачивание / сворачивание окна при нажатии на кнопку
При нажатии на кнопку программа должна разворачивать экран в полный размер, а при втором нажатии брать исходный размер. Делаю вот так, но...

Как запретить кнопки "Свернуть" и "Развернуть" у сторонней программы хэндл окна которой ивестен
Ребята, подскажите пожалуйста, мне нужно запретить кнопки &quot;Свернуть&quot; и &quot;Развернуть&quot; в заголовке окна. procedure...

Запретить сворачивание окна
Пишу виджет для рабочего стола. Как запретить сворачивание окна? Пробовал разворачивать по таймеру, но при отключении...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru