golang 開發windows應用

閒着無聊又玩go語言找虐。。。——用go開發windows應用程序android

想要用go開發windows應用必須先要安裝必要的組件:
git

   walk集成了不少windows的控件github

go get github.com/lxn/walk

   win是go調用windowsApi的一種實現shell

go get github.com/lxn/win

  rsrc是鏈接walk/win和windows動態鏈接的工具windows

go get github.com/akavel/rsrc

  有了這些咱們就能實際的編碼了工具

  先測試一下winApi的有效性:開發工具

  看了一下這位寫的,比較到位,把以前編譯運行報錯的問題也找到了,恩感謝,可是源碼裏有段字符串拼錯了測試

  更正一下:優化

// GoWin project GoWin.go
package main

import (
    "github.com/lxn/win"
    "strconv"
    "syscall"
)

func _TEXT(_str string) *uint16 {
    return syscall.StringToUTF16Ptr(_str)
}
func _toString(_n int32) string {
    return strconv.Itoa(int(_n))
}
func main() {
    var hwnd win.HWND
    cxScreen := win.GetSystemMetrics(win.SM_CXSCREEN)
    cyScreen := win.GetSystemMetrics(win.SM_CYSCREEN)
    win.MessageBox(hwnd, _TEXT("屏幕長-:"+_toString(cxScreen)+"寬:"+_toString(cyScreen)), _TEXT("消息<a target=\"_blank\" href=\"http://blog.csdn.net/songbohr\">http://blog.csdn.net/songbohr</a>"), win.MB_OK)
}

注意:win組件裏的phd.go中,ui

//這行要註釋,若是你不是WIN7的狂熱愛好者的話
//pdh_AddEnglishCounterW = libpdhDll.MustFindProc("PdhAddEnglishCounterW")

  

  http://blog.csdn.net/songbohr/article/details/10511041

編譯運行成功,注意這裏必須是package main否則不會生產exe

package main

接下來試一下walk能不能行:

package main

import (
    "github.com/lxn/walk"
    . "github.com/lxn/walk/declarative"
    "strings"
)

func main() {
    var inTE, outTE *walk.TextEdit

    MainWindow{
        Title:   "SCREAMO",
        MinSize: Size{600, 400},
        Layout:  VBox{},
        Children: []Widget{
            HSplitter{
                Children: []Widget{
                    TextEdit{AssignTo: &inTE},
                    TextEdit{AssignTo: &outTE, ReadOnly: true},
                },
            },
            PushButton{
                Text: "SCREAM",
                OnClicked: func() {
                    outTE.SetText(strings.ToUpper(inTE.Text()))
                },
            },
        },
    }.Run()
}

編譯運行成功,可是運行沒結果,

搞了半天,仔細看了一下walk的文檔

原來是要這樣搞:

首先新建一個文件好比test.manifest(感受作着絕對是個android粉)填入以下代碼

<?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="*" name="SomeFunkyNameHere" type="win32"/>
        <dependency>
            <dependentAssembly>
                <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
            </dependentAssembly>
        </dependency>
    </assembly>

運行以下命令

rsrc -manifest 你應用的名字.manifest -o rsrc.syso
go build
go build -ldflags="-H windowsgui"

運行生成的exe,就能看到熟悉的windows界面了

感受go開發windows應用仍是不怎麼方便,並且不太經濟,調試和編譯耗費的精力很大,

期待之後開發工具能再進一步優化一下

相關文章
相關標籤/搜索