Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Глобальное модальное окно

273
13 мая 2007 года
3A3-968M
1.2K / / 22.12.2005
Подскажите, как сделать окно модальным относительно всех других окон (например, как Выключение компа)? Задать хэндл 0 (т.е. рабочий стол) для парента модального окна - не спасает.
16K
13 мая 2007 года
Alfá
59 / / 12.01.2007
С помощью DialogBoxParam.
273
14 мая 2007 года
3A3-968M
1.2K / / 22.12.2005
[quote=Alfá;191759]С помощью DialogBoxParam.[/quote]
На код желательно бы взглянуть..
292
16 мая 2007 года
Matush
726 / / 14.01.2004
 
Код:
SetWindowPos(m_hWnd, WND_TOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE| SWP_NOSIZE);
3.3K
17 мая 2007 года
ShadyMan
191 / / 15.07.2006
Цитата: Matush
 
Код:
SetWindowPos(m_hWnd, WND_TOPMOST, NULL, NULL, NULL, NULL, SWP_NOMOVE| SWP_NOSIZE);


Так окно будет всегда располагаться поверх других, но "глобально модальным" оно от этого не станет: фокус всё равно можно будет легко переводить на окна других процессов - как мышью, так и клавишами. Стандартного способа решить эту проблему я не знаю, поэтому предложил бы не только придать окну стиль TOPMOST, но и перехватить хуками мышь и клавиатуру. Возможно, в контексте данной программы требуется ещё и подвесить все прочие процессы...

7.8K
19 мая 2007 года
Monarhia
105 / / 26.06.2006
Цитата: 3A3-968M
Подскажите, как сделать окно модальным относительно всех других окон (например, как Выключение компа)? Задать хэндл 0 (т.е. рабочий стол) для парента модального окна - не спасает.



ты уже знаешь как это сделать... ато мя тоже припекло..:confused:.

28K
22 мая 2007 года
psvpsv
8 / / 22.05.2007
это не поможет ?

http://subscribe.ru/archive/comp.soft.prog.winapifaq/200610/15193233.html
7.8K
22 мая 2007 года
Monarhia
105 / / 26.06.2006
ну мне как бы надо что бы окно моей программы было поверх всех окон и меню пуска...! но в это же время что бы можно было перевести фокус на другое окно, а моя программа при этом поверх всего остаётса...
28K
22 мая 2007 года
psvpsv
8 / / 22.05.2007
Цитата: Monarhia
ну мне как бы надо что бы окно моей программы было поверх всех окон и меню пуска...! но в это же время что бы можно было перевести фокус на другое окно, а моя программа при этом поверх всего остаётса...


Не совсем понятно.Если как в первом посте ты писал окно должно быть как выключение компа, так то пример обычного модального диалога. Диалог от CDialog(), функция DoModal() ( это в MFC ). Сейчас ты описываеш TOPMOST окно как писал ShadyMan.

7.8K
22 мая 2007 года
Monarhia
105 / / 26.06.2006
Ну какбы совсем не ТОПМОСТ, мне надо что бы было поверх всего, а выше топмост стоит любое на котором сейчас фокус и которое тоже ТОПОМСТ...
Цитата:
Если как в первом посте ты писал окно должно быть как выключение компа, так то пример обычного модального диалога. Диалог от CDialog(), функция DoModal() ( это в MFC ).


Ну просто не понял... извините...

28K
22 мая 2007 года
psvpsv
8 / / 22.05.2007
Цитата: Monarhia
Ну какбы совсем не ТОПМОСТ, мне надо что бы было поверх всего, а выше топмост стоит любое на котором сейчас фокус и которое тоже ТОПОМСТ...


Это типо как в VS 6.0 пришпиленое окно (кажется с контролами не помню точно)? Всегда сверху но можно работать и с другими окнами которые под ним?Но это окно всегда сверху, независимо где фокус.Правильно понял?

PS хотя вот перечитал твою мессагу и задумался, или окно которое может быть либо только верхним или вторым, так чтоли.:confused:

7.8K
22 мая 2007 года
Monarhia
105 / / 26.06.2006
Цитата: psvpsv
Это типо как в VS 6.0 пришпиленое окно (кажется с контролами не помню точно)? Всегда сверху но можно работать и с другими окнами которые под ним?Но это окно всегда сверху, независимо где фокус.Правильно понял?



Да ты прав, но она будет ли выше "Меню пуск"? и как реализовать...?

28K
22 мая 2007 года
psvpsv
8 / / 22.05.2007
Цитата: Monarhia
Да ты прав, но она будет ли выше "Меню пуск"? и как реализовать...?


то есть все как выше написано только кнопку пуск нельзя нажать,да?

7.8K
22 мая 2007 года
Monarhia
105 / / 26.06.2006
окно программы должно быть выше всего!!! а нажать можно будет, оно прозрачное;-)
28K
23 мая 2007 года
psvpsv
8 / / 22.05.2007
ой, с таким подходом к проблеме, ищи сам решение.
такое впечатление или чето мутиш (недоговариваешь) или...
7.8K
23 мая 2007 года
Monarhia
105 / / 26.06.2006
всмысли??? вроде всё ясно, просто у меня окно есть, но прозрачное, а на окне прорисовка идёт (только прорисовку видно) и мне надо бы сдлать что бы она была даже поверх "меню пуск"...
3.3K
27 мая 2007 года
ShadyMan
191 / / 15.07.2006
А зачем твоё окно должно быть выше меню Пуск, если оно всё равно над ним прозрачное? Или это для того, чтобы изображение могло налазить на меню, частично его перекрывая? В то же время, ты, очевидно, хочешь чтобы по-прежнему можно было выполнять щелчки на меню Пуск? Так ведь такой подход не прокатит. Рисуй прямо на экране (CreateDC("DISPLAY", NULL, NULL, NULL) и не делай окна вообще. Так все сообщения будут отправляться системой соответствующим приложениям и твоё изображение останется всегда на виду, поверх всех окон.
7.8K
27 мая 2007 года
Monarhia
105 / / 26.06.2006
о_О а я и не знал что мона рисовать на экране.... пример мона плз как юзать это? мне надо вертикальные и горизонтальные линии...
3.3K
28 мая 2007 года
ShadyMan
191 / / 15.07.2006
Код:
#include <windows.h>

int WINAPI WinMain(HINSTANCE hPrevInstance, HINSTANCE hInstance, LPSTR lpCmdStr, int iShowWnd)
{
 HDC hDC=CreateDC("DISPLAY", NULL, NULL, NULL);//Создаём DC на экран
 HPEN hPen=CreatePen(PS_SOLID, 10, 0xff00);    //Создаём перо зелёного цвета шириной в 10 точек
 SelectObject(hDC, hPen);                      //Выбираем его в DC
 MoveToEx(hDC, 30, 100, NULL);                 //Устанавливаем начальную позицию, откуда начинается прорисовка
 LineTo(hDC, 30, 600);                         //Рисуем линию
 DeleteDC(hDC);                                //Удаляем DC
 return 0;
}

Естественно, прорисовку надо время от вермени обновлять. Лучше всего делать это в нужное время и в нужном месте, для чего необходимо будет установить глобальный хук на сообщения о перепрорисовке.
7.8K
28 мая 2007 года
Monarhia
105 / / 26.06.2006
пасиб)) бум пробывать)

Модераторы не закрывайте плз тему, я уверен что ещё появятса вопросы...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог