Класс 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 Создайте объект, выполнив следующие действия:

  1. Внедрение переменной-члена в родительский CSplitterWnd кадр.

  2. Переопределите функцию-член родительского кадра CFrameWnd::OnCreateClient .

  3. В переопределенной OnCreateClientобласти вызовите Create функцию или CreateStatic функцию-член CSplitterWnd.

Вызовите функцию-член, Create чтобы создать динамическое окно разделения. Динамическое окно разделения обычно используется для создания и прокрутки ряда отдельных панелей или представлений одного документа. Платформа автоматически создает начальную панель для разбиения; затем платформа создает, изменяет размер и удаляет дополнительные панели, так как пользователь управляет элементами управления окна разделения.

При вызове Createнеобходимо указать минимальную высоту строки и ширину столбца, которая определяет, когда панели слишком малы для полного отображения. После вызова Createможно настроить эти минимумы, вызвав SetColumnInfo функции-члены и SetRowInfo функции-члены.

Также используйте SetColumnInfoSetRowInfo функции-члены, чтобы задать "идеальную" ширину для столбца и "идеальной" высоты для строки. Когда платформа отображает окно разбиения, сначала отображает родительский кадр, а затем окно разделения. Затем платформа размещает панели в столбцах и строках в соответствии с их идеальными измерениями, работая с верхнего левого угла в правом нижнем углу клиентской области окна разбиения.

Все панели в окне динамического разделения должны иметь один и тот же класс. Знакомые приложения, поддерживающие динамические окна разделения, включают Microsoft Word и Microsoft Excel.

Используйте функцию-член для CreateStatic создания окна статического разбиения. Пользователь может изменить только размер панелей в окне статического разбиения, а не их число или порядок.

При создании статического разбиения необходимо специально создать все области статического разбиения. Убедитесь, что все панели создаются до возврата функции-члена родительского кадра OnCreateClient , или платформа не отображает окно правильно.

Функция-член CreateStatic автоматически инициализирует статический разделитель с минимальной высотой строки и шириной столбца 0. После вызова Createнастройте эти минимумы, вызвав SetColumnInfo функции-члены и SetRowInfo функции-члены. Также используйте SetColumnInfo и SetRowInfo после вызова CreateStatic , чтобы указать нужные идеальные размеры панели.

Отдельные области статического разбиения часто принадлежат разным классам. Примеры окон статического разделения см. в графическом редакторе и диспетчере файлов Windows.

Окно разбиения поддерживает специальные полосы прокрутки (помимо полос прокрутки, которые могут иметь панели прокрутки). Эти полосы прокрутки являются дочерними элементами CSplitterWnd объекта и совместно используются панелями.

При создании окна разбиения создаются специальные полосы прокрутки. Например, строка CSplitterWnd с одной строкой, двумя столбцами и WS_VSCROLL стилем будет отображаться вертикальная полоса прокрутки, доступная двумя панелями. Когда пользователь перемещает полосу прокрутки, WM_VSCROLL сообщения отправляются в обе области. Когда панели задают позицию полосы прокрутки, устанавливается общая полоса прокрутки.

Дополнительные сведения о окнах разделения см . в техническом примечание 29.

Дополнительные сведения о создании окон динамического разделения см. в следующем разделе:

Иерархия наследования

CObject

CCmdTarget

CWnd

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 объект, выполните следующие действия.

  1. Внедрение переменной-члена в родительский CSplitterWnd кадр.

  2. Переопределите функцию-член родительского кадра CFrameWnd::OnCreateClient .

  3. Вызовите функцию-член 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 объект, выполнив следующие действия.

  1. Внедрение переменной-члена в родительский CSplitterWnd кадр.

  2. Переопределите функцию-член родительского кадра OnCreateClient .

  3. Вызовите функцию-член 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 имеется (то есть, если дочернее окно существует, а если разделенные окна имеют диапазон прокрутки), то может произойти указанное действие прокрутки; если FALSEbDoScroll (то есть, если дочернее окно отсутствует, или разделенные представления не имеют диапазона прокрутки), то прокрутка не возникает.

Возвращаемое значение

Ненулевое значение при синхронизированной прокрутке; в противном случае — 0.

Замечания

Эта функция-член вызывается платформой для выполнения синхронизированной прокрутки разделенных окон, когда представление получает сообщение прокрутки. Переопределите, чтобы пользователю было необходимо выполнить действие, прежде чем разрешена синхронизация прокрутки.

CSplitterWnd::DoScrollBy

Прокрутка разделенных окон по заданному количеству пикселей.

virtual BOOL DoScrollBy(
    CView* pViewFrom,
    CSize sizeScroll,
    BOOL bDoScroll = TRUE);

Параметры

pViewFrom
Указатель на представление, из которого возникает прокручивающееся сообщение.

sizeScroll
Число пикселей для прокрутки по горизонтали и по вертикали.

bDoScroll
Определяет, происходит ли указанное действие прокрутки. TRUE Если bDoScroll имеется (то есть, если дочернее окно существует, а если разделенные окна имеют диапазон прокрутки), то может произойти указанное действие прокрутки; если FALSEbDoScroll (то есть, если дочернее окно отсутствует, или разделенные представления не имеют диапазона прокрутки), то прокрутка не возникает.

Возвращаемое значение

Ненулевое значение при синхронизированной прокрутке; в противном случае — 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 в настоящее время является дочерней областью этого окна разбиения и pRowpCol заполняется положением панели в окне разбиения. Если 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();

Замечания

Вызовите эту функцию-член, чтобы правильно переиграть окно разбиения после настройки размеров строк и столбцов с SetRowInfoSetColumnInfo функциями-членами. Если вы изменяете размеры строк и столбцов в процессе создания перед видимым окном разбиения, вызов этой функции-члена не требуется.

Платформа вызывает эту функцию-член всякий раз, когда пользователь изменяет размер окна разделения или перемещает разделение.

Пример

Пример см. в примере 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
Указатель на контекст устройства.

Замечания

См. также

Пример MFC VIEWEX
CWnd Класса
Диаграмма иерархии
CView Класса