在上次中,刚刚学过了  弹窗效果。这里再接着学习一下怎样创建一个窗口。

还是老路子,先上代码:

package main

import (
"github.com/lxn/go-winapi"
"syscall"
"strconv"
"unsafe"
) var (
orainWndProc winapi.HWND
) const(
winWidth int32 = 500
winHeight int32 = 300
) func _TEXT(_str string) *uint16{
return syscall.StringToUTF16Ptr(_str)
} func _toString(_n int32) string{
return strconv.Itoa(int(_n))
} func WndProc(hwnd winapi.HWND,msg uint32,wparam uintptr,lparam uintptr) uintptr{
return winapi.CallWindowProc(uintptr(orainWndProc),hwnd,msg,wparam,lparam)
} func main(){
var message winapi.MSG
var hwnd winapi.HWND
var wproc uintptr
hwnd = winapi.CreateWindowEx(
winapi.WS_EX_CLIENTEDGE,
_TEXT("EDIT"),
_TEXT("Hello World"),
winapi.WS_OVERLAPPEDWINDOW,
(winapi.GetSystemMetrics(winapi.SM_CXSCREEN)-winWidth)>>1,
(winapi.GetSystemMetrics(winapi.SM_CYSCREEN)-winHeight)>>1,
winWidth,
winHeight,
0,
0,
winapi.GetModuleHandle(nil),
unsafe.Pointer(nil))
wproc = syscall.NewCallback(WndProc)
orainWndProc = winapi.HWND(winapi.SetWindowLong(hwnd,winapi.GWL_WNDPROC, int32(wproc)))
winapi.ShowWindow(hwnd,winapi.SW_SHOW)
for{
if winapi.GetMessage(&message,0,0,0) == 0{break}
winapi.TranslateMessage(&message)
winapi.DispatchMessage(&message)
}
}

看起来非常复杂,细心的话会发现事实上这些都是引用了WINDOW提供的API,咱们能够阅读WIN提供的各API生成我们所须要的界面窗口。

值得一提的是,这里你会看到 _TEXT("EDIT") 这说明创建的是一个编辑框,假设想要创建一个button则改为 _TEXT("BUTTON") 就可以。

最新文章

  1. SNMP与MIB
  2. 什么是smarty?
  3. apache服务器安装
  4. BZOJ3468 : 滑雪
  5. android 中 webview 怎么用 localStorage?
  6. C#设计模式——组合模式(Composite Pattern)
  7. 华为OJ—火车进站(栈,字典排序)
  8. 前端的一些常用DOM和事件归纳
  9. 源泉书签,助您管理海量收藏。www.yuanquanshuqian.com,今日更新:多标签功能已实现
  10. 与QString("我是中文")完全一样,你必须告诉tr这个窄字符串是何种编码?你不告诉它,它就用latin1。于是所谓的乱码问题就出来了。
  11. java(17) - 增强for循环、装箱拆箱、可变参数
  12. Mysql查看连接端口及版本
  13. ORACLE行转列(行转1列,行转多列)
  14. 优步uber司机怎么注册不了?注册优步司机问题要点
  15. 看雪.TSRC 2017CTF秋季赛第三题
  16. MIP开发教程(二) 使用MIP-CLI工具调试MIP网页
  17. ThinkPHP 2053错误
  18. A - A Secret -扩展KMP
  19. [USACO12MAR] 花盆Flowerpot
  20. vue-amap | 基于 Vue 2.x 与高德的地图组件

热门文章

  1. C++(变量类型-深入)
  2. [Windows Server 2003] 初识Windows Server 2003
  3. R函数详解
  4. 并发和多线程(三)--并发容器J.U.C和lock简介
  5. JavaScript 实现页面中录音功能
  6. linux运行jar报错
  7. 2019西安多校联训 Day2
  8. js实现汉字中文排序的方法 例如:省市列表的排序
  9. 手写redis的docker文件,通过docker-compose配置redis
  10. AWK简单使用方法