Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как создать окно при помощи CWnd.Create(...)?  (Прочитано 17057 раз)
0 Пользователей и 1 Гость смотрят эту тему.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« : 26-08-2003 10:30 » 

Есть ActivX  в его сотаве был один вид образованый от CWnd.
Изначально он отображался в область окна (как вид)
Код:
if (!ViewLeg->Create(NULL, NULL, AFX_WS_DEFAULT_VIEW ,
CRect(0, 0, 150, 200), this, AFX_IDW_PANE_FIRST, NULL))

Теперь мне нужно  отобразить его как отдельное окошко которое можно двигать(что то типа ToolsWindow).

Проблема в том что сделать окно которое перемешается внутри родительского окна получается, а чтоб его можно было тасать над всем десктопом нет.

Кто знает подскажите какие стили нужно для этого установить.
« Последнее редактирование: 19-11-2007 17:41 от Алексей1153++ » Записан

Да да нет нет все остальное от лукавого.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #1 : 26-08-2003 10:52 » 

Окно не должно быть внутренним а должно быить просто CHILD...
Боюсь что стандартные стили (не ActiveX) здесь не подойдут...

Я обычно создавал око отдельно - не как наследованное и объявлял его CHILD_WINDOW от верхнего вот и все, а то что ты создал это мульти документное как я понимаю, и его наружу не вытащить...
Хотя мож я и ошибаюсь.
Записан

А птичку нашу прошу не обижать!!!
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 26-08-2003 10:59 » 

Цитата

Я обычно создавал око отдельно - не как наследованное и объявлял его CHILD_WINDOW

Это как?
Записан

Да да нет нет все остальное от лукавого.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #3 : 26-08-2003 11:07 » 

В обычном API делается прмерно так.
Создается отдельный файл, в котором создается отдельная функция для обработки сообщений нового окна, в CreateWindow() делается обычное окно, которое не привязывается к месту на старом окне а открывается отдельно, правда это было так давно , что я уже не помню...

А в нем я указывал тип стиля CHILD...
Боюсь что я могу говорить об окне которое будет опять внутри старого....

Не понмю я  Жаль
Записан

А птичку нашу прошу не обижать!!!
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 26-08-2003 11:31 » 

Упрощаем вопрос .
Как получить хендел десктопа?
Или как имея хендел одного из окон приложения получить хендл главного окна?
Записан

Да да нет нет все остальное от лукавого.
Serega
Гость
« Ответ #5 : 26-08-2003 12:03 » 

static CWnd* PASCAL CWnd::GetDesktopWindow( );

так что код примерно такой

HWND Desktop_hWnd = GetDesktopWindow( )->m_hWnd;

MSDN великая штука !!!
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #6 : 26-08-2003 12:14 » 

Опоздал с ответом Улыбаюсь я...
Записан

А птичку нашу прошу не обижать!!!
Джон
Гость
« Ответ #7 : 26-08-2003 13:36 » 

Попробуй стиль WS_EX_TOOLWINDOW - когда-то игрался - клёвая штука.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 27-08-2003 04:24 » 

Цитата

Попробуй стиль WS_EX_TOOLWINDOW - когда-то игрался - клёвая штука.

Попробовал перманентно вылетает в ошибку.
Записан

Да да нет нет все остальное от лукавого.
Джон
Гость
« Ответ #9 : 27-08-2003 08:21 » 

Хм... Если честно - то дело было так: Полгода назад надо было мне одно окошко (диалог) в таскбаре не показывать я его как Modeless делал. Хотелось попроще.  Ну и наткнулся на этот совет. Поигрался с ним - всё получалось... К сожалению сырцов не нащёл сразу. Но идея была верная. Короче у тебя получается окно стиля тулбара, которое не показывается в таскбаре и может располагаться на экране где угодно. Ну как нормальный тулбар. Только его нельзя комбинировать с  Minimize стилем .... Ну вроде всё из головы.... А! ещё его надо с CreateEx юзать
Короче - если у тебя проблемма ещё висит - напиши - покапаюсь. Помню только только, что всё работало без проблемм и выкрутасов
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 27-08-2003 08:37 » 

Цитата

Modeless

Что то не вижу я такого стиля ни в обычных ни в Ех.
Записан

Да да нет нет все остальное от лукавого.
Serega
Гость
« Ответ #11 : 27-08-2003 08:42 » 

это не стиль
диалог можно создать как модальный - пока не закроешь остальные окна не получают фокуса, обычно так
Код:
CMyDialog dlg;
dlg.DoModal();
или как не модальный, примерно так
Код:
CMyDialog* dlg = new CMyDialog();
dlg->Create(...);
dlg->ShowWindow(SW_SHOW);
« Последнее редактирование: 19-11-2007 17:42 от Алексей1153++ » Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 27-08-2003 09:02 » 

Цитата

Код:

CMyDialog* dlg = new CMyDialog();
dlg->Create(...);
dlg->ShowWindow(SW_SHOW);

1) уменя не CDialog а CWnd
2) Я так и делаю, но уменя это часть ActivX и врезультате окошко таскается только по активыксу заезжает за его край как за край экрана.
Записан

Да да нет нет все остальное от лукавого.
Serega
Гость
« Ответ #13 : 27-08-2003 09:06 » 

в Create в качестве парента укажи рабочий стол
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 27-08-2003 09:27 » 

Спасибо с этим вроде разобрался.
Записан

Да да нет нет все остальное от лукавого.
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #15 : 27-08-2003 10:07 » 

По моему если в CreateWindow в качестве окна родителя указать NULL то им как раз и будет DeskTop.... это я так.... чтобы не напрягаться...

ААААААААА  MFC.... тогда прошу прощения.... чего - то сходу не разглядел!!!
Записан

С уважением Lapulya
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines