Condividi tramite


Esempio HIERSVR: applicazione server con funzionalità di trascinamento della selezione OLE

Aggiornamento: novembre 2007

L'esempio HIERSVR rappresenta un'applicazione server di modifica visiva che fornisce il supporto per gli oggetti collegati e per gli oggetti modificati sul posto. In quanto server completo, inoltre, questa applicazione consente di gestire direttamente l'apertura e il salvataggio di file. L'oggetto HIERSVR è un diagramma di struttura a più livelli, in cui ciascun nodo è costituito da testo circondato da un rettangolo o da altre forme. Oltre alle funzionalità server, HIERSVR consente di illustrare il trascinamento della selezione OLE e la copia negli Appunti.

Nota sulla sicurezza:

Questo esempio di codice viene fornito solo a scopo dimostrativo e non deve essere utilizzato in applicazioni o siti Web, poiché potrebbe non implementare le tecniche migliori a livello di sicurezza. Microsoft esclude ogni responsabilità per danni diretti o indiretti derivanti dall'utilizzo dell'esempio di codice per scopi diversi da quelli previsti.

Per ottenere gli esempi e le istruzioni per l'installazione:

  • In Visual Studio scegliere Esempi dal menu ?.

    Per ulteriori informazioni, vedere Individuazione dei file di esempio.

  • La versione più recente e l'elenco completo degli esempi sono disponibili in linea alla pagina Visual Studio 2008 Samples.

  • È anche possibile trovare gli esempi sul disco rigido del computer. Per impostazione predefinita, gli esempi e il file Leggimi vengono copiati in una cartella nel percorso \Programmi\Visual Studio 9.0\Samples\. Per le versioni Express di Visual Studio, tutti gli esempi sono disponibili in linea.

Generazione ed esecuzione dell'esempio

Per generare ed eseguire l'esempio HIERSVR

  1. Aprire la soluzione hiersvr.sln.

  2. Scegliere Genera dal menu Genera.

  3. Eseguire HIERSRV come applicazione autonoma per consentirne la registrazione sul sistema.

Diagrammi HIERSRV

Il tipo di documento o di oggetto modificato e visualizzato da HIERSVR è un diagramma di struttura con ereditarietà singola. Ad eccezione del nodo radice, per tutti gli altri nodi del diagramma è presente un solo nodo padre. Ogni nodo padre può contenere diversi nodi figlio. Un organigramma aziendale rappresenta un tipico esempio di diagramma di struttura. L'elenco delle classi MFC presenta le stesse caratteristiche, poiché in queste classi non viene utilizzata l'ereditarietà multipla di C++. Mfcclass.hie è incluso come documento HIERSVR di esempio.

Per ciascun nodo della struttura è definito un insieme minimo di attributi:

  • Description. Stringa di testo costituita da un massimo di 30 caratteri.

  • Shape. Stile del rettangolo che circonda il testo (rettangolo, rettangolo arrotondato o rettangolo ovale).

  • Item Key Link (facoltativo). Nome utilizzato per fare riferimento a un elemento collegato. Se non viene specificato alcun valore, l'impostazione predefinita corrisponde alla stringa della descrizione. Il nome viene visualizzato quando si accede al collegamento utilizzando il comando per la modifica dei collegamenti nell'applicazione client.

Creazione di un diagramma HIERSVR

Ogni nuovo diagramma HIERSVR è costituito da un solo nodo a cui è associato il testo "Root node". Per aggiungere un nodo, selezionare il relativo nodo padre facendo clic su di esso. Quindi scegliere Add Node dal menu Edit. Nella finestra di dialogo Add Node specificare i valori dei tre attributi descritti sopra. Per modificare gli attributi di un nodo, fare clic su di esso, quindi scegliere Change Node. Per spostare un nodo, fare clic su di esso e trascinarlo nella nuova posizione.

Le informazioni relative alla gerarchia verranno importate come file di testo formattato come segue: il testo di ciascuna riga (delimitata da un avanzamento riga) rappresenta la descrizione del nodo. il numero di caratteri di tabulazione che precedono il testo indica il livello del nodo all'interno della gerarchia. Nella directory dell'esempio HIERSVR, Mfcclass.txt rappresenta il file di testo d'importazione per Mfcclass.hie, il file HIERSVR nativo.

Per collegare un diagramma di struttura a un documento client, è necessario innanzitutto salvare il file in HIERSVR. Quindi selezionare il nodo che si desidera copiare utilizzando il comando Edit Copy. Con questa operazione il collegamento viene copiato negli Appunti. Inoltre, il testo del nodo selezionato viene copiato negli Appunti nel formato CF_TEXT, mentre l'intera gerarchia dei nodi viene copiata nel formato HIERSVR nativo. Il salvataggio del documento è necessario per assegnare un nome documento al formato del collegamento. Infine, nell'applicazione client, scegliere Edit Paste Link (oppure Paste Link dal menu Edit Paste Special). Il collegamento verrà visualizzato nel documento client come il nodo selezionato prima di attivare il comando Edit Copy. Verrà visualizzato anche il rettangolo.

Per incorporare un diagramma di struttura in un documento client, è possibile utilizzare una procedura di copia negli Appunti simile a quella descritta sopra per il collegamento dell'oggetto oppure l'opzione Insert New Object nell'applicazione client. Se si sceglie la procedura di copia negli Appunti, scegliere Edit Paste invece di Edit Paste Link nell'applicazione client. Nel documento client verrà incorporata solo la parte della gerarchia che inizia in corrispondenza del nodo selezionato.

Indipendentemente dal fatto che il diagramma venga collegato o incorporato, nella finestra dell'applicazione client verrà visualizzato solo il nodo di primo livello selezionato. Per visualizzare anche il resto del diagramma, è necessario avviare HIERSVR dall'applicazione client facendo doppio clic sull'elemento.

Server di modifica visiva

Nell'esempio HIERSVR vengono illustrate le derivazioni di classe necessarie per implementare un'applicazione server di modifica visiva completa. Vengono inoltre presentate alcune delle più comuni interfacce utente di applicazioni client per le quali è necessario scrivere codice aggiuntivo.

Le tre classi del framework utilizzate per implementare un'applicazione server di modifica visiva sono illustrate dagli elementi seguenti:

  • Oggetto COleTemplateServer, memorizzato come variabile membro m_server nella classe di applicazioni di HIERSVR

  • Classe CServerDoc di HIERSVR, derivata da COleServerDoc.

  • Classe CServerItem di HIERSVR, derivata da COleServerItem.

  • Classe CInPlaceFrame di HIERSVR, derivata da COleIPFrameWnd; originariamente creata mediante la Creazione guidata applicazioni.

Parole chiave

Nell'esempio vengono illustrate le seguenti parole chiave:

AfxGetMainWnd; AfxMessageBox; AfxOleInit; AfxThrowMemoryException; AfxThrowNotSupportedException; AfxThrowResourceException; CArchive::Close; CCmdTarget::BeginWaitCursor; CCmdTarget::EndWaitCursor; CCmdUI::Enable; CCmdUI::SetCheck; CControlBar::EnableDocking; CControlBar::GetBarStyle; CControlBar::SetBarStyle; CDC::GetDeviceCaps; CDC::LPtoDP; CDC::LPtoHIMETRIC; CDC::SelectObject; CDC::SetMapMode; CDC::SetViewportExt; CDC::SetWindowExt; CDialog::DoModal; CDialog::OnInitDialog; CDocTemplate::SetServerInfo; CDocument::DeleteContents; CDocument::GetFirstViewPosition; CDocument::GetNextView; CDocument::OnNewDocument; CDocument::SetModifiedFlag; CDocument::UpdateAllViews; CFile::Open; CFileDialog::DoModal; CFileDialog::GetPathName; CFontDialog::DoModal; CFontDialog::GetColor; CFrameWnd::Create; CFrameWnd::DockControlBar; CFrameWnd::EnableDocking; CFrameWnd::LoadFrame; CMenu::GetSubMenu; CMenu::LoadMenu; CMenu::TrackPopupMenu; CObList::AddHead; CObList::AddTail; CObList::GetCount; CObList::GetHeadPosition; CObList::GetNext; CObList::GetTail; CObList::RemoveAll; CObList::RemoveAt; CObject::AssertValid; CObject::Dump; CObject::Serialize; COleDataObject::AttachClipboard; COleDataObject::GetFileData; COleDataObject::IsDataAvailable; COleIPFrameWnd::OnCreateControlBars; COleLinkingDoc::OnGetLinkedItem; COleServerDoc::GetItemPosition; COleServerDoc::IsInPlaceActive; COleServerDoc::OnDeactivateUI; COleServerDoc::OnGetEmbeddedItem; COleServerDoc::OnSetItemRects; COleServerDoc::RequestPositionChange; COleServerDoc::UpdateAllItems; COleServerItem::CopyToClipboard; COleServerItem::DoDragDrop; COleServerItem::GetClipboardData; COleServerItem::GetDataSource; COleServerItem::GetDocument; COleServerItem::GetItemName; COleServerItem::IsLinkedItem; COleServerItem::OnDraw; COleServerItem::OnGetClipboardData; COleServerItem::OnGetExtent; COleServerItem::OnOpen; COleServerItem::OnRenderFileData; COleServerItem::SetItemName; COleTemplateServer::ConnectTemplate; COleTemplateServer::UpdateRegistry; CPen::CreatePen; CRect::BottomRight; CRect::Height; CRect::InflateRect; CRect::IntersectRect; CRect::OffsetRect; CRect::PtInRect; CRect::Size; CRect::TopLeft; CScrollView::GetDeviceScrollPosition; CScrollView::ScrollToPosition; CScrollView::SetScrollSizes; CString::Empty; CString::GetLength; CString::IsEmpty; CToolBar::Create; CToolBar::LoadBitmap; CToolBar::SetButtons; CView::GetDocument; CView::OnDragEnter; CView::OnDragLeave; CView::OnDragOver; CView::OnDraw; CView::OnDrop; CView::OnInitialUpdate; CView::OnPrepareDC; CView::OnUpdate; CWinApp::AddDocTemplate; CWinApp::EnableShellOpen; CWinApp::ExitInstance; CWinApp::InitInstance; CWinApp::LoadStdProfileSettings; CWinApp::RegisterShellFileTypes; CWnd::ClientToScreen; CWnd::DoDataExchange; CWnd::GetClientRect; CWnd::GetParentFrame; CWnd::Invalidate; CWnd::InvalidateRect; CWnd::OnCreate; CWnd::OnKeyDown; CWnd::OnLButtonDblClk; CWnd::OnLButtonDown; CWnd::OnRButtonDown; CWnd::OnSize; CWnd::SetOwner; CWnd::ShowWindow; CWnd::UpdateWindow; CreateFontIndirect; DragAcceptFiles; EnableWindow; ExtTextOut; GetDeviceCaps; GetSysColor; GetTextExtent; GetWindowTextLength; IsChild; LPtoDP; LineTo; LoadBitmap; MoveTo; MulDiv; RGB; RectVisible; Rectangle; RegisterClipboardFormat; RoundRect; SelectObject; SetTextColor; SetViewportExt; SetWindowExt; SetWindowOrg; _alloca; afxMemDF; lstrcpy; memset; min; strnlen; wcstombs

Nota:

Alcuni esempi, tra cui il presente, non sono stati cambiati per riflettere le modifiche apportate alle procedure guidate, alle librerie e al compilatore di Visual C++, tuttavia forniscono comunque le istruzioni per completare l'attività desiderata.

Vedere anche

Altre risorse

Esempi relativi ad MFC