Maison  >  Article  >  développement back-end  >  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
WBOYavant
2024-02-09 21:18:09552parcourir

如何使用 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"))

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

//

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
}

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"
    }
  }
}

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/

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 a> 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
  }
}

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer