這篇文章具有很強的時效性,是在2023年2月16日寫的,這時go1還沒有發布,當前的go編譯器還無法嵌入資源檔案。
接上篇。我們做出了乙個簡單的窗體,但有兩個重大缺陷:沒有程式圖示和沒有應用系統主題。現在我們就來著手解決。
建立乙個資源檔案(推薦使用resedit),在其中加入圖示(用作程式圖示)和乙個manifest檔案(用於啟用系統主題),如下圖所示。
現在**目錄裡面應該擁有以下檔案。
之後,就要用到windres這個工具了,它的作用是把乙個資源檔案(*.rc)編譯成*.o,之後就可以使用go的pack工具把*.o一起包裝到exe檔案裡。命令列如下。
windres resource.rc -o temp-rc.o
執行之後可以看到,系統主題也有了。
至此,已經能用go開發一些小工具了。另外,gform還提供了從資源檔案中讀取ico、png、jpg的介面,為自繪控制項提供了便利。
讀取資源
gform.newbitmapfromresource(instance w32.hinstance, resname *uint16, restype *uint16, background color) (*bitmap, error)
用法//此處對應資源檔案中的id
idr_droparrow = 108
bmp, err := gform.newbitmapfromresource(
syscall.stringtoutf16ptr("png"), //資源檔案中的資源型別
w32.makeintresource(idr_droparrow), //資源id
gform.rgb(139, 190, 37)) //透明填充色
讀取圖示資源
gform.newiconfromresource(instance w32.hinstance, resid uint16) (*icon, error)
用法idi_icon1 = 101
ico, err := gform.newiconfromresource(
w32.makeintresource(idi_icon1)) //圖示資源id
讀取對話方塊資源
gform.newdialogfromresid(parent controller, resid uint) *dialog
用法idd_main = 103
mainform = gform.newdialogfromresid(nil, idd_main)
mainform.center()
mainform.show()
這個就有意思了,在沒有完整的窗體設計器出現之前,resedit已經可以協助很多控制項定位的工作了!
windows下用go語言寫程式
linux下,google的go語言安裝起來很方便,用起來也很爽,幾行 就可以實現很強大的功能。現在的問題是我想在windows下玩 其實windows下也不麻煩,具體見下文。二 寫go 檔案 test.go 如下 package main import fmt func main test 四 批...
Go語言開發Windows應用
go語言開發windows應用 當第一次看到go程式在windows平台生成可執行的exe檔案,就宣告了windows應用也一定是go語言的戰場。go不是指令碼語言,但卻有著指令碼語言的輕便簡單的特性。相較於php和python之類以伺服器控制台為主要戰場的指令碼語言來說,go語言是真正的圓了 動態...
Go語言開發Windows應用
當第一次看到go程式在windows平台生成可執行的exe檔案,就宣告了windows應用也一定是go語言的戰場。go不是指令碼語言,但卻有著指令碼語言的輕便簡單的特性。相較於php和python之類以伺服器控制台為主要戰場的指令碼語言來說,go語言是真正的圓了 動態語言的應用開發夢 這個專案已經實...