Sdílet prostřednictvím


Servery: Implementace oken s rámečkem na místě

Tento článek vysvětluje, co je nutné udělat při implementaci místních oken rámečku v serverové aplikaci pro vizuální úpravy, pokud k vytvoření serverové aplikace nepoužíváte průvodce aplikací. Místo postupu popsaného v tomto článku můžete použít existující místní třídu oken oken z aplikace generované aplikací nebo ukázky poskytované v jazyce Visual C++.

Deklarace místní třídy oken s rámečkem

  1. Odvození místní třídy rámečku okna z COleIPFrameWnd.

    • Použijte makro DECLARE_DYNCREATE v souboru záhlaví třídy.

    • V souboru implementace třídy (.cpp) použijte makro IMPLEMENT_DYNCREATE. To umožňuje, aby objekty této třídy byly vytvořeny architekturou.

  2. Deklarujte COleResizeBar člen ve třídě okna s rámečkem. To je potřeba, pokud chcete podporovat místní změnu velikosti v serverových aplikacích.

    Deklarujte obslužnou rutinu OnCreate zprávy (pomocí Průvodce třídou) a volejte Create členaCOleResizeBar, pokud jste ji definovali.

  3. Pokud máte panel nástrojů, deklarujte CToolBar člena ve třídě okna rámečku.

    OnCreateControlBars Přepište členovou funkci a vytvořte panel nástrojů, když je server aktivní. Příklad:

    BOOL CInPlaceFrame::OnCreateControlBars(CFrameWnd* pWndFrame, CFrameWnd* pWndDoc)
    {
       UNREFERENCED_PARAMETER(pWndDoc);
    
       // Set owner to this window, so messages are delivered to correct app
       m_wndToolBar.SetOwner(this);
    
       // Create toolbar on client's frame window
       if (!m_wndToolBar.CreateEx(pWndFrame, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
          | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
          !m_wndToolBar.LoadToolBar(IDR_SRVR_INPLACE))
       {
          TRACE0("Failed to create toolbar\n");
          return FALSE;
       }
    
       // TODO: Delete these three lines if you don't want the toolbar to be dockable
       m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
       pWndFrame->EnableDocking(CBRS_ALIGN_ANY);
       pWndFrame->DockControlBar(&m_wndToolBar);
    
       return TRUE;
    }
    

    Podívejte se na diskuzi o tomto kódu podle kroku 5.

  4. Do hlavního souboru .cpp zahrňte hlavičkový soubor pro tuto místní třídu rámečku.

  5. Ve InitInstance třídě aplikace zavolejte SetServerInfo funkci objektu šablony dokumentu, která určuje prostředky a místní okno rámečku, které se mají použít při otevřených a místních úpravách.

Řada volání funkcí v if příkazu vytvoří panel nástrojů ze zadaných prostředků serveru. V tomto okamžiku je panel nástrojů součástí hierarchie oken kontejneru. Vzhledem k tomu, že tento panel nástrojů je odvozen od CToolBar, předá jeho zprávy vlastníkovi, okno rámce aplikace kontejneru, pokud nezměníte vlastníka. Proto je potřeba volat SetOwner . Toto volání změní okno, ve kterém se příkazy odesílají jako místní okno rámce serveru, což způsobí předání zpráv na server. To umožňuje serveru reagovat na operace na panelu nástrojů, který poskytuje.

ID rastrového obrázku panelu nástrojů by mělo být stejné jako ostatní místní prostředky definované v serverové aplikaci. Podrobnosti najdete v nabídkách a prostředcích: Doplňky serveru.

Další informace naleznete v tématu COleIPFrameWnd, COleResizeBar a CDocTemplate::SetServerInfo v referenční dokumentaci knihovny tříd.

Viz také

Servery
Servery: Implementace serveru
Servery: Implementace dokumentů serveru
Servery: Serverové položky