Maison > développement back-end > Golang > Comment définir l'icône de la barre de titre à l'aide de Gio

Comment définir l'icône de la barre de titre à l'aide de Gio

WBOY
Libérer: 2024-02-09 21:18:09
avant
615 Les gens l'ont consulté

如何使用 Gio 设置标题栏图标

l'éditeur php Yuzai vous présente aujourd'hui une méthode simple et pratique, c'est-à-dire comment utiliser Gio pour définir l'icône de la barre de titre. Lors du développement d’applications de bureau, une belle icône dans la barre de titre peut augmenter l’attrait et le professionnalisme de l’application. Nous pouvons y parvenir facilement en utilisant Gio, une puissante bibliothèque graphique. Dans cet article, nous vous expliquerons comment configurer une icône de barre de titre à l'aide de Gio pour que votre application se démarque visuellement. Nous allons jeter un coup d'oeil!

Contenu de la question

J'ai un problème avec Gio UI (https://gioui.org/).

Comme vous pouvez le voir, l'icône de la fenêtre n'est pas définie et il n'y a aucune option pour la définir.

Lorsque vous créez une nouvelle fenêtre, vous ne pouvez définir que le titre :

w := app.NewWindow(app.Title("My APP Title"))
Copier après la connexion

Mais si je comprends bien, l'icône doit être chargée à partir du manifeste de ressources :

go\pkg\mod\[email protected]\app\internal\windows\windows.go
Copier après la connexion

//

func LoadImage(hInst syscall.Handle, res uint32, typ uint32, cx, cy int, fuload uint32) (syscall.Handle, error) {
    h, _, err := _LoadImage.Call(uintptr(hInst), uintptr(res), uintptr(typ), uintptr(cx), uintptr(cy), uintptr(fuload))
    if h == 0 {
        return 0, fmt.Errorf("LoadImageW failed: %v", err)
    }
    return syscall.Handle(h), nil
}
Copier après la connexion

Pour créer le manifeste de ressources, j'utilise go winres : https://github.com/tc-hib/go-winres

J'ai correctement défini l'icône de l'application dans winres.json et l'icône dans la barre des tâches comme décrit dans le guide.

Je pense qu'il devrait y avoir un moyen de définir l'icône de la fenêtre dans le titre de l'application, mais je ne trouve pas quelle clé je dois spécifier dans le json :

{
  "RT_GROUP_ICON": {
    "APP": {
      "0000": [
        "icon_64.png",
        "icon_48.png",
        "icon_32.png",
        "icon_16.png"
      ]
    },
    "OTHER": {
      "0000": "icon.png"
    },
    "#42": {
      "0409": "icon_EN.ico",
      "040C": "icon_FR.ico"
    }
  }
}
Copier après la connexion

Solution de contournement

La méthode officielle consiste à utiliser l'outil gogio, qui a malheureusement très peu de documentation et a beaucoup de limitations par rapport à go-winres.

Installez-le en utilisant go install gioui.org/cmd/gogio@latest

Compilez ensuite votre application à l'aide de la commande suivante :

@GOOS=windows GOARCH=amd64 gogio -buildmode=exe -icon=appicon.png -arch=amd64 -target=windows -o myapp.exe app-path/
Copier après la connexion

Modifiez le schéma et les chemins en fonction de vos besoins.

Quoi qu'il en soit, d'après ce que je comprends, gogio ne prend en charge que le png, il génère automatiquement toutes les résolutions requises.

Depuis que je voulais utiliser go-winres, je viens d'utiliser Resource Hacker pour décompiler la ressource exe.

J'ai trouvé que pour définir l'icône, vous devez définir winres.json comme ceci :

{
  "RT_GROUP_ICON": {
    "#1": {
      "0409": "myicon_EN.ico"
    }
  },
  "RT_MANIFEST": {
    "#1": {
      "0409": 
// Your settings
  }
}
Copier après la connexion

Ensuite, vous pouvez utiliser go build et go-winres pour compiler normalement, n'oubliez pas de définir -ldflags=-H=windowsgui

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal