Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
#1

Блокировка кнопки выхода - C++

25.08.2012, 18:08. Просмотров 871. Ответов 12
Метки нет (Все метки)

А можно как нибудь заблокировать кнопку выхода, чтобы из программы нельзя было выйти таким способом???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2012, 18:08     Блокировка кнопки выхода
Посмотрите здесь:

Запрос выхода - C++
есть такой набросок кода: char s; do{ тело программы cout<<"Хотите продолжить(y/n)?"; cin>>s; }while (s == 'y'); Когда...

Нахождение выхода из лабиринта - C++
Нужна помощь.Может кто-нибудь видел туториал(или здесь,на форуме) по этой теме.Но хотелось бы,чтобы было объяснение.Собственно,любым...

Команда выхода из программы - C++
Вот обясните мне какие команды выхода из программы С++ существуют,чтобы прям если не правильно программу вышибало,а то запутался уже с...

Простенький алгоритм выхода из лабиринта - C++
Нужна помощь в создании алгоритма, вот его суть: Человек попал в лабиринт и что бы выбраться из него, ему надо выбрать правильное...

Ошибка при блокировки выхода - C++
Пытаюсь заблокировать кнопки выход, но возникает ошибка ((( HWND GetConsoleHwnd(void) { #define MY_BUFSIZE 1024 //...

Программа «поиск выхода из лабиринта» - C++
Открывать файл «карту», имя файла передавать как параметр командной строки. Считать, что в карте замкнутых контуров нет. Стенка — «1»....

Точка выхода в вижуал С++ 2010 - C++
В сях я нуб полнейший%-), но быстро усовершенствуюсь, и решил освоить этот язык. Вроде для начала все раздуплил. Создал ЦЛР проэкт и давай...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пaтрик
415 / 390 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
25.08.2012, 18:13     Блокировка кнопки выхода #2
Можно. Смотрите в сторону WinApi. Отлавливаете событие выхода и говорите что выходить не нужно.
MegaMozg
44 / 44 / 1
Регистрация: 19.12.2008
Сообщений: 110
25.08.2012, 18:16     Блокировка кнопки выхода #3
уточните, на чем GUI реализуете.
если WinAPI, то можно так:

C++
1
2
int hMenu=GetSystemMenu(hWnd,false);
if(hMenu) DeleteMenu(hMenu,SC_CLOSE,MF_BYCOMMAND);
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
25.08.2012, 18:19  [ТС]     Блокировка кнопки выхода #4
Цитата Сообщение от MegaMozg Посмотреть сообщение
уточните, на чем GUI реализуете.
Обычное консольное приложение
MegaMozg
44 / 44 / 1
Регистрация: 19.12.2008
Сообщений: 110
25.08.2012, 18:27     Блокировка кнопки выхода #5
опять же, если WinAPI, то находим хэндл нашего консольного окна:

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
HWND GetConsoleHwnd(void)
   {
       #define MY_BUFSIZE 1024 // Размер буфера для заголовка консольного окна.
       HWND hwndFound;         // Это то, что будет возвращено.
       char pszNewWindowTitle[MY_BUFSIZE]; // Уникальный заголовок окна.
       char pszOldWindowTitle[MY_BUFSIZE]; // Изначальный заголовок окна.
 
       // Выбираем текущий заголовок окна.
 
       GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);
 
       // Формируем "уникальный" NewWindowTitle.
 
       wsprintf(pszNewWindowTitle,"%d/%d",
                   GetTickCount(),
                   GetCurrentProcessId());
 
       // Изменяем текущий заголовок окна.
 
       SetConsoleTitle(pszNewWindowTitle);
 
       // даём время заголовку, чтобы измениться.
 
       Sleep(40);
 
       // Ищем NewWindowTitle.
 
       hwndFound=FindWindow(NULL, pszNewWindowTitle);
 
       // Восстанавливаем изначальный заголовок окна.
 
       SetConsoleTitle(pszOldWindowTitle);
 
       return(hwndFound);
   }
и дальше делаем, как я писал выше
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
25.08.2012, 18:42  [ТС]     Блокировка кнопки выхода #6
и дальше делаем, как я писал выше

А для Console Aplication этот способ подойдет???

Добавлено через 9 минут
Мне нужно именно для консольного приложения
MegaMozg
44 / 44 / 1
Регистрация: 19.12.2008
Сообщений: 110
25.08.2012, 18:51     Блокировка кнопки выхода #7
работает

Добавлено через 55 секунд
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
#include <windows.h>
 
HWND GetConsoleHwnd(void)
   {
HWND hwndFound;         // Это то, что будет возвращено.
       TCHAR pszNewWindowTitle[512]; // Уникальный заголовок окна.
       TCHAR pszOldWindowTitle[512]; // Изначальный заголовок окна.
 
       // Выбираем текущий заголовок окна.
 
       GetConsoleTitle(pszOldWindowTitle, 1024);
 
       // Формируем "уникальный" NewWindowTitle.
 
       wsprintf(pszNewWindowTitle,L"%d/%d",
                   GetTickCount(),
                   GetCurrentProcessId());
 
       // Изменяем текущий заголовок окна.
 
       SetConsoleTitle(pszNewWindowTitle);
 
       // даём время заголовку, чтобы измениться.
 
       Sleep(40);
 
       // Ищем NewWindowTitle.
 
       hwndFound=FindWindow(NULL, pszNewWindowTitle);
 
       // Восстанавливаем изначальный заголовок окна.
 
       SetConsoleTitle(pszOldWindowTitle);
 
       return(hwndFound);
   } 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    HMENU hMenu=GetSystemMenu(GetConsoleHwnd(),false);
if(hMenu)
    DeleteMenu(hMenu,SC_CLOSE,MF_BYCOMMAND);
    return 0;
}
Игорь с++
434 / 457 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
25.08.2012, 19:19     Блокировка кнопки выхода #8
Цитата Сообщение от Egor138 Посмотреть сообщение
А для Console Aplication этот способ подойдет???
А ты подумай чем ConsoleAplication отличается от Win32Aplication ?
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
25.08.2012, 20:26  [ТС]     Блокировка кнопки выхода #9
Цитата Сообщение от Игорь с++ Посмотреть сообщение
А ты подумай чем ConsoleAplication отличается от Win32Aplication ?
Ну просто есть же еще win32 project

Добавлено через 2 минуты
Цитата Сообщение от MegaMozg Посмотреть сообщение
работает

Добавлено через 55 секунд
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
#include <windows.h>
 
HWND GetConsoleHwnd(void)
   {
HWND hwndFound;         // Это то, что будет возвращено.
       TCHAR pszNewWindowTitle[512]; // Уникальный заголовок окна.
       TCHAR pszOldWindowTitle[512]; // Изначальный заголовок окна.
 
       // Выбираем текущий заголовок окна.
 
       GetConsoleTitle(pszOldWindowTitle, 1024);
 
       // Формируем "уникальный" NewWindowTitle.
 
       wsprintf(pszNewWindowTitle,L"%d/%d",
                   GetTickCount(),
                   GetCurrentProcessId());
 
       // Изменяем текущий заголовок окна.
 
       SetConsoleTitle(pszNewWindowTitle);
 
       // даём время заголовку, чтобы измениться.
 
       Sleep(40);
 
       // Ищем NewWindowTitle.
 
       hwndFound=FindWindow(NULL, pszNewWindowTitle);
 
       // Восстанавливаем изначальный заголовок окна.
 
       SetConsoleTitle(pszOldWindowTitle);
 
       return(hwndFound);
   } 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    HMENU hMenu=GetSystemMenu(GetConsoleHwnd(),false);
if(hMenu)
    DeleteMenu(hMenu,SC_CLOSE,MF_BYCOMMAND);
    return 0;
}

Большое спасибо. Я подобным способом могу убрать рядом стоящие кнопки - развернуть свернуть ???
MegaMozg
44 / 44 / 1
Регистрация: 19.12.2008
Сообщений: 110
25.08.2012, 21:18     Блокировка кнопки выхода #10
Цитата Сообщение от Egor138 Посмотреть сообщение
Большое спасибо. Я подобным способом могу убрать рядом стоящие кнопки - развернуть свернуть ???
да, можете
C++
1
2
3
4
5
6
if(hMenu)
{
    DeleteMenu(hMenu,SC_CLOSE,MF_BYCOMMAND);
    DeleteMenu(hMenu,SC_MAXIMIZE,MF_BYCOMMAND);
    DeleteMenu(hMenu,SC_MINIMIZE,MF_BYCOMMAND);
}
на вид кнопки будут активны, но действия выполнять не будут
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
25.08.2012, 21:34  [ТС]     Блокировка кнопки выхода #11
Цитата Сообщение от MegaMozg Посмотреть сообщение
да, можете
C++
1
2
3
4
5
6
if(hMenu)
{
    DeleteMenu(hMenu,SC_CLOSE,MF_BYCOMMAND);
    DeleteMenu(hMenu,SC_MAXIMIZE,MF_BYCOMMAND);
    DeleteMenu(hMenu,SC_MINIMIZE,MF_BYCOMMAND);
}
на вид кнопки будут активны, но действия выполнять не будут
Огромное вам спасибо)
Рыжий Лис
Просто Лис
269 / 216 / 57
Регистрация: 17.05.2012
Сообщений: 878
Записей в блоге: 4
27.08.2012, 15:30     Блокировка кнопки выхода #12
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
#include <windows.h>
 
HWND GetConsoleHwnd(void)
{ HWND hwndFound;         // Это то, что будет возвращено.
  TCHAR pszNewWindowTitle[512]; // Уникальный заголовок окна.
  TCHAR pszOldWindowTitle[512]; // Изначальный заголовок окна.
       // Выбираем текущий заголовок окна.
  GetConsoleTitle(pszOldWindowTitle, 1024);
       // Формируем "уникальный" NewWindowTitle.
 
       wsprintf(pszNewWindowTitle,L"%d/%d",
                   GetTickCount(),
                   GetCurrentProcessId());
 
       // Изменяем текущий заголовок окна.
       SetConsoleTitle(pszNewWindowTitle);
       // даём время заголовку, чтобы измениться.
       Sleep(40);
       // Ищем NewWindowTitle.
       hwndFound=FindWindow(NULL, pszNewWindowTitle);
       // Восстанавливаем изначальный заголовок окна.
       SetConsoleTitle(pszOldWindowTitle);
       return(hwndFound);
}
 
int main()
{ HMENU hMenu=GetSystemMenu(GetConsoleHwnd(),false);
  if(hMenu)
    DeleteMenu(hMenu,SC_CLOSE,MF_BYCOMMAND);
  return 0;
}
Не работает. Пишет ошибку
Код
052.cpp:13: error: cannot convert 'const wchar_t*' to 'const CHAR*' for argument '2' to 'int wsprintfA(CHAR*, const CHAR*, ...)'
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2012, 15:41     Блокировка кнопки выхода
Еще ссылки по теме:

Исправить поиск выхода из лабиринта - C++
Есть программа поиска выхода из лабиринта: #include &lt;stdio.h&gt; #include &lt;io.h&gt; #include &lt;iostream&gt; using namespace std; ...

Ошибка после выхода из программы - C++
Всем доброго времени суток! Помогите, плиз, решить проблему!!! Есть программа, в которой у меня динамический массив, и я хочу добавить в...

Ошибка после выхода из программы - C++
Здравствуйте, написал такой код #pragma once #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;Windows.h&gt; using namespace...

указатель не меняется после выхода из ф-ции - C++
void changePionter(char *p) { p=NULL; } int main() { char u='F'; char *p= &amp;u; changePionter(p); // *p=='F'; // a надо...

Отлов выхода строки за рамки памяти - C++
Здравствуйте, есть программа, в которой иногда возникает ошибка если строка очень большая мне надо получить эту строку, пытаюсь сделать с...


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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,738
27.08.2012, 15:41     Блокировка кнопки выхода #13
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
error: cannot convert 'const wchar_t*' to 'const CHAR*' for argument '2' to 'int wsprintfA(CHAR*, const CHAR*, ...)'
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
L"%d/%d",
а нахрена ты не unicode функцию unicode стороку передаешь???
убери L
Yandex
Объявления
27.08.2012, 15:41     Блокировка кнопки выхода
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru