Windows XP-thema's toepassen op Office COM-invoegtoepassingen

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 830033 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

Wanneer u een COM-invoegtoepassing voor Microsoft Office-programma maken (bijvoorbeeld Microsoft Visio), wordt het uiterlijk van die voldoen aan door Standaard worden de standaard Office-weergave. Met Microsoft Windows XP u kunt kiezen uit een aantal visuele stijlen (of thema's) aanpassen de weergave van een Microsoft Windows-programma.

Alleen Windows-thema 's expliciet ingeschakeld voor een COM-invoegtoepassing, het uiterlijk van de invoegtoepassing niet Deze kleurenschema toonaangevende de invoegtoepassing weergegeven gedateerde wijzigen of out-van-synch met het programma waarin het zich bevindt. Met Microsoft Visual C++ of Microsoft Visual Studio.NET talen kunt u uw COM inschakelen invoegtoepassing opt-in voor Windows-thema's.

Wanneer u een invoegtoepassing voor inschakelen Windows-thema's thema's hebben alleen de vormgeving van de invoegtoepassing. De functionaliteit van de invoegtoepassing wordt niet beïnvloed.

Disclaimer

Microsoft biedt programming voorbeelden ter illustratie, zonder expliciete of impliciete garantie. Dit omvat, maar is niet beperkt tot impliciete garanties van verkoopbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal wordt aangetoond en de hulpmiddelen maken en procedures voor foutopsporing worden gebruikt. Ondersteuningstechnici van Microsoft kunt de functionaliteit van een bepaalde procedure uitgelegd. Zij zal deze voorbeelden om extra functionaliteit of procedures uw specifieke behoeften te bouwen echter niet wijzigen.

Microsoft Visual Basic 6.0

Visual Basic 6.0 biedt geen ondersteuning voor thema's. Invoegtoepassingen kan niet met thema met Visual Basic 6.0.

Microsoft Visual C++ 6.0

Visual C++ 6.0 met een COM-invoegtoepassing voor opt-in Windows inschakelen XP-thema's volgt:
  1. Maak een manifestbestand de volgende bevat informatie. De informatie voor uw specifieke invoegtoepassing aanpassen:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
     <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
      <noInherit/>
      <assemblyIdentity 
       processorArchitecture="*" 
       type="win32" 
       name="MyOfficeNetAddin"
       version="1.0.0.0"/>
       <description>My Office Addin built with .Net</description> 
       <dependency optional="yes">                              
        <dependentAssembly>                   
         <assemblyIdentity                 
          type="win32"                
          name="Microsoft.Windows.Common-Controls" 
          version="6.0.1.0"           
          publicKeyToken="6595b64144ccf1df" 
          language="*"                
          processorArchitecture="*"/>
        </dependentAssembly>                  
       </dependency>                             
     </assembly>
    
  2. Een van de volgende handelingen uit:
    • De volgende instructie preprocessor omvatten:
      #define ISOLATION_AWARE_ENABLED
      
    • Compileren met:
      /D ISOLATION_AWARE_ENABLED
      
  3. Het manifestbestand toevoegen aan het bronbestand in de bijvoorbeeld:
    #include "windows.h"
    ISOLATIONAWARE_MANIFEST_RESOURCE_ID RT_MANIFEST "mydllname.dl.manifest"
    

Microsoft Visual Studio.NET en beheerde talen

Visual Studio gebruiken.NET en de.NET Framework Windows inschakelen XP-thema's voor een COM-invoegtoepassing, volgt.

OpmerkingIn dit voorbeeld C# gebruikt thema activeringscontext inschakelen op een Windows-formulier. Controleer ook voor Windows-thema's voor knoppen, selectievakjes, keuzerondjes en groep selectievakjes deFlatStyleDeze objecten moet worden ingesteld opSysteem.
  1. De volgende informatie opnemen in een bestand:. cs. Aanpassen de informatie voor uw specifieke invoegtoepassing:
    using System.Runtime.InteropServices;
    using System;
    using System.Security;
    using System.Security.Permissions;
    using System.Collections;
    using System.IO;
    using System.Text;
    using System.Windows.Forms;
    
    namespace MyOfficeNetAddin
    {
        /// <devdoc>
        ///     This class is intended to use with the C# 'using' statement in
        ///     to activate an activation context for turning on visual theming at
        ///     the beginning of a scope, and have it automatically deactivated
        ///     when the scope is exited.
        /// </devdoc>
    
    [ SuppressUnmanagedCodeSecurity ]
    internal class EnableThemingInScope : IDisposable
    {
       // Private data
    	  private uint  cookie;
       private static ACTCTX enableThemingActivationContext;
       private static IntPtr hActCtx;
       private static bool contextCreationSucceeded = false;
    
       public EnableThemingInScope(bool enable)
       {
       cookie = 0;
       if (enable && OSFeature.Feature.IsPresent(OSFeature.Themes))
       {
        if (EnsureActivateContextCreated())
        {
         if (!ActivateActCtx(hActCtx, out cookie))
         {
             // Be sure cookie always zero if activation failed
             cookie = 0;
         }
        }
       }
      }
    
      ~EnableThemingInScope()
      {
       Dispose(false);
      }
    
      void IDisposable.Dispose()
      {
       Dispose(true);
      }
    
      private void Dispose(bool disposing)
      {
       if (cookie != 0)
       {
        if (DeactivateActCtx(0, cookie))
        {
           // deactivation succeeded...
           cookie = 0;
        }
       }
      }
    
      private bool EnsureActivateContextCreated()
      {
       lock (typeof(EnableThemingInScope))
       {
        if (!contextCreationSucceeded)
        {
         // Pull manifest from the .NET Framework install
         // directory
    
         string assemblyLoc = null;
                            
         FileIOPermission fiop = new FileIOPermission(PermissionState.None);
         fiop.AllFiles = FileIOPermissionAccess.PathDiscovery;
         fiop.Assert();
         try
         {
          assemblyLoc = typeof(Object).Assembly.Location;
         }
         finally
         { 
          CodeAccessPermission.RevertAssert();
         }
    
         string manifestLoc = null;
         string installDir = null;
         if (assemblyLoc != null)
         {
          installDir = Path.GetDirectoryName(assemblyLoc);
          const string manifestName = "XPThemes.manifest";
          manifestLoc = Path.Combine(installDir, manifestName);
         }
    
         if (manifestLoc != null && installDir != null)
         {
          enableThemingActivationContext = new ACTCTX();
          enableThemingActivationContext.cbSize = Marshal.SizeOf(typeof(ACTCTX));
    	     enableThemingActivationContext.lpSource = manifestLoc;
    
          // Set the lpAssemblyDirectory to the install
          // directory to prevent Win32 Side by Side from
          // looking for comctl32 in the application
          // directory, which could cause a bogus dll to be
          // placed there and open a security hole.
    	     enableThemingActivationContext.lpAssemblyDirectory = installDir;
    	     enableThemingActivationContext.dwFlags = ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID; 
     
    	     // Note this will fail gracefully if file specified
          // by manifestLoc doesn't exist.
          hActCtx = CreateActCtx(ref enableThemingActivationContext);
          contextCreationSucceeded = (hActCtx != new IntPtr(-1));
         }
        }
    
        // If we return false, we'll try again on the next call into
        // EnsureActivateContextCreated(), which is fine.
        return contextCreationSucceeded;
       }
      }
    
      // All the pinvoke goo...
      [DllImport("Kernel32.dll")]
      private extern static IntPtr CreateActCtx(ref ACTCTX actctx);
      [DllImport("Kernel32.dll")]
      private extern static bool ActivateActCtx(IntPtr hActCtx, out uint lpCookie);
      [DllImport("Kernel32.dll")]
      private extern static bool DeactivateActCtx(uint dwFlags, uint lpCookie);
    
      private const int ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 0x004;
                
      private struct ACTCTX 
      {
       public int       cbSize;
       public uint      dwFlags;
       public string    lpSource;
       public ushort    wProcessorArchitecture;
       public ushort    wLangId;
       public string    lpAssemblyDirectory;
       public string    lpResourceName;
       public string    lpApplicationName;
      }
     }
    }
    
  2. Uw formulier maken met de volgende wrapper. Deze procedure thema activeringscontext duwt voor besturingselementen maken:
    using( new EnableThemingInScope( true ) )
    {
     Form1 form1 = new Form1();
     form1.CreateControl();
    }
    

Referenties

Voor meer informatie over Windows XP visuele stijlen (thema), Ga naar de volgende Microsoft MSDN-website:
http://msdn2.Microsoft.com/en-us/library/ms997646.aspx

Eigenschappen

Artikel ID: 830033 - Laatste beoordeling: zaterdag 5 maart 2011 - Wijziging: 2.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Office Basic 2007
  • Microsoft Office Basic Edition 2003
  • Microsoft Office Professional 2007
  • Microsoft Office Professional Edition 2003
  • Microsoft Office Small Business 2007
  • Microsoft Office Small Business Edition 2003
  • Microsoft Office Standard 2007
  • Microsoft Office Home and Student 2007
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Office Excel 2007
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2003
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft Office Project Professional 2007
  • Microsoft Office Project Professional 2003
  • Microsoft Office Project Standard 2007
  • Microsoft Office Project Standard 2003
  • Microsoft Office Publisher 2007
  • Microsoft Office Publisher 2003
  • Microsoft Office Visio Professional 2007
  • Microsoft Office Visio Professional 2003
  • Microsoft Office Visio Standard 2007
  • Microsoft Office Word 2007
Trefwoorden: 
kbprogramming kbcode kbhowtomaster kbmt KB830033 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:830033

Geef ons feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com