Tag: C
Aggiungere XP/Vista/Seven visual style ad applicazioni Visual C++ 6
by gurucoder on Feb.20, 2010, under C / C++
Sebbene ormai questo IDE di programmazione sia decisamente sorpassato ed abbia fatto strada a tool di sviluppo più avanzati quali Visual Studio 2008 e 2010 ( al momento ancora in versione Release Candidate). Esistono ancora molti progetti che sono stati realizzati in VC 6, ma che si vorrebbe adottassero lo stile “alla XP” per la visualizzazione.
Il primo passo per raggiungere quato obbiettivo è quello di realizzara un file detto Manifest. Si tratta di un file XML che contiene una serie di direttive al Sistema Operativo in modo da venire trattato da quest’ ultimo nel modo migliore. Per convenzione un file manifest per il progetto con nome proj1, viene denominato proj1.exe.manifest e deve avere una struttura come questa:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="Gurucoder.Styles"
type="win32"
/>
<description>Using XP styles</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Per forzare la nostra applicazione ad utilizzara questo Manifest, bisogna agire sui file resource.h e proj1.RC:
Nel file resource.h bisogna inserire questa riga di definizione:
#define MANIFEST_RESOURCE_ID 1
Nel file proj1.RC invece :
MANIFEST_RESOURCE_ID 24 MOVEABLE PURE "res\\proj1.exe.manifest"
Un ultima operazione è quella di modificare i font di tutte le dialog dell’ applicazione da MS Sans Serif ad un qualunque tipo di carattere TrueType ( Tahoma ad esempio ). In caso contrario, XP non sarà in grado di applicare il manifest lasciando il vecchio stile di visualizzazione.
Per garantire che lo stile venga effettivamente caricato ed utilizzato dal sistema operativo all’ atto del lancio della vostra applicazione, è assolutamente necessario effettuare sia l’ include della libreria comctl32.lib e richiamare all’ interno del main la funzione InitCommonControl(). In caso contrario sarà impossibile per il sistema operativo inizializzare l’ interfaccia “Common Control”, per l’ appunto, e la vostra applicazione non potrà essere visualizzata.
Il gioco è fatto, ricompilate tutto ed eseguite!
L’ Operazione XOR in C
by gurucoder on Dec.29, 2009, under C / C++
Oggi vi voglio parlare dell’ operatore XOR e della sua applicazione al linguaggio C…
In linea di principio la tabella di verità relativa a questo operatore logico è:
Osservando la tabella si può comprendere come in realtà l’operazione logica ritorni sempre risultato VERO per p != q . Un altro aspetto della XOR è che di fatto rappresenta l’operazione di addizione senza effetuare il conteggio del riporto entrante ( carry ) ad esempio:
1110 xor 1001 = 0111
In C , l’ OR esclusivo viene applicato tramite l’operatore ^ che effettua una XOR bit a bit. Quindi avendo una variabile di questo tipo:
int a; int MASK; int res; a = 10011010; MASK = 11111111; res = a ^ MASK ;
Il valore di res sarà: 01100101
L’ algoritmo di XOR può essere utilizzato ad esempio per implementare un sistema di criptaggio / decriptaggio delle informazioni: la variabile MASK infatti, fa da chiave sia in fase di codifica sia per la decodifica. Applicando l’operazione di XOR tra il risultato del precedente esempio (res) e la variabile MASK si riottiene di nuovo il valore di a.
Modificare le icone delle Libraries di Windows 7
by gurucoder on Dec.27, 2009, under Windows
Ecco un modo semplice per modificare le icone delle “Librerie” introdotte in Windows 7. Come potete vedere l’icona della libreria “Develop” è la stessa di quella utilizzata per Documents. Il mio scopo è quello di riuscire a inserirne una a mio piacimento.
Prima di tutto dalla barra di indirizzi di Windows Explorer o anche dal menù Start sotto la voce “Run..” inserite questo link: %appdata%\microsoft\windows\libraries.Se avete la versione Italiana di Seven invece: %appdata%\microsoft\windows\librerie .
Vi viene presentato l’ elenco delle librerie salvate nel sistema. A questo punto basta trascinare il file relativo alla libreria di cui volete modificare l’icona in un editor di testo, wordpad ad esempio.
Si tratta di un file XML che contene tutte le informazioni relative a quella determinata Libreria. Il tag che ci interessa è <iconReference> che determina il riferimento al file .ico o .dll che contiene l’ icona utilizzata dalla libreria. Basterà inserire il path all’ icona desiderata per ottenere il risultato voluto. Se nel file xml della vostra libreria il tag dovesse essere assente, basterà semplicemente aggiungerlo. Ecco il risultato finale di questo semplice trick:
Prossimamente realizzerò un’ applicazione che possa eseguire questa operazione tramite un’ interfaccia grafica.
Come realizzare un MakeFile
by gurucoder on Sep.13, 2009, under C / C++
In generale quando si ha a che fare con progetti software in C o C++ con un gran numero di file, invece di essere costretti a compilare singolarmente e manualmente ogni file, è possibile utilizzare un’ utility chiamata Make.
Di fatto si tratta di un file di testo con una struttura ben definita che serve da input all’ eseguibile make.exe per compilare, linkare e realizzare l’eseguibile finale del progetto. Una peculiarità di questa utility sta nel fatto che va a controllare anche se un file è stato modificato dall’ ultima compilazione effettuata , in tal caso lo ricompila se no lo linka semplicemente. Questo chiaramente comporta una risparmio di tempo non indifferente se il numero complessivo di file del progetto è molto elevato.

Ma andiamo a osservare la struttura di un MakeFile:
Un MakeFile ha una struttura ben definita del tipo:
target : prerequisiti ... comandi
dove target è solitamente il nome del file generato da un programma, esempi di target sono i file eseguibili o i file oggetto. Il prerequisito è un file usato come input per creare il target (un target spesso dipende da diversi file). Un comando è una azione da eseguire. Una regola può avere più comandi, ciascuno su una riga diversa.
Un esempio di makefile è il seguente :
test : main.o file.o cc -o test main.o file.o main.o : main.c def.h cc -c main.c file.o : file.c def.h cc -c file.c
Si produrrà il file eseguibile test a partire dai file C main.c e file.c e dal file header def.h. Il file target test avrà come prerequisiti i due file main.o e file.o, e il comando, azione da eseguire per ottenere il file target, sarà cc -o test main.o file.o. Analogamente il file target main.o avrà come prerequisiti i due file main.c e def.h. Il comando, azione da eseguire per ottenere il file target, sarà cc -c main.c , eccetera.
Una volta creato il makefile si usa il comando make per compilare il file (o i file) C e produrre l’eseguibile test.exe
E’ importante che il MakeFile sia nella stessa cartella in cui si trovi l’eseguibile make.exe . In caso contrario bisogna inserire anche il path del makefile nella chiamata di make .




