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

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

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

Всем добрый день!
Подскажите как придать окошкам липкости. По этой теме нашел только пример для Delphi http://www.realcoding.net/arti... oshki.html, а как его для C++ Builder'а переписать ума не приложу. Заранее всех благодарю.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2009, 10:52
Ответы с готовыми решениями:

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

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

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

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

5
1664 / 1133 / 80
Регистрация: 21.08.2008
Сообщений: 4,725
Записей в блоге: 1
03.11.2009, 11:01 2
см. в примерах к билдеру в папке ${BCB}\Examples\Docking
0
14 / 14 / 1
Регистрация: 18.09.2009
Сообщений: 45
03.11.2009, 13:06 3
речь о прилипании к краям???
тогда вот, держите:
.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
290 / 145 / 12
Регистрация: 06.01.2009
Сообщений: 537
03.11.2009, 18:29 4
P.S. А это к какому разделу FAQ относится? К интерфейсу ?
0
Evg
Эксперт CАвтор FAQ
21204 / 8220 / 633
Регистрация: 30.03.2009
Сообщений: 22,538
Записей в блоге: 30
03.11.2009, 21:24 5
Для MDI-child'ов почему-то прилипание только к левому и верхнему краям делается, но это в общем фигня. Есть два вопроса:

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

Добавлено через 2 минуты
Цитата Сообщение от oxotnik Посмотреть сообщение
см. в примерах к билдеру в папке ${BCB}\Examples\Docking
Что-то там нифига не прилипает. Более того, даже не прорисовывается при движении (только рамочка двигается)
0
8 / 8 / 1
Регистрация: 06.09.2014
Сообщений: 52
17.04.2015, 11:18 6
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.04.2015, 11:18

Activity окошки
Всем привет, в чем разница между активити окошками. и можете привести примеры приложении. ...

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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