func WinMain(Inst win.HINSTANCE) int32 { // 1. 注册窗口类 atom := MyRegisterClass(Inst) if atom == 0 { fmt.Println("注册窗口类失败:", win.GetLastError()) return 0 } fmt.Println("注册窗口类成功", atom) // 2. 创建窗口 wnd := win.CreateWindowEx(win.WS_EX_APPWINDOW, syscall.StringToUTF16Ptr("主窗口类"), nil, win.WS_OVERLAPPEDWINDOW|win.WS_CLIPSIBLINGS, win.CW_USEDEFAULT, win.CW_USEDEFAULT, win.CW_USEDEFAULT, win.CW_USEDEFAULT, 0, 0, Inst, nil) if wnd == 0 { fmt.Println("创建窗口失败", win.GetLastError()) return 0 } fmt.Println("创建窗口成功", wnd) win.ShowWindow(wnd, win.SW_SHOW) win.UpdateWindow(wnd) // load file gohl.EnableDebug() if err := gohl.LoadFile(wnd, "a.html"); err != nil { println("LoadFile failed", err.Error()) return 0 } ui(wnd) // 3. 主消息循环 var msg win.MSG msg.Message = win.WM_QUIT + 1 // 让它不等于 win.WM_QUIT for win.GetMessage(&msg, 0, 0, 0) > 0 { win.TranslateMessage(&msg) win.DispatchMessage(&msg) } return int32(msg.WParam) }
func lastError(win32FuncName string) error { if errno := win.GetLastError(); errno != win.ERROR_SUCCESS { return newError(fmt.Sprintf("%s: Error %d", win32FuncName, errno)) } return newError(win32FuncName) }
func WinMain(Inst win.HINSTANCE) int32 { // RegisterClass atom := MyRegisterClass(Inst) if atom == 0 { fmt.Println("RegisterClass failed:", win.GetLastError()) return 0 } fmt.Println("RegisterClass ok", atom) // CreateWindowEx wnd := win.CreateWindowEx(win.WS_EX_APPWINDOW, syscall.StringToUTF16Ptr(wndClassName), nil, win.WS_OVERLAPPEDWINDOW|win.WS_CLIPSIBLINGS, win.CW_USEDEFAULT, win.CW_USEDEFAULT, win.CW_USEDEFAULT, win.CW_USEDEFAULT, 0, 0, Inst, nil) if wnd == 0 { fmt.Println("CreateWindowEx failed:", win.GetLastError()) return 0 } fmt.Println("CreateWindowEx done", wnd) win.ShowWindow(wnd, win.SW_SHOW) win.UpdateWindow(wnd) // load file gohl.EnableDebug() if err := gohl.LoadFile(wnd, "a.html"); err != nil { println("LoadFile failed", err.Error()) return 0 } // main message loop var msg win.MSG for win.GetMessage(&msg, 0, 0, 0) > 0 { win.TranslateMessage(&msg) win.DispatchMessage(&msg) } return int32(msg.WParam) }
func (fb *FormBase) SetOwner(value Form) error { fb.owner = value var ownerHWnd win.HWND if value != nil { ownerHWnd = value.Handle() } win.SetLastError(0) if 0 == win.SetWindowLong( fb.hWnd, win.GWL_HWNDPARENT, int32(ownerHWnd)) && win.GetLastError() != 0 { return lastError("SetWindowLong") } return nil }
func New(creationFlags sciter.WindowCreationFlag, rect *sciter.Rect) (*Window, error) { w := new(Window) w.creationFlags = creationFlags // create window hwnd := sciter.CreateWindow( creationFlags, rect, syscall.NewCallback(delegateProc), 0, sciter.BAD_HWINDOW) if hwnd == sciter.BAD_HWINDOW { return nil, fmt.Errorf("Sciter CreateWindow failed [%d]", win.GetLastError()) } w.Sciter = sciter.Wrap(hwnd) return w, nil }