Отправляет email-рассылки с помощью сервиса Sendsay

Статьи по Visual C++

  Все выпуски  

Класс CUsefulSplitterWnd (расширение класса CSplitterWnd)


Visual C++
Лучшие статьи с сайта www.p-lib.pp.ru
  Главная | Новости | Статьи | Каталог | Софт | Хостинг (new) | Регистрация | Поиск

Новые статьи на сайте

1. Работа с переменными в других процессах
Приведенный в статье пример показывает, как можно получить название всех кнопок Таскбара.

2. Как программно управлять CD-ROM'ом?
В статье рассказывается о том, как програмно можно открывать или закрывать CD-ROM и многое другое.

3. Копирование текста в буфер обмена
Приведенный в статье пример демонстрирует помещение текста в буфер обмена. В данном случае, текстовые данные берутся из обычной переменной CString.

4. Элемент управления CTreeCtrl
Кроме возможности выводить записи последовательных списков при помощи таких элементов, как список или просмотр списка, Windows предоставляет возможность отображения (и управления) списков, организованных по принципу дерева.

5. Шрифты
В статье рассказывается об использовании шрифтов в MFC. На примере показано создание собственного шрифта.

6. Класс CRecordView
Объекты этого класса предоставляют для изображения записей базы данных в элементах управления форму, которая непосредственно соединена с объектом CRecordset.

7. Поиск и сортировка записей
В статье описаны функции поиска и сортировки в элементе управления ListCtrl.

8. Меню и акселераторы
В этой статье я вас ознакомлю с классом CMenu. С помощью этого класса можно создавать меню в MFC приложениях. Так же будет рассмотрен вопрос об использовании акселераторов.

9. Разделяемая память в динамической библиотеке
В этой статье рассмотрен вопрос о разделяемой памяти в динамической библиотеке. Также приведенные примеры демонстрируют примеры использования общей памяти.

10. Битовые образы
В операционной системе Windows рассматриваются два типа растровых изображений: аппаратно-зависимые и аппаратно-независимые. В этой статье рассматриваются аппаратно-зависимые изображения и их поддержку в библиотеке MFC.

Свежие компьютерные новости

16.03.2006 CeBIT 2006: Asus представила новые материнские платы и видеокарты

16.03.2006 Tyan предлагает "персональные суперкомпьютеры"

16.03.2006 В Корее разработан самый маленький транзистор

16.03.2006 Слух: Windows Vista может выйти в ноябре

16.03.2006 Microsoft заделала дыры в Windows и Office

16.03.2006 Oracle выпустила графический инструментарий для управления базами данных

16.03.2006 Кадр дня: Компьютер-мотоцикл

15.03.2006 Google открыл онлайновый атлас Марса

Класс CUsefulSplitterWnd (расширение класса CSplitterWnd)

Класс CUsefulSplitterWnd расширяет класс CSplitterWnd. А именно этот класс дает следующие возможности:

  1. Блокировка изменения размеров границ между представлениями. То есть нельзя будет изменять размер представлений.
    // блокировка использую функцию LockBar (TRUE)
    m_wndSplitter.LockBar(TRUE);
    // и разблокировка, используя LockBar (FALSE)
    m_wndSplitter.LockBar(FALSE);
  2. Второй возможностью является возможность изменять представления в любой ячейке CSplitterWnd при помощи функции ReplaceView().
    // чтобы изменить представление в ячейке надо использовать функцию ReplaceView
    m_wndSplitter.ReplaceView(0, 1, RUNTIME_CLASS(CForm1), CSize(100 100));
    CForm1 это класс представления. Им может быть любой класс, к примеру, CListView, CTreeView, CHtmlView, CFormView и т. д.

Далее мы расскажем, какие функции помогают в реализации первой возможности. Итак, для реализации надо обработать сообщения ON_WM_LBUTTONDOWN(), ON_WM_MOUSEMOVE(), ON_WM_SETCURSOR(). Вот сам код:

void CUsefulSplitterWnd::OnLButtonDown(UINT nFlags, CPoint point) 
{
 if (!m_bBarLocked)
  CSplitterWnd::OnLButtonDown(nFlags, point);
}

void CUsefulSplitterWnd::OnMouseMove(UINT nFlags, CPoint point) 
{
 if (!m_bBarLocked)
  CSplitterWnd::OnMouseMove(nFlags, point);
 else
  CWnd::OnMouseMove(nFlags, point);
}

BOOL CUsefulSplitterWnd::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{
 if (!m_bBarLocked)
  return CWnd::OnSetCursor(pWnd, nHitTest, message);

 return CSplitterWnd::OnSetCursor(pWnd, nHitTest, message);
}

Переменная типа BOOL m_bBarLocked устанавливает свое значение с помощью функции LockBar. Об этой функции уже было рассказано выше.

Теперь давайте рассмотрим функцию ReplaceView.

BOOL CUsefulSplitterWnd::ReplaceView(int row, int col,CRuntimeClass * pViewClass, SIZE size)
{
 CCreateContext context;
 BOOL bSetActive;
      

 if ((GetPane(row,col)->IsKindOf(pViewClass))==TRUE)
  return FALSE;
     

 // Get pointer to CDocument object so that it can be used in the creation 
 // process of the new view
 CDocument * pDoc= ((CView *)GetPane(row,col))->GetDocument();
 CView * pActiveView=GetParentFrame()->GetActiveView();
 if (pActiveView==NULL || pActiveView==GetPane(row,col))
  bSetActive=TRUE;
 else
  bSetActive=FALSE;

 // set flag so that document will not be deleted when view is destroyed
 pDoc->m_bAutoDelete=FALSE;    
 // Delete existing view 
 ((CView *) GetPane(row,col))->DestroyWindow();
 // set flag back to default 
 pDoc->m_bAutoDelete=TRUE;

 // Create new view                      

 context.m_pNewViewClass=pViewClass;
 context.m_pCurrentDoc=pDoc;
 context.m_pNewDocTemplate=NULL;
 context.m_pLastView=NULL;
 context.m_pCurrentFrame=NULL;

 CreateView(row,col,pViewClass,size, &context);

 CView * pNewView= (CView *)GetPane(row,col);

 if (bSetActive==TRUE)
  GetParentFrame()->SetActiveView(pNewView);

 RecalcLayout(); 
 GetPane(row,col)->SendMessage(WM_PAINT);

 return TRUE;
}

Первый и второй параметры указывают на ячейку, в которой бум менять представление. Третий параметр является указателем на новое представление, на которое будем менять старое представление. Четвертый параметр задает минимальные размеры ячейки. Функция возвращает TRUE, если выполнена удачно, в противном случае возвратится значение FALSE.

Ну, вот, пожалуй, и все. О более подробном применении этого класса вы сможете увидеть из исходников идущих со статьями.

Исходник к статье можно скачать здесь.

Книги с Озона

Visual C++.NET. Библия пользователя Visual C++.NET. Библия пользователя

Эта книга посвящена библиотеке MFC, a не только платформе .NET. Весь материал разбит на разделы, освещающие отдельные направления разработки, объединенные в логически упорядоченные категории, что позволит новичкам получить систематизированные знания, читая книгу шаг за шагом, а квалифицированный программист легко найдет интересующие разделы. Каждая глава начинается вводным разделом, содержащим краткую информацию по обсуждаемой теме, а затем следует пример довольно простого демонстрационного приложения. Книга предназначена для программистов средней и высокой квалификации.

Заказать на Озоне

Visual C++.NET. Класссика програмирования (+ CD-ROM) Visual C++.NET. Класссика програмирования (+ CD-ROM)

"Visual C++.Net. Классика программирования" - книга, необходимая как начинающему программисту, так и профессионалу, желающему познакомиться с новыми возможностями последней версии наиболее популярной системы программирования. Изучение этой книги не требует глубоких знаний языка C++, однако предполагается знание основ языка С. Поэтапное изучение предмета позволит человеку с любым уровнем начальных знаний о языке программирования C++ легко изучить самую современную его версию. Данная книга - не просто учебник по языку программирования, это первый шаг в создании удобных, профессиональных приложений, ориентированных на Internet.

Заказать на Озоне

Использование Microsoft Visual C++ .NET. Специальное издание Использование Microsoft Visual C++ .NET. Специальное издание

Эта книга фокусирует внимание читателя на использовании языка программирования Visual C++ при создании 32-разрядных Windows-приложений, включая приложения баз данных, Internet-приложения и СОМ-приложения. Помимо этого, здесь содержится описание технологии .NЕТ и способа применения языка Visual C++ при создании .NЕТ-приложений, использующих базы данных, взаимодействующих с Internet и т.д. Особое внимание автор книги уделяет совместному использованию технологий .NЕТ и СОМ. Эта книга будет полезна как начинающим, так и опытным программистам.

Заказать на Озоне

Советую посетить

Портал для Delphi программиста - Быстро развивающийся портал о программирование на языке Pascal/Delphi. Статьи, исходники, компоненты, справочники, мануалы, FaQ, программы.

Дружественные рассылки

Статьи по Visual Basic.NET
Статьи по ASP.NET
Delphi Coding
Интернет и Delphi

Замечания и предложения отправляйте на E-Mail указанный ниже. С уважением Ковязин Дмитрий (admin@p-lib.pp.ru).



В избранное