Je suis en train de programmer une interface graphique avec winapi, mais mon application ressemble au thème Windows 98. Comment utiliser le thème de la fenêtre en cours?Comment utiliser le thème de l'interface graphique par défaut sous Windows?
J'ai essayé de créer un fichier manifeste, mais cela ne fonctionne pas.
Test.cpp
# include <windows.h>
int WINAPI WinMain(
HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow
){
MessageBox(NULL, "Hello World!", "Hello", MB_OK);
return 0;
}
Test.exe.Manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
name="App.Win.Test"
processorArchitecture="x86"
version="1.0.0.0"
type="win32"/>
<description>Test</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Manifest.rc
1 24 "Test.exe.Manifest"
Je compilé avec Mi Compilateur nGW sur Windows XP SP3. Mais quand j'exécute le fichier exécutable, il se ferme.
g++ Test.cpp -c
windres Manifest.rc -O coff -o Manifest.res
g++ Test.o Manifest.res -o Test.exe -Wl,-subsystem,windows
Sans les fichiers manifestes et de ressources, cela fonctionne, mais utilise le thème Windows 98.
Merci
Edit:
Merci, maintenant il fonctionne.
J'ai copié le fichier manifeste à partir d'un tutoriel et je n'ai pas appelé InitCommonControls().
InitCommonControls() fonctionne.
J'ai dû éditer mon commctrl.h, parce que InitCommonControlsEx() a été désactivé là, et fonctionne maintenant.
commande Linker a changé:
g++ Test.o Manifest.res -o Test.exe -Wl,-subsystem,windows -lcomctl32
Avez-vous essayé d'appeler InitCommonControls ou InitCommonControlsEx? – Jon