• 用Nim语言开发windows GUI图形界面程序


    前言

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

    我们一起调试程序到深夜,要是没有他的帮忙,

    我不知道要多久才能迈过这道坎,

    另外“归心”还有其他人也提供了帮助,

    他们都来自于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-32in

    (当然你如果装到别的路径下去了,那就另当别论)

    然后你应该把Nim的bin路径也配置到环境变量中:

    C:Nimin

    这样你就可以使用命令行来编译你的程序了

    (你用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编码,重新保存

    然后再编译一次,就好了

  • 相关阅读:
    通过rabbitmqadmin管理rabbitmq
    OpenCASCADE Incremental Mesh
    RvmTranslator6.6
    PipeCAD之管道标准库PipeStd(2)
    PipeCAD之管道标准库PipeStd
    OpenCASCADE Face Normals
    OpenCASCADE Make Face With Holes
    RvmTranslator6.5 is released
    qmake生成Visual Studio工程
    Levmar:Levenberg-Marquardt非线性最小二乘算法
  • 原文地址:https://www.cnblogs.com/liulun/p/4714858.html
Copyright © 2020-2023  润新知