Nim如何在windows下使用winapi创建窗口
2015-08-12 02:31
495 查看
之前有人问如何在nim里使用CreateWindow, 所以在睡觉之前花了些时间写了个winapi的窗口, 方便大家学习使用.
如果想查找winapi在nim的相关类型或宏可打开windows.nim然后ctrl+f
(nim0.12版本以后需要用nimble安装oldwinapi才有windows.nim, 位置好象在~/.nimble/pkgs里)
如果想查找winapi在nim的相关类型或宏可打开windows.nim然后ctrl+f
(nim0.12版本以后需要用nimble安装oldwinapi才有windows.nim, 位置好象在~/.nimble/pkgs里)
import windows #var hinst = GetModuleHandle(nil) #echo repr hinst proc wndfunc(hwnd: HWND, msg: WINUINT, wparam: WPARAM, lparam: LPARAM): LRESULT{.stdcall.} = case msg of WM_CREATE: discard MessageBox(hwnd, "Hello Nim", nil, 0) of WM_DESTROY: PostQuitMessage(0) else: result = DefWindowProc(hwnd, msg, wparam, lparam) var class_name = "app" var wc:WNDCLASS wc.style = 0 wc.lpfnWndProc = wndfunc wc.cbClsExtra = 0 wc.cbWndExtra = 0 wc.hInstance = 0 wc.hIcon = 0 wc.hCursor = 0 wc.hbrBackground = GetStockObject(BLACK_BRUSH) wc.lpszMenuName = nil wc.lpszClassName = class_name if RegisterClass(wc) == 0: echo "Failed to register class" var hwnd = CreateWindow(class_name, "Nim windows", WS_OVERLAPPEDWINDOW, 100, 100, 240, 160, 0, 0, 0, nil) discard ShowWindow(hwnd, SW_SHOW); discard UpdateWindow(hwnd) var msg:MSG while GetMessage(addr msg, 0, 0, 0) != 0: discard TranslateMessage(addr msg) discard DispatchMessage(addr msg)
相关文章推荐
- 安卓获取远程值http和saop
- Java 泛型数组 不支持
- asp Win7 IIS7.5配置 ASP
- TP上传图片
- 作为码农 ,我们为什么要写作
- 初次尝试用devc++ 写自定义头文件 遇到的问题
- 句子逆序(循环两次)
- Murano Weekly Meeting 2015.08.11
- _DataStructure_C_Impl:求图G中从顶点u到顶点v的一条简单路径
- iOS delegate
- android事件拦截处理机制详解 .--------转
- _DataStructure_C_Impl:在图G中求距离顶点v0最短路径为k的所有顶点
- Linux网络编程(附1)——封装read、write
- [UVA 1629]Cake slicing[记忆化搜索]
- _DataStructure_C_Impl:Floyd算法求有向网N的各顶点v和w之间的最短路径
- Deep Learning 和 Knowledge Graph 引爆大数据革命
- 设计模式: 11 迪米特法则
- _DataStructure_C_Impl:Dijkstra算法求最短路径
- 设计模式:10 模板方法模式
- 知识图谱——机器大脑中的知识库