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

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

  Все выпуски  

Загрузка представления Doc/View из DLL(SDI)


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

Здравствуйте уважаемые подписчики. У этой рассылки немного изменился дизайн. И нам интересно устраивает ли он вас. Все пожелания и замечания можете присылать сюда.

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

1. Замена представления вида в MDI и SDI приложениях
Иногда в приложении требуется заменить существующее представление на другое. К примеру, заменить представление CTreeView на CListView. Выполнение этой функции в MDI и SDI приложениях немного отличается.

2. Класс гиперссылок CHyperLink
Класс CHyperLink служит для создания гиперссылок. Этот класс является производным от класса CStatic.

3. Помещение ProgressBar в TaskBar
Статья рассказывает о реализации такой возможности, как вставка элемента управления ProgressBar в TaskBar.

4. Класс CUsefulSplitterWnd (расширение класса CSplitterWnd)
Класс CUsefulSplitterWnd расширяет класс CSplitterWnd и дает ему новые возможности.

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

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

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

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

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

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

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

20.03.2006 Компьютер с энергопотреблением в 1 Вт

20.03.2006 Подбавим жару на AGP: 512 Мб видео ОЗУ

20.03.2006 Молчаливая мышь от Thanko

18.03.2006 Microsoft демонстрирует новые бизнес-технологии

18.03.2006 Microsoft делится планами по развитию сервисов Windows Live

18.03.2006 Выход Windows Vista заставит пользователей модернизировать ПК

17.03.2006 Microsoft разрабатывает глобальную сеть доставки рекламы

17.03.2006 CeBIT 2006: Asus представила новые ноутбуки и продукты для цифрового дома

Загрузка представления Doc/View из DLL(SDI)

В статье речь пойдет о замене представлений в SDI приложении. Причем представление будет загружаться из динамической библиотеки DLL. Когда мне надо было реализовать эту возможность, я очень долго искал и находил только для MDI приложений. Но лучше покопавшись в MSDN, я нашел все-таки решение. Более подробно о смене представлений написано в статье, Замена представлений в MDI и SDI приложениях.

В начале давайте создадим проект динамической библиотеки. Далее создаем в редакторе ресурсов диалоговое окно и к нему класс CFormView. В диалог можно для наглядности, добавить какие-либо элементы управления и привязать к ним действия. И остается только в файл, где находится функция DllMain добавить следующий код:

extern "C" AFX_EXT_API UINT Init(CRuntimeClass** view)
{
 new CDynLinkLibrary(InitialContactDLL);
 *view = RUNTIME_CLASS(CCustomerContact);
 return(0);
}

В данном случае CCustomerContact это класс представления CFormView. В конце надо просто откомпилировать проект динамической библиотеки.

Теперь создайте проект SDI приложения. Для смены представлений нам надо создать специальную функцию в классе CDocument. Назовем ее SwitchToView. Вот ее код:

BOOL CSdiDllFramesDoc::SwitchToView(CRuntimeClass* pNewViewClass)
{
   CFrameWnd* pMainWnd = (CFrameWnd*)AfxGetMainWnd();
   CView* pOldActiveView = pMainWnd->GetActiveView();

   // If we're already displaying this kind of view, no need to go further.
   if(pOldActiveView->IsKindOf(pNewViewClass))
      return TRUE;
 
   // Set the child window ID of the active view to AFX_IDW_PANE_FIRST.
   // This is necessary so that CFrameWnd::RecalcLayout will allocate
   // this "first pane" to that portion of the frame window's client
   // area not allocated to control bars.  Set the child ID of
   // the previously active view to some other ID.
   ::SetWindowLong(pOldActiveView->m_hWnd, GWL_ID, 0);

   // create the new view
   CCreateContext context;
   context.m_pNewViewClass = pNewViewClass;
   context.m_pCurrentDoc = this;
   CView* pNewView = STATIC_DOWNCAST(CView, pMainWnd->CreateView(&context));
   if(pNewView != NULL)
   {
      // the new view is there, but invisible and not active...
      pNewView->ShowWindow(SW_SHOW);
      pNewView->OnInitialUpdate();
      pMainWnd->SetActiveView(pNewView);
      pMainWnd->RecalcLayout();

      // destroy the old view...
      pOldActiveView->DestroyWindow();
      return TRUE;
   }

   return FALSE;
}

Ее единственный параметр указывает на класс представления, который заменит старый класс представления. Теперь надо только загрузить библиотеку и выполнить в ней функцию Init, код которой уже выше приводился.

void CMainFrame::OnViewLoadviewfromdll() 
{
 typedef UINT ( * LPDLLFUNC)(CRuntimeClass**);
 LPDLLFUNC lpfnDllFunc = NULL;
 HINSTANCE hDLL    = NULL;        
 hDLL = AfxLoadLibrary("InitialContact.dll");
 if(hDLL)
 {
  lpfnDllFunc = (LPDLLFUNC)::GetProcAddress(hDLL,"Init");
  if(!lpfnDllFunc)
  {
   AfxMessageBox("Function not found in DLL");
   FreeLibrary(hDLL);
   return;
  }
  CRuntimeClass* pNewViewClass;
  lpfnDllFunc(&pNewViewClass);
  ASSERT(pNewViewClass);
  CSdiDllFramesDoc* pDoc = (CSdiDllFramesDoc*) GetActiveDocument();
  ASSERT(pDoc);
  pDoc->SwitchToView(pNewViewClass); 
 }
 else
 {
  AfxMessageBox("Dll not found!");
 }
}

Вот, пожалуй, и все что я тел вам рассказать в этой статье. Как работает этот проект, вы можете узнать, скачав Исходник идущий к статье.

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

Книги с Озона

XML для разработчиков-профессионалов .NET XML для разработчиков-профессионалов .NET

В настоящее время XML представляет собой устоявшуюся технологию, применяемую для описания и передачи данных. Она оказывает существенное влияние практически на все аспекты разработки ПО. При создании .NET Framework компания Microsoft стремилась использовать преимущества XML везде, где только возможно. Никакая другая технология не является столь тесно связанной с .NET, как XML, причем не только на уровне разработчика, но и в виде основополагающей технологии системы в целом.
Цель настоящей книги - предоставить читателю достаточную информацию для того, чтобы он смог использовать XML в рамках .NET Framework наиболее эффективным способом. В книге подробно описывается применение всех библиотечных классов .NET Framework, относящихся к XML, для манипулирования, проверки допустимости, преобразования и сериализации XML-данных с использованием как C#, так и Visual Basic .NET.

Основные темы книги:
- Чтение и запись XML
- Поиск по DOM и XSL-преобразования XML
- Проверка допустимости и сериализация XML
- MSXML в сравнении с System.Xml
- XML-поддержка ADO.NET и ASP.NET
- Web-службы и SOAP

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

XML для профессионалов XML для профессионалов

Язык XML используется практически в каждом аспекте программирования. С самого начала он был спроектирован как язык разметки, сочетающий в себе мощь и гибкость с простым для изучения синтаксисом. Разработанный как открытый, расширяемый, понятный язык, XML представляет собой стандарт консорциума W3C, позволяющий совместно использовать данные в среде различных приложений, платформ и сети Интернет.

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

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

В книге приводятся:
Подробное разъяснение синтаксиса XML на практических примерах;
Спецификации W3C, относящиеся к XML;
Обработка документов XML с помощью модели DOM и SAX;
Методы отображения документов XML с помощью языков CSS, XSL и WML;
Манипулирование структурами документов с помощью XSL;
Создание эффективных моделей данных при разработке языков разметки;
Организация взаимодействия использующих XML приложений с Web-приложениями и базамиданных;
Введение в WAP, прикладной протокол беспроводной связи

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

.NET Framework. Библиотека классов .NET Framework. Библиотека классов

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

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

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

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

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



В избранное