Come applicare temi di Windows XP a componenti aggiuntivi COM di Office

Traduzione articoli Traduzione articoli
Identificativo articolo: 830033 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

Quando si crea un componente aggiuntivo COM per il programma di un Microsoft Office (ad esempio, Microsoft Visio), l'aspetto di tale componente aggiuntivo sarÓ conformi per impostazione predefinita per l'aspetto di Office standard. Tuttavia, con Microsoft Windows XP, Ŕ possibile scegliere da un numero di stili di visualizzazione (o temi) per personalizzare l'aspetto di un programma di Microsoft Windows.

A meno che non i temi di Windows in modo esplicito vengano attivati per un componente aggiuntivo COM, l'aspetto del componente aggiuntivo non modifica queste combinazioni di colori, iniziali del componente aggiuntivo venga visualizzato datato o uscita di sincronizzazione con il programma in cui Ŕ contenuta. Con Microsoft Visual c ++ o i linguaggi Microsoft Visual Studio. NET, Ŕ possibile attivare il COM aggiuntivo per con consenso esplicito in per i temi di Windows.

Quando si attiva un componente aggiuntivo per i temi di Windows, i temi modificare solo l'aspetto del componente aggiuntivo. La funzionalitÓ del componente aggiuntivo non Ŕ interessata.

Dichiarazione di non responsabilitÓ

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia espressa o implicita. Questo include, ma non Ŕ limitato a, le garanzie implicite di commerciabilitÓ o idoneitÓ per uno scopo specifico. Questo articolo si presuppone che conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug di procedure. Tecnici del supporto Microsoft possono spiegare la funzionalitÓ di una particolare procedura. Tuttavia, non modificherÓ questi esempi per fornire funzionalitÓ aggiuntive o creare procedure per soddisfare specifiche esigenze.

Microsoft Visual Basic 6.0

Visual Basic 6.0 non supporta i temi. I componenti aggiuntivi non possono essere tema utilizzando Visual Basic 6.0.

Microsoft Visual c ++ 6.0

Utilizzare Visual c ++ 6.0 per attivare un componente aggiuntivo COM per il servizio con consenso esplicito in a Windows XP temi, attenersi alla seguente procedura:
  1. Creare un file manifesto che contiene le informazioni seguenti. Customize the information for your specific add-in:
    <?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. Effettuare una delle seguenti operazioni:
    • Includere la seguente istruzione del preprocessore:
      #define ISOLATION_AWARE_ENABLED
      
    • Compilare con:
      /D ISOLATION_AWARE_ENABLED
      
  3. Aggiungere il file manifesto nel file di risorse, come nell'esempio riportato di seguito:
    #include "windows.h"
    ISOLATIONAWARE_MANIFEST_RESOURCE_ID RT_MANIFEST "mydllname.dl.manifest"
    

Microsoft Visual Studio .NET e lingue gestiti

Utilizzare Visual Studio .NET e .NET Framework per attivare Windows XP temi per un componente aggiuntivo COM, attenersi alla seguente procedura.

Nota In questo esempio, C# viene utilizzato per attivare un contesto di attivazione a tema in un Windows form. Inoltre, per i temi di Windows da abilitare per pulsanti, caselle di controllo, pulsanti di opzione e caselle di gruppo, deve essere impostare la proprietÓ FlatStyle di tali oggetti su System .
  1. Includere le seguenti informazioni in un file cs. Personalizzare le informazioni per il componente aggiuntivo specifico:
    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. Creare moduli con il wrapper riportato di seguito. Questa procedura si inserisce un contesto di attivazione con tema prima di creare tutti i controlli:
    using( new EnableThemingInScope( true ) )
    {
     Form1 form1 = new Form1();
     form1.CreateControl();
    }
    

Riferimenti

Per ulteriori informazioni su come utilizzare Windows XP visual styles (temi), visitare il seguente sito Web Microsoft MSDN:
http://msdn2.microsoft.com/en-us/library/ms997646.aspx

ProprietÓ

Identificativo articolo: 830033 - Ultima modifica: mercoledý 16 maggio 2007 - Revisione: 6.7
Le informazioni in questo articolo si applicano a:
  • 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 Standard Edition 2003
  • Microsoft Office Home and Student 2007
  • Microsoft Office Student and Teachers Edition 2003
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Office FrontPage 2003
  • 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 Visio Standard 2003
  • Microsoft Office Word 2007
  • Microsoft Office Word 2003
Chiavi:á
kbmt kbprogramming kbcode kbhowtomaster KB830033 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 830033
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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