Класс CSplitterWnd
Предоставляет функциональные возможности окна-разделителя, то есть окна, содержащего несколько областей.
Синтаксис
class CSplitterWnd : public CWnd
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CSplitterWnd::CSplitterWnd |
Вызов для создания CSplitterWnd объекта. |
Открытые методы
Имя | Описание |
---|---|
CSplitterWnd::ActivateNext |
Выполняет команду "Следующая область" или "Предыдущая область". |
CSplitterWnd::CanActivateNext |
Проверяет, возможна ли команда "Следующая область" или "Предыдущая область". |
CSplitterWnd::Create |
Вызовите создание динамического окна разделения и присоединение его к объекту CSplitterWnd . |
CSplitterWnd::CreateScrollBarCtrl |
Создает общий элемент управления полосой прокрутки. |
CSplitterWnd::CreateStatic |
Вызовите создание статического окна разбиения и присоединение его к объекту CSplitterWnd . |
CSplitterWnd::CreateView |
Вызов для создания области в окне разбиения. |
CSplitterWnd::DeleteColumn |
Удаляет столбец из окна разделения. |
CSplitterWnd::DeleteRow |
Удаляет строку из окна разделения. |
CSplitterWnd::DeleteView |
Удаляет представление из окна разделения. |
CSplitterWnd::DoKeyboardSplit |
Выполняет команду разделения клавиатуры, обычно "Разделение окна". |
CSplitterWnd::DoScroll |
Выполняет синхронизированную прокрутку разделенных окон. |
CSplitterWnd::DoScrollBy |
Прокрутка разделенных окон по заданному количеству пикселей. |
CSplitterWnd::GetActivePane |
Определяет активную панель из фокуса или активного представления в кадре. |
CSplitterWnd::GetColumnCount |
Возвращает текущее число столбцов панели. |
CSplitterWnd::GetColumnInfo |
Возвращает сведения о указанном столбце. |
CSplitterWnd::GetPane |
Возвращает область в указанной строке и столбце. |
CSplitterWnd::GetRowCount |
Возвращает текущее число строк панели. |
CSplitterWnd::GetRowInfo |
Возвращает сведения о указанной строке. |
CSplitterWnd::GetScrollStyle |
Возвращает общий стиль полосы прокрутки. |
CSplitterWnd::IdFromRowCol |
Возвращает идентификатор дочернего окна области в указанной строке и столбце. |
CSplitterWnd::IsChildPane |
Вызов, чтобы определить, является ли окно дочерним областью этого окна разделения. |
CSplitterWnd::IsTracking |
Определяет, перемещается ли в настоящее время полоса разделения. |
CSplitterWnd::RecalcLayout |
Вызов повторного воспроизведения окна разбиения после настройки размера строки или столбца. |
CSplitterWnd::SetActivePane |
Задает область, чтобы она была активной в кадре. |
CSplitterWnd::SetColumnInfo |
Вызов, чтобы задать указанные сведения о столбце. |
CSplitterWnd::SetRowInfo |
Вызов, чтобы задать указанные сведения о строке. |
CSplitterWnd::SetScrollStyle |
Задает новый стиль полосы прокрутки для поддержки общей полосы прокрутки окна разделения. |
CSplitterWnd::SplitColumn |
Указывает, где окно кадра разбивается по вертикали. |
CSplitterWnd::SplitRow |
Указывает, где окно фрейма разбивается по горизонтали. |
Защищенные методы
Имя | Описание |
---|---|
CSplitterWnd::OnDraw |
Вызывается платформой для рисования окна разбиения. |
CSplitterWnd::OnDrawSplitter |
Отрисовывает изображение разделенного окна. |
CSplitterWnd::OnInvertTracker |
Отрисовывает изображение разделенного окна таким же размером и фигурой, что и окно фрейма. |
Замечания
Область обычно является объектом, производным от CView
конкретного приложения, но это может быть любой CWnd
объект, имеющий соответствующий идентификатор дочернего окна.
Объект CSplitterWnd
обычно внедряется в родительский CFrameWnd
объект или CMDIChildWnd
объект. CSplitterWnd
Создайте объект, выполнив следующие действия:
Внедрение переменной-члена в родительский
CSplitterWnd
кадр.Переопределите функцию-член родительского кадра
CFrameWnd::OnCreateClient
.В переопределенной
OnCreateClient
области вызовитеCreate
функцию илиCreateStatic
функцию-членCSplitterWnd
.
Вызовите функцию-член, Create
чтобы создать динамическое окно разделения. Динамическое окно разделения обычно используется для создания и прокрутки ряда отдельных панелей или представлений одного документа. Платформа автоматически создает начальную панель для разбиения; затем платформа создает, изменяет размер и удаляет дополнительные панели, так как пользователь управляет элементами управления окна разделения.
При вызове Create
необходимо указать минимальную высоту строки и ширину столбца, которая определяет, когда панели слишком малы для полного отображения. После вызова Create
можно настроить эти минимумы, вызвав SetColumnInfo
функции-члены и SetRowInfo
функции-члены.
Также используйте SetColumnInfo
SetRowInfo
функции-члены, чтобы задать "идеальную" ширину для столбца и "идеальной" высоты для строки. Когда платформа отображает окно разбиения, сначала отображает родительский кадр, а затем окно разделения. Затем платформа размещает панели в столбцах и строках в соответствии с их идеальными измерениями, работая с верхнего левого угла в правом нижнем углу клиентской области окна разбиения.
Все панели в окне динамического разделения должны иметь один и тот же класс. Знакомые приложения, поддерживающие динамические окна разделения, включают Microsoft Word и Microsoft Excel.
Используйте функцию-член для CreateStatic
создания окна статического разбиения. Пользователь может изменить только размер панелей в окне статического разбиения, а не их число или порядок.
При создании статического разбиения необходимо специально создать все области статического разбиения. Убедитесь, что все панели создаются до возврата функции-члена родительского кадра OnCreateClient
, или платформа не отображает окно правильно.
Функция-член CreateStatic
автоматически инициализирует статический разделитель с минимальной высотой строки и шириной столбца 0. После вызова Create
настройте эти минимумы, вызвав SetColumnInfo
функции-члены и SetRowInfo
функции-члены. Также используйте SetColumnInfo
и SetRowInfo
после вызова CreateStatic
, чтобы указать нужные идеальные размеры панели.
Отдельные области статического разбиения часто принадлежат разным классам. Примеры окон статического разделения см. в графическом редакторе и диспетчере файлов Windows.
Окно разбиения поддерживает специальные полосы прокрутки (помимо полос прокрутки, которые могут иметь панели прокрутки). Эти полосы прокрутки являются дочерними элементами CSplitterWnd
объекта и совместно используются панелями.
При создании окна разбиения создаются специальные полосы прокрутки. Например, строка CSplitterWnd
с одной строкой, двумя столбцами и WS_VSCROLL
стилем будет отображаться вертикальная полоса прокрутки, доступная двумя панелями. Когда пользователь перемещает полосу прокрутки, WM_VSCROLL
сообщения отправляются в обе области. Когда панели задают позицию полосы прокрутки, устанавливается общая полоса прокрутки.
Дополнительные сведения о окнах разделения см . в техническом примечание 29.
Дополнительные сведения о создании окон динамического разделения см. в следующем разделе:
Пример Scribble MFC
Пример
VIEWEX
MFC.
Иерархия наследования
CSplitterWnd
Требования
Заголовок: afxext.h
CSplitterWnd::ActivateNext
Вызывается платформой для выполнения команды "Следующая область" или "Предыдущая область".
virtual void ActivateNext(BOOL bPrev = FALSE);
Параметры
bPrev
Указывает, какое окно для активации. TRUE
для предыдущего; FALSE
для следующего.
Замечания
Эта функция-член — это команда высокого уровня, используемая классом CView
для делегирования реализации CSplitterWnd
.
CSplitterWnd::CanActivateNext
Вызывается платформой, чтобы проверить, возможна ли в настоящее время команда "Следующая область" или "Предыдущая область".
virtual BOOL CanActivateNext(BOOL bPrev = FALSE);
Параметры
bPrev
Указывает, какое окно для активации. TRUE
для предыдущего; FALSE
для следующего.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Эта функция-член — это команда высокого уровня, используемая классом CView
для делегирования реализации CSplitterWnd
.
CSplitterWnd::Create
Чтобы создать динамическое окно разделения, вызовите функцию-член Create
.
virtual BOOL Create(
CWnd* pParentWnd,
int nMaxRows,
int nMaxCols,
SIZE sizeMin,
CCreateContext* pContext,
DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | SPLS_DYNAMIC_SPLIT,
UINT nID = AFX_IDW_PANE_FIRST);
Параметры
pParentWnd
Родительское окно кадра окна разделения.
nMaxRows
Максимальное количество строк в окне разбиения. Это значение не должно превышать 2.
nMaxCols
Максимальное количество столбцов в окне разделения. Это значение не должно превышать 2.
sizeMin
Указывает минимальный размер, в котором может отображаться панель.
pContext
Указатель на структуру CCreateContext
. В большинстве случаев это может быть передано pContext
в родительское окно фрейма.
dwStyle
Задает стиль окна.
nID
Идентификатор дочернего окна окна. Идентификатор может быть AFX_IDW_PANE_FIRST
, если окно разбиения не вложено в другое окно разбиения.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Чтобы внедрить объект CSplitterWnd
в родительский CFrameWnd
объект или CMDIChildWnd
объект, выполните следующие действия.
Внедрение переменной-члена в родительский
CSplitterWnd
кадр.Переопределите функцию-член родительского кадра
CFrameWnd::OnCreateClient
.Вызовите функцию-член
Create
из переопределенногоOnCreateClient
элемента.
При создании окна разделения из родительского кадра передайте параметр родительского кадра pContext
в окно разбиения. В противном случае этот параметр может быть NULL
.
Начальная минимальная высота строки и ширина столбца окна динамического разделения задаются параметром sizeMin
. Эти минимальные значения, определяющие, слишком ли небольшая панель отображается в целом, можно изменить с SetRowInfo
помощью функций-членов и SetColumnInfo
функций-членов.
Дополнительные сведения о динамических окнах разделения см. в разделе "Разделение Windows" статьи "Несколько типов документов, представлений и кадров Windows, Техническое примечание 29 и CSplitterWnd
обзор класса".
Пример
// the following function is created by the MFC Application Wizard
// when you select Split window from the User Interface Features tab:
BOOL CMyChildFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext *pContext)
{
return m_wndSplitter.Create(this,
2, 2, // TODO: adjust the number of rows, columns
CSize(10, 10), // TODO: adjust the minimum pane size
pContext);
}
CSplitterWnd::CreateScrollBarCtrl
Вызывается платформой для создания общего элемента управления полосой прокрутки.
virtual BOOL CreateScrollBarCtrl(
DWORD dwStyle,
UINT nID);
Параметры
dwStyle
Задает стиль окна.
nID
Идентификатор дочернего окна окна. Идентификатор может быть AFX_IDW_PANE_FIRST
, если окно разбиения не вложено в другое окно разбиения.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Переопределите CreateScrollBarCtrl
, чтобы включить дополнительные элементы управления рядом с полосой прокрутки. Поведение по умолчанию — создание обычных элементов управления полосой прокрутки Windows.
CSplitterWnd::CreateStatic
Чтобы создать статическое окно разделения, вызовите функцию-член CreateStatic
.
virtual BOOL CreateStatic(
CWnd* pParentWnd,
int nRows,
int nCols,
DWORD dwStyle = WS_CHILD | WS_VISIBLE,
UINT nID = AFX_IDW_PANE_FIRST);
Параметры
pParentWnd
Родительское окно кадра окна разделения.
nRows
Количество строк. Это значение не должно превышать 16.
nCols
Количество столбцов. Это значение не должно превышать 16.
dwStyle
Задает стиль окна.
nID
Идентификатор дочернего окна окна. Идентификатор может быть AFX_IDW_PANE_FIRST
, если окно разбиения не вложено в другое окно разбиения.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Обычно он CSplitterWnd
внедрен в родительский CFrameWnd
объект или CMDIChildWnd
объект, выполнив следующие действия.
Внедрение переменной-члена в родительский
CSplitterWnd
кадр.Переопределите функцию-член родительского кадра
OnCreateClient
.Вызовите функцию-член
CreateStatic
из переопределенногоCFrameWnd::OnCreateClient
элемента.
Окно статического разбиения содержит фиксированное количество панелей, часто из разных классов.
При создании статического окна разбиения необходимо одновременно создавать все его панели. Функция-член CreateView
обычно используется для этой цели, но вы также можете создавать другие классы, не относящиеся к представлению.
Начальная минимальная высота строки и ширина столбца для окна статического разбиения равна 0. Эти минимальные значения, определяющие, когда панель слишком мала, чтобы отображаться в целом, можно изменить с SetRowInfo
помощью функций-членов и SetColumnInfo
функций-членов.
Чтобы добавить полосы прокрутки в статическое окно разбиения, добавьте WS_HSCROLL
в нее стили и WS_VSCROLL
стили dwStyle
.
Дополнительные сведения о окнах статического разделения см. в статье "Разделение Windows", "Несколько типов документов", "Представления" и "Кадры", "Технические заметки 29" и CSplitterWnd
общие сведения о классе.
CSplitterWnd::CreateView
Создает панели для окна статического разбиения.
virtual BOOL CreateView(
int row,
int col,
CRuntimeClass* pViewClass,
SIZE sizeInit,
CCreateContext* pContext);
Параметры
row
Указывает строку окна разделения, в которой будет размещаться новое представление.
col
Указывает столбец окна разделения, в котором будет размещаться новое представление.
pViewClass
Указывает CRuntimeClass
новое представление.
sizeInit
Указывает начальный размер нового представления.
pContext
Указатель на контекст создания, используемый для создания представления (обычно pContext
передается в переопределенную CFrameWnd::OnCreateClient
функцию элемента родительского кадра, в которой создается окно разделения).
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Все панели статического окна разбиения должны быть созданы перед отображением разбиения платформы.
Платформа также вызывает эту функцию-член для создания новых панелей, когда пользователь динамического окна разделения разбивает область, строку или столбец.
Пример
// this function creates the panes for a static splitter window
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext *pContext)
{
m_bSplitterCreated = m_wndSplitter.CreateStatic(this, 1, 2);
// CMyView and CMyOtherView are user-defined views derived from CView
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CMyView), CSize(0, 0),
pContext);
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CMyOtherView), CSize(0, 0),
pContext);
return (m_bSplitterCreated);
}
CSplitterWnd::CSplitterWnd
Вызов для создания CSplitterWnd
объекта.
CSplitterWnd();
Замечания
CSplitterWnd
Создайте объект на двух шагах. Сначала вызовите конструктор, который создает CSplitterWnd
объект, а затем вызовите Create
функцию-член, которая создает окно разделения и присоединяет его к объекту CSplitterWnd
.
CSplitterWnd::DeleteColumn
Удаляет столбец из окна разделения.
virtual void DeleteColumn(int colDelete);
Параметры
colDelete
Указывает столбец, который нужно удалить.
Замечания
Эта функция-член вызывается платформой для реализации логики динамического окна разделения (то есть, если окно разбиения имеет SPLS_DYNAMIC_SPLIT
стиль). Его можно настроить вместе с виртуальной функцией CreateView
, чтобы реализовать более сложные динамические разбиения.
CSplitterWnd::DeleteRow
Удаляет строку из окна разделения.
virtual void DeleteRow(int rowDelete);
Параметры
rowDelete
Указывает строку для удаления.
Замечания
Эта функция-член вызывается платформой для реализации логики динамического окна разделения (то есть, если окно разбиения имеет SPLS_DYNAMIC_SPLIT
стиль). Его можно настроить вместе с виртуальной функцией CreateView
, чтобы реализовать более сложные динамические разбиения.
CSplitterWnd::DeleteView
Удаляет представление из окна разделения.
virtual void DeleteView(
int row,
int col);
Параметры
row
Указывает строку окна разделения, в которой необходимо удалить представление.
col
Указывает столбец окна разделения, по которому необходимо удалить представление.
Замечания
Если активное представление удаляется, следующее представление станет активным. Реализация по умолчанию предполагает, что представление автоматически удаляется PostNcDestroy
.
Эта функция-член вызывается платформой для реализации логики динамического окна разделения (то есть, если окно разбиения имеет SPLS_DYNAMIC_SPLIT
стиль). Его можно настроить вместе с виртуальной функцией CreateView
, чтобы реализовать более сложные динамические разбиения.
CSplitterWnd::DoKeyboardSplit
Выполняет команду разделения клавиатуры, обычно "Разделение окна".
virtual BOOL DoKeyboardSplit();
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Эта функция-член — это команда высокого уровня, используемая классом CView
для делегирования реализации CSplitterWnd
.
CSplitterWnd::DoScroll
Выполняет синхронизированную прокрутку разделенных окон.
virtual BOOL DoScroll(
CView* pViewFrom,
UINT nScrollCode,
BOOL bDoScroll = TRUE);
Параметры
pViewFrom
Указатель на представление, из которого возникает прокручивающееся сообщение.
nScrollCode
Код полосы прокрутки, указывающий запрос на прокрутку пользователя. Этот параметр состоит из двух частей: байт низкого порядка, который определяет тип прокрутки, происходящий по горизонтали, и байт высокого порядка, определяющий тип прокрутки, происходящий по вертикали:
SB_BOTTOM
Прокручивается вниз.SB_LINEDOWN
Прокручивает одну строку вниз.SB_LINEUP
Прокручивает одну строку вверх.SB_PAGEDOWN
Прокручивает одну страницу вниз.SB_PAGEUP
Прокручивает одну страницу вверх.SB_TOP
Прокручивается вверх.
bDoScroll
Определяет, происходит ли указанное действие прокрутки. TRUE
Если bDoScroll
имеется (то есть, если дочернее окно существует, а если разделенные окна имеют диапазон прокрутки), то может произойти указанное действие прокрутки; если FALSE
bDoScroll
(то есть, если дочернее окно отсутствует, или разделенные представления не имеют диапазона прокрутки), то прокрутка не возникает.
Возвращаемое значение
Ненулевое значение при синхронизированной прокрутке; в противном случае — 0.
Замечания
Эта функция-член вызывается платформой для выполнения синхронизированной прокрутки разделенных окон, когда представление получает сообщение прокрутки. Переопределите, чтобы пользователю было необходимо выполнить действие, прежде чем разрешена синхронизация прокрутки.
CSplitterWnd::DoScrollBy
Прокрутка разделенных окон по заданному количеству пикселей.
virtual BOOL DoScrollBy(
CView* pViewFrom,
CSize sizeScroll,
BOOL bDoScroll = TRUE);
Параметры
pViewFrom
Указатель на представление, из которого возникает прокручивающееся сообщение.
sizeScroll
Число пикселей для прокрутки по горизонтали и по вертикали.
bDoScroll
Определяет, происходит ли указанное действие прокрутки. TRUE
Если bDoScroll
имеется (то есть, если дочернее окно существует, а если разделенные окна имеют диапазон прокрутки), то может произойти указанное действие прокрутки; если FALSE
bDoScroll
(то есть, если дочернее окно отсутствует, или разделенные представления не имеют диапазона прокрутки), то прокрутка не возникает.
Возвращаемое значение
Ненулевое значение при синхронизированной прокрутке; в противном случае — 0.
Замечания
Эта функция-член вызывается платформой в ответ на сообщение прокрутки, чтобы выполнить синхронизированную прокрутку разделенных окон по сумме в пикселях, указанной в sizeScroll
пикселях. Положительные значения указывают прокрутку вниз и справа; отрицательные значения указывают на прокрутку вверх и слева.
Перед разрешением прокрутки переопределите, чтобы требовать от пользователя действие.
CSplitterWnd::GetActivePane
Определяет активную панель из фокуса или активного представления в кадре.
virtual CWnd* GetActivePane(
int* pRow = NULL,
int* pCol = NULL);
Параметры
pRow
Указатель на указатель на int
получение номера строки активной панели.
pCol
Указатель на указатель на int
получение номера столбца активной панели.
Возвращаемое значение
Указатель на активную панель. NULL
Если активная область отсутствует.
Замечания
Эта функция-член вызывается платформой для определения активной области в окне разделения. Переопределите, чтобы пользователь должен выполнить действие перед получением активной панели.
CSplitterWnd::GetColumnCount
Возвращает текущее число столбцов панели.
int GetColumnCount() const;
Возвращаемое значение
Возвращает текущее число столбцов в разделитете. Для статического разбиения это также будет максимальное количество столбцов.
CSplitterWnd::GetColumnInfo
Возвращает сведения о указанном столбце.
void GetColumnInfo(
int col,
int& cxCur,
int& cxMin) const;
Параметры
col
Указывает столбец.
cxCur
Ссылка на int
значение текущей ширины столбца.
cxMin
Ссылка на int
значение текущей минимальной ширины столбца.
CSplitterWnd::GetPane
Возвращает область в указанной строке и столбце.
CWnd* GetPane(
int row,
int col) const;
Параметры
row
Задает строку.
col
Указывает столбец.
Возвращаемое значение
Возвращает область в указанной строке и столбце. Возвращаемая область обычно является производным классом CView
.
CSplitterWnd::GetRowCount
Возвращает текущее число строк панели.
int GetRowCount() const;
Возвращаемое значение
Возвращает текущее количество строк в окне разбиения. Для окна статического разбиения это также будет максимальное количество строк.
CSplitterWnd::GetRowInfo
Возвращает сведения о указанной строке.
void GetRowInfo(
int row,
int& cyCur,
int& cyMin) const;
Параметры
row
Задает строку.
cyCur
int
Ссылка на значение текущей высоты строки в пикселях.
cyMin
int
Ссылка на значение текущей минимальной высоты строки в пикселях.
Замечания
Вызовите эту функцию-член, чтобы получить сведения об указанной строке. Параметр cyCur
заполняется текущей высотой указанной строки и cyMin
заполняется минимальной высотой строки.
CSplitterWnd::GetScrollStyle
Возвращает общий стиль полосы прокрутки для окна разбиения.
DWORD GetScrollStyle() const;
Возвращаемое значение
Одно или несколько следующих флагов стилей окон, если выполнено успешно:
WS_HSCROLL
Если разделитель в настоящее время управляет общими горизонтальными полосами прокрутки.WS_VSCROLL
Если разделитель в настоящее время управляет общими вертикальными полосами прокрутки.
Если ноль, окно разделения в настоящее время не управляет общими полосами прокрутки.
CSplitterWnd::IdFromRowCol
Получает идентификатор дочернего окна для области в указанной строке и столбце.
int IdFromRowCol(
int row,
int col) const;
Параметры
row
Указывает строку окна разделения.
col
Указывает столбец окна разделения.
Возвращаемое значение
Идентификатор дочернего окна для области.
Замечания
Эта функция-член используется для создания невидовых представлений в виде панелей и может вызываться до того, как область существует.
Пример
HBRUSH CMySplitterWnd::OnCtlColor(CDC *pDC, CWnd *pWnd, UINT nCtlColor)
{
HBRUSH hbr = CSplitterWnd::OnCtlColor(pDC, pWnd, nCtlColor);
if (nCtlColor == CTLCOLOR_LISTBOX &&
pWnd->GetDlgCtrlID() == IdFromRowCol(1, 0))
{
// Pane 1,0 is a list box. Set the color of the text to be blue.
pDC->SetBkColor(m_BkColor);
pDC->SetTextColor(RGB(0, 0, 255));
return (HBRUSH)m_hbrListBoxBkgnd.GetSafeHandle();
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
CSplitterWnd::IsChildPane
Определяет, является ли pWnd
в настоящее время дочерней областью этого окна разбиения.
BOOL IsChildPane(
CWnd* pWnd,
int* pRow,
int* pCol);
Параметры
pWnd
Указатель на CWnd
проверяемый объект.
pRow
Указатель на int
номер строки, в котором хранится номер строки.
pCol
Указатель на int
столбец, в котором хранится номер столбца.
Возвращаемое значение
Если ненулевое значение, pWnd
в настоящее время является дочерней областью этого окна разбиения и pRow
pCol
заполняется положением панели в окне разбиения. Если pWnd
не является дочерней областью этого окна разбиения, возвращается значение 0.
Замечания
В версиях Visual C++ до версии 6.0 эта функция была определена как
BOOL IsChildPane(CWnd* pWnd, int& row, int& col);
Эта версия устарела и не должна использоваться.
CSplitterWnd::IsTracking
Вызовите эту функцию-член, чтобы определить, перемещается ли панель разделения в окне.
BOOL IsTracking();
Возвращаемое значение
Ненулевое значение, если выполняется операция разделения; в противном случае — 0.
CSplitterWnd::OnDrawSplitter
Отрисовывает изображение разделенного окна.
virtual void OnDrawSplitter(
CDC* pDC,
ESplitType nType,
const CRect& rect);
Параметры
pDC
Указатель на контекст устройства, в котором выполняется рисование. Если pDC
это NULL
так, CWnd::RedrawWindow
то вызывается платформой, и окно разделения не рисуется.
nType
Значение enum ESplitType
, которое может быть одним из следующих значений:
splitBox
Поле перетаскивания разбиения.splitBar
Панель, которая отображается между двумя разделенными окнами.splitIntersection
Пересечение разделенных окон. Этот элемент не вызывается при запуске в Windows 95/98.splitBorder
Границы разделенного окна.
rect
Ссылка на объект, указывающий CRect
размер и форму разделенных окон.
Замечания
Эта функция-член вызывается платформой для рисования и указания точных характеристик окна разбиения. Переопределяется OnDrawSplitter
для расширенной настройки изображения для различных графических компонентов окна разделения. Образы по умолчанию похожи на разделитель в Microsoft Works для Windows или Microsoft Windows 95/98, в том, что пересечения полос разбиения объединяются вместе.
Дополнительные сведения о динамических окнах разделения см. в разделе "Разделение Windows" статьи "Несколько типов документов, представлений и кадров Windows, Техническое примечание 29 и CSplitterWnd
обзор класса".
CSplitterWnd::OnInvertTracker
Отрисовывает изображение разделенного окна таким же размером и фигурой, что и окно фрейма.
virtual void OnInvertTracker(const CRect& rect);
Параметры
rect
Ссылка на объект, указывающий CRect
прямоугольник отслеживания.
Замечания
Эта функция-член вызывается платформой во время изменения размера разбиения. Переопределите OnInvertTracker
для расширенной настройки образа окна разбиения. Образы по умолчанию похожи на разделитель в Microsoft Works для Windows или Microsoft Windows 95/98, в том, что пересечения полос разбиения объединяются вместе.
Дополнительные сведения о динамических окнах разделения см. в разделе "Разделение Windows" статьи "Несколько типов документов, представлений и кадров Windows, Техническое примечание 29 и CSplitterWnd
обзор класса".
CSplitterWnd::RecalcLayout
Вызов повторного воспроизведения окна разбиения после настройки размера строки или столбца.
virtual void RecalcLayout();
Замечания
Вызовите эту функцию-член, чтобы правильно переиграть окно разбиения после настройки размеров строк и столбцов с SetRowInfo
SetColumnInfo
функциями-членами. Если вы изменяете размеры строк и столбцов в процессе создания перед видимым окном разбиения, вызов этой функции-члена не требуется.
Платформа вызывает эту функцию-член всякий раз, когда пользователь изменяет размер окна разделения или перемещает разделение.
Пример
Пример см. в примере CSplitterWnd::SetColumnInfo
.
CSplitterWnd::SetActivePane
Задает область, чтобы она была активной в кадре.
virtual void SetActivePane(
int row,
int col,
CWnd* pWnd = NULL);
Параметры
row
Если pWnd
это NULL
так, указывает строку в области, которая будет активной.
col
Если pWnd
это NULL
так, указывает столбец в области, которая будет активной.
pWnd
Указатель на объект CWnd
. Если NULL
область, указанная row
и col
задана, активна. Если нет NULL
, указывает область, которая является активной.
Замечания
Эта функция-член вызывается платформой, чтобы задать область как активную, когда пользователь изменяет фокус на область в окне кадра. Вы можете явно вызвать SetActivePane
изменение фокуса на указанное представление.
Укажите область, указав строку и столбец или предоставивpWnd
.
CSplitterWnd::SetColumnInfo
Вызов, чтобы задать указанные сведения о столбце.
void SetColumnInfo(
int col,
int cxIdeal,
int cxMin);
Параметры
col
Указывает столбец окна разделения.
cxIdeal
Задает идеальную ширину для столбца окна разделения в пикселях.
cxMin
Задает минимальную ширину для столбца окна разделения в пикселях.
Замечания
Вызовите эту функцию-член, чтобы задать новую минимальную ширину и идеальную ширину для столбца. Минимальное значение столбца определяет, когда столбец будет слишком мал для полного отображения.
Когда платформа отображает окно разбиения, она размещает панели в столбцах и строках в соответствии с их идеальными измерениями, работая с верхнего левого угла в правом нижнем углу клиентской области окна разделения.
Пример
void CChildFrame::OnSize(UINT nType, int cx, int cy)
{
CMDIChildWnd::OnSize(nType, cx, cy);
CRect rect;
GetWindowRect(&rect);
if (m_bSplitterCreated) // m_bSplitterCreated set in OnCreateClient
{
m_wndSplitter.SetColumnInfo(0, rect.Width() / 2, 10);
m_wndSplitter.SetColumnInfo(1, rect.Width() / 2, 10);
m_wndSplitter.RecalcLayout();
}
}
CSplitterWnd::SetRowInfo
Вызов, чтобы задать указанные сведения о строке.
void SetRowInfo(
int row,
int cyIdeal,
int cyMin);
Параметры
row
Указывает строку окна разделения.
cyIdeal
Задает идеальную высоту для строки окна разделения в пикселях.
cyMin
Задает минимальную высоту для строки окна разделения в пикселях.
Замечания
Вызовите эту функцию-член, чтобы задать новую минимальную высоту и идеальную высоту для строки. Минимальное значение строки определяет, когда строка будет слишком мала, чтобы полностью отобразиться.
Когда платформа отображает окно разбиения, она размещает панели в столбцах и строках в соответствии с их идеальными измерениями, работая с верхнего левого угла в правом нижнем углу клиентской области окна разделения.
CSplitterWnd::SetScrollStyle
Задает новый стиль прокрутки для поддержки общей полосы прокрутки окна разделения.
void SetScrollStyle(DWORD dwStyle);
Параметры
dwStyle
Новый стиль прокрутки для поддержки общей полосы прокрутки окна разделения, которая может быть одним из следующих значений:
WS_HSCROLL
Создание или отображение горизонтальных общих полос прокрутки.WS_VSCROLL
Создание и отображение вертикальных общих полос прокрутки.
Замечания
После создания полосы прокрутки она не будет уничтожена даже при SetScrollStyle
вызове без этого стиля. Вместо этого эти полосы прокрутки скрыты. Это позволяет полосам прокрутки сохранять свое состояние, даже если они скрыты. После вызова SetScrollStyle
необходимо вызвать RecalcLayout
все изменения, которые вступают в силу.
CSplitterWnd::SplitColumn
Указывает, где окно кадра разбивается по вертикали.
virtual BOOL SplitColumn(int cxBefore);
Параметры
cxBefore
Позиция в пикселях, перед которой происходит разделение.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Эта функция-член вызывается при создании окна вертикального разделения. SplitColumn
указывает расположение по умолчанию, в котором происходит разделение.
SplitColumn
вызывается платформой для реализации логики динамического окна разделения (то есть, если окно разбиения имеет SPLS_DYNAMIC_SPLIT
стиль). Его можно настроить вместе с виртуальной функцией CreateView
, чтобы реализовать более сложные динамические разбиения.
CSplitterWnd::SplitRow
Указывает, где окно фрейма разбивается по горизонтали.
virtual BOOL SplitRow(int cyBefore);
Параметры
cyBefore
Позиция в пикселях, перед которой происходит разделение.
Возвращаемое значение
Имеет ненулевое значение в случае успешного выполнения, иначе — 0.
Замечания
Эта функция-член вызывается при создании горизонтального окна разделения. SplitRow
указывает расположение по умолчанию, в котором происходит разделение.
SplitRow
вызывается платформой для реализации логики динамического окна разделения (то есть, если окно разбиения имеет SPLS_DYNAMIC_SPLIT
стиль). Его можно настроить вместе с виртуальной функцией CreateView
, чтобы реализовать более сложные динамические разбиения.
CSplitterWnd::OnDraw
Вызывается платформой для рисования окна разбиения.
virtual void OnDraw(CDC* pDC);
Параметры
pDC
Указатель на контекст устройства.