用Nim語言開發windows GUI圖形介面程式

liulun發表於2015-08-09

前言

本文得到了“樂師”的大力支援,

我們一起除錯程式到深夜,要是沒有他的幫忙,

我不知道要多久才能邁過這道坎,

另外“歸心”還有其他人也提供了幫助,

他們都來自於QQ群:“Nim開發集中營”469329878;

感興趣的朋友,可以加這個群一起討論

 

配置GUI開發環境

我在這篇部落格中,寫到了Nim開發環境的搭建

那篇部落格中說MingW是必選的,

這對於開發一個普通的Nim程式來說,沒有問題,但要開發GUI程式,還不夠

官方安裝包中所包含的的MingW安裝包有點問題

如果你用編譯命令:--app:gui,編譯你的程式,將會出錯

如果你不用這個編譯命令,那麼在你執行你的程式時,會先開啟一個命令列視窗,再開啟你的GUI程式。

具體為什麼會出錯,我還不是很清楚

(有可能那個MingW的安裝包是64位的,也有可能那個安裝包是閹割版的)

 

所以我們要自己安裝一個MingW,

Nim官方網站推薦到MingW官網去下載64位的安裝包,

MingW官網,要求你先裝一個安裝工具,再通過安裝工具下載你需要的MingW程式

(說實在的,那個安裝工具會搞的你很亂)

我是用“樂師”推薦給我的TDM安裝工具安裝MingW的

 

要注意的是,一定要安裝32位的MinGW

我現在也不是很清楚為什麼64位的MingGW為什麼不行

安裝好之後需要配置一下環境變數,把如下路徑配置到環境變數中:

C:\TDM-GCC-32\bin

(當然你如果裝到別的路徑下去了,那就另當別論)

 

然後你應該把Nim的bin路徑也配置到環境變數中:

C:\Nim\bin

這樣你就可以使用命令列來編譯你的程式了

(你用aporia官方提供的IDE來編譯你的程式,預設是沒有設定--app:gui開關的

 

開發GUI程式

好下面我們寫個程式

# test a Windows GUI application

import
  windows

#proc MessageBox(hWnd: int, lpText, lpCaption: CString, uType: uint): int
#  {stdcall, import: "MessageBox", header: "<windows.h>"}

discard MessageBox(0, "中文試試", "Nimrod GUI Application", 0)

在這個程式中我們使用了windows模組

你可以在這裡看到windows模組提供的API:http://nim-lang.org/docs/windows.html

你還可以使用IUP模組GTK模組開發GUI程式

 

 

編譯並執行程式

然後通過下面的命令列,來編譯這個程式:

nim c --app:gui -d:release  wingui.nim

注:

nim是編譯器

c是compile的縮寫

-app:gui是編譯成gui程式的開關

-d:release是release編譯開關

wingui.nim是程式原始檔

這行命令必須在程式原始檔所在目錄下執行

命令執行完成後,在同目錄下會生成可執行檔案

執行這個程式,你會發現中文亂碼:

這是你只要把原始碼檔案改成ANSI或者gb2312編碼,重新儲存

然後再編譯一次,就好了

 

相關文章