Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
25 / 25 / 8
Регистрация: 27.10.2009
Сообщений: 81

Липкие окошки

03.11.2009, 10:52. Показов 3638. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день!
Подскажите как придать окошкам липкости. По этой теме нашел только пример для Delphi http://www.realcoding.net/arti... oshki.html, а как его для C++ Builder'а переписать ума не приложу. Заранее всех благодарю.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.11.2009, 10:52
Ответы с готовыми решениями:

MDI и липкие окошки
Здравствуйте; Пишу на C++ Builder XE; Подскажите, пожалуйста, можно (и можно ли вообще) реализовать такой интерфейс, как,...

Красивые, няшные, прозрачные окошки
как реализовать? вот несколько примеров того, что я хочу ...

IDE: как закрепить и приклеить окошки?
Всем здравствуйте. Привык работать в Visual Studio. Осваиваю Builder. Всё реально происходит быстрее как при компиляции, так и при...

5
 Аватар для oxotnik
1665 / 1134 / 80
Регистрация: 21.08.2008
Сообщений: 4,734
Записей в блоге: 1
03.11.2009, 11:01
см. в примерах к билдеру в папке ${BCB}\Examples\Docking
0
14 / 14 / 1
Регистрация: 18.09.2009
Сообщений: 45
03.11.2009, 13:06
речь о прилипании к краям???
тогда вот, держите:
.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm1::wm_windowposchanging(TMessage &msg)
{
     const int sensitivity = 10; //количество пикселей для прилипания
     RECT rcWorkArea = {0};
 
     if(SystemParametersInfo(SPI_GETWORKAREA, 0, &rcWorkArea, FALSE))
     {
         WINDOWPOS *wp = (WINDOWPOS*)msg.LParam;
 
         if(abs(wp->x - rcWorkArea.left) <= sensitivity)
             wp->x = rcWorkArea.left;
         if(abs(wp->y - rcWorkArea.top) <= sensitivity)
             wp->y = rcWorkArea.top;
         if(abs(wp->cx + wp->x - rcWorkArea.right) <= sensitivity)
            wp->x = rcWorkArea.right - wp->cx;
         if(abs(wp->cy + wp->y - rcWorkArea.bottom) <= sensitivity)
             wp->y = rcWorkArea.bottom - wp->cy;
     }
     TForm::Dispatch(&msg);
}
.h
C++
1
2
3
4
5
6
7
8
...
private:
        void __fastcall wm_windowposchanging(TMessage &msg);
public:
        ...
        BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(WM_WINDOWPOSCHANGING, TMessage, wm_windowposchanging)
        END_MESSAGE_MAP(TForm)
2
Программист TH
 Аватар для DanUnited
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
03.11.2009, 18:29
P.S. А это к какому разделу FAQ относится? К интерфейсу ?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
03.11.2009, 21:24
Для MDI-child'ов почему-то прилипание только к левому и верхнему краям делается, но это в общем фигня. Есть два вопроса:

1. У меня есть много окон одного и того же класса. Если для какого-то конкретного экземпляра окна я НЕ хочу делать прилипание, то для этого экземпляра по сути надо пропустить код внутри if'а, после чего сообщение будет передано без изменений. Так?
2. Теперь я хочу сделать прилипание к другим MDI-child'ам. Как внутри этого метода можно получить список всех MDI-child'ов?

Добавлено через 2 минуты
Цитата Сообщение от oxotnik Посмотреть сообщение
см. в примерах к билдеру в папке ${BCB}\Examples\Docking
Что-то там нифига не прилипает. Более того, даже не прорисовывается при движении (только рамочка двигается)
0
 Аватар для Whatson2
8 / 8 / 1
Регистрация: 06.09.2014
Сообщений: 52
17.04.2015, 11:18
Save.L, если отключить "Отображать содержимое окна при перетаскивании" (на старых машинах), то прилипание рамки (осталось от окошка) не будет. А вот у клиента Steam работает даже тогда
Поэтому, чтобы рамка залипала надо ловить также
C++
1
2
3
4
5
6
case WM_MOVING: {
    RECT rcWorkArea = {0};
    if(SystemParametersInfo(SPI_GETWORKAREA, 0, &rcWorkArea, FALSE)) {
        RECT *wp = (RECT*)Msg.LParam; //собственно рамка
           ....
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.04.2015, 11:18
Помогаю со студенческими работами здесь

окошки
Проблема есть небольшая.Я не хнаю как создавать и работать c виндовскими окнами. напишите только с объяснениями.

Activity окошки
Всем привет, в чем разница между активити окошками. и можете привести примеры приложении. http://i.**********/XyoxzYj.png ...

Унилие окошки
В WinApi содержимое окошок(кнопочки, штрючечки, фигнюлички)выглядит унило(как в Windows 98) .... Как его сделать красивым и...

Всплывающие окошки
Привет всем!! Помогите сделать всплывающие окошки при наведение на объекты карты города=) Кто захочет посмотреть код...киньте свой...

Всплывающие окошки
Добрый день. Коллеги, что-то не сообразить - на чем можно сделать всплывающие окошки с уведомлениями? Толстый клиент.


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru