Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542

MFC, панель в MainFrm с фиксированным положением и размером

11.08.2015, 18:05. Показов 2007. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как в MainFrm воткнуть самую простую панель, которая будет иметь фиксированное положение и размер, ну а содержимое я из ресурсов (диалог) попробую воткнуть?

В проекте MFC по умолчанию для окон используется CDockablePane, однако, эти чудо окна непонятно как зафиксировать, запретить изменять размер и запретить размещать их вне окна.

Пытаюсь использовать вместо CDockablePane класс CPane, после минимальной корректировки (до устранения ошибок компиляции), программа запускается, однако ничего толком не отображается и вообще ломается отображение в области документа(область перестала перерисовываться нормально)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.08.2015, 18:05
Ответы с готовыми решениями:

Textbox с фиксированным положением текста
нужно реализовать такую штуку. на форму выводится текст(содержащийся в компоненте). мне нужно чтобы при растягивании формы, текст...

файл с фиксированным размером на asm
вот что я набросал. помогите создать такой файл. подправьте кто может, либо пишем свои варианты invoke CreateFile,...

Таблица с фиксированным размером ячеек
На странице есть таблица с большим количеством ячеек, в одних немного текста, а в других, наоборот, много. В итоге таблица получается очень...

6
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
12.08.2015, 09:15
http://www.codeproject.com/Art... ckablePane не подойдет тебе
0
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
12.08.2015, 11:42  [ТС]
Цитата Сообщение от Игорь1986 Посмотреть сообщение
http://www.codeproject.com/Articles/...-CDockablePane не подойдет тебе
Цитата Сообщение от klynxe Посмотреть сообщение
В проекте MFC по умолчанию для окон используется CDockablePane, однако, эти чудо окна непонятно как зафиксировать, запретить изменять размер и запретить размещать их вне окна.
.
не подойдет(

Добавлено через 3 минуты
Мне нужен класс более простой чем CDockablePane
0
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
12.08.2015, 12:19
Так может можно вкладками как-то заменить если проще, хотя это не совсем то
0
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
12.08.2015, 14:29  [ТС]
Так, как убрать Slider (CDockablePane) изменения размеров, он всю картину портит?

Добавлено через 4 минуты
Сделал так
C++
1
SetControlBarStyle(AFX_DEFAULT_DOCKING_PANE_STYLE&~AFX_CBRS_CLOSE&~AFX_CBRS_RESIZE&~AFX_CBRS_FLOAT&~AFX_CBRS_AUTOHIDE);
Все бы хорошо, не считая двух минусов
1) если окно висит, оно остается висеть (вне окна я имею ввиду)
2) из-за наличия slider мое окно все равно масштабируется (перетягиванием за него), как его удалить?

Добавлено через 2 минуты
Если в стиль при вызове creat добавить CBRS_SIZE_FIXED, слайдер пропадает, до первого открепления окна, а потом появляется снова и не убирается

Добавлено через 27 минут
1)При вызове контекстного меню на окне, там есть пункты "закрепленное" и "плавающее", какие они функции вызывают?
0
156 / 143 / 62
Регистрация: 08.09.2014
Сообщений: 1,220
12.08.2015, 14:46
Возможно вызвать вот так CBasePane::SetControlBarStyle(AFX_CBRS_R ESIZE|AFX_CBRS_CLOSE);
Так как
AFX_DEFAULT_DOCKING_PANE_STYLE которое у тебя вначале, это комбинация всех стилей что дальше AFX_CBRS_FLOAT, AFX_CBRS_CLOSE, AFX_CBRS_RESIZE и AFX_CBRS_AUTOHIDE и ты их как-то все налепил, попробуй либо 1 вариант, либо добавь этот стиль к 1 варианту
0
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
12.08.2015, 15:44  [ТС]
Цитата Сообщение от Игорь1986 Посмотреть сообщение
Возможно вызвать вот так CBasePane::SetControlBarStyle(AFX_CBRS_R ESIZE|AFX_CBRS_CLOSE);
Как понимаю, тут проблема в обертке при вызове функции DockPane и стили меня тут не спасут(

Добавлено через 44 минуты
Так, разобрался с тем, как автоматически прикрепить (открепить) окно от документа
Прикрепить
C++
1
2
    if(m_wnd.IsFloating())//проверяем плавает ли окно
        m_wnd.DockToRecentPos();//если плавает, закрепляем на форме
так работает менюшка в MFC (файл afxpane.cpp)
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
switch(nMenuResult)
    {
    case idDocking:
        if (IsFloating() || bIsSingleFloatingPane)
        {
            CPaneFrameWnd* pMiniFrame = GetParentMiniFrame();
            if (pMiniFrame != NULL)
            {
                pMiniFrame->OnDockToRecentPos();
            }
        }
        break;
 
    case idFloating:
        {
            BOOL bWasFloated = FALSE;
 
            CBaseTabbedPane* pTabbedBar = DYNAMIC_DOWNCAST(CBaseTabbedPane, IsTabbed() ? GetParentTabbedPane() : this);
 
            if (pTabbedBar != NULL)
            {
                ASSERT_VALID(pTabbedBar);
 
                CMFCBaseTabCtrl* pTabWnd = pTabbedBar->GetUnderlyingWindow();
                if (pTabWnd != NULL)
                {
                    ASSERT_VALID(pTabWnd);
 
                    const int nTabID = pTabWnd->GetActiveTab();
                    CWnd* pWnd = pTabWnd->GetTabWnd(nTabID);
 
                    if (pWnd != NULL && pTabWnd->IsTabDetachable(nTabID))
                    {
                        bWasFloated = pTabbedBar->DetachPane(pWnd, FALSE);
                        if (bWasFloated)
                        {
                            if (pTabWnd->GetTabsNum() > 0 &&
                                pTabWnd->GetVisibleTabsNum() == 0)
                            {
                                pTabbedBar->ShowPane(FALSE, FALSE, FALSE);
                            }
                        }
                    }
                }
            }
 
            if (!bWasFloated && !bIsSingleFloatingPane)
            {
                FloatPane(m_recentDockInfo.m_rectRecentFloatingRect);
            }
        }
        break;
 
    case idAutoHide:
        ToggleAutoHide();
        break;
 
    case idHide:
        OnPressCloseButton();
        break;
 
    case idTabbed:
        if (IsMDITabbed())
        {
            CMDIChildWndEx* pMDIChild = DYNAMIC_DOWNCAST(CMDIChildWndEx, GetParent());
            if (pMDIChild == NULL)
            {
                ASSERT(FALSE);
                return FALSE;
            }
 
            CMDIFrameWndEx* pTabbedFrame = DYNAMIC_DOWNCAST(CMDIFrameWndEx, GetDockSiteFrameWnd());
            if (pTabbedFrame == NULL)
            {
                ASSERT(FALSE);
                return FALSE;
            }
 
            pTabbedFrame->TabbedDocumentToControlBar(pMDIChild);
        }
        else
        {
            ConvertToTabbedDocument();
        }
    }
Добавлено через 9 минут
Осталось запретить изменять размеры...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.08.2015, 15:44
Помогаю со студенческими работами здесь

Динамический символьный массив с не фиксированным размером
char* temp_str = new char; std::cin >> temp_str; std::cout << temp_str; // выводит введенное слово Мне необходимо было создать...

Определение угла между положением стрелки в начале суток и её положением в данный момент
Написать программу. позволяющую определить угол между положением часовой стрелки в начале суток и её положением в h часов m минут s...

Определить угол в градусах между положением часовой стрелки в начале суток и ее положением в h часов
3. Определить угол в градусах между положением часовой стрелки в начале суток и ее положением в h часов, m минут и s секунд.

Определить угол между положением часовой стрелки в начале суток и ее положением в h часов, m минут и s секунд
Определить f – угол (в градусах) между положением часовой стрелки в начале суток и ее положением в h часов, m минут и s секунд...

MFC пропала панель
MFC пропала панель с Editbox end ect. Как ее открыт, не могу найти. VS 2006


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru