Migrated init_windows.go to C.
This commit is contained in:
parent
7e40e9fe28
commit
2c025a97ef
|
@ -0,0 +1,39 @@
|
|||
/* 17 july 2014 */
|
||||
|
||||
#include "winapi_windows.h"
|
||||
|
||||
HINSTANCE hInstnace;
|
||||
int nCmdShow;
|
||||
|
||||
HICON hDefaultIcon;
|
||||
HCURSOR hArrowCursor;
|
||||
|
||||
DWORD initWindows(char **errmsg)
|
||||
{
|
||||
STARTUPINFOW si;
|
||||
|
||||
/* WinMain() parameters */
|
||||
hInstance = GetModuleHandleW(NULL);
|
||||
if (hInstance == NULL) {
|
||||
*errmsg = "error getting hInstance";
|
||||
return GetLastError();
|
||||
}
|
||||
nCmdShow = SW_SHOWDEFAULT;
|
||||
GetStartupInfoW(&si);
|
||||
if ((si.dwFlags & STARTF_USESHOWWINDOW) != 0)
|
||||
nCmdShow = si.wShowWindow;
|
||||
|
||||
/* icons and cursors */
|
||||
hDefaultIcon = LoadIconW(NULL, IDI_APPLICATION);
|
||||
if (hDefaultIcon == NULL) {
|
||||
*errmsg = "error loading default icon";
|
||||
return GetLastError();
|
||||
}
|
||||
hDefaultCursor = LoadCursorW(NULL, IDC_ARROW);
|
||||
if (hArrowCursor == NULL) {
|
||||
*errmsg = "error loading arrow (default) cursor";
|
||||
return GetLastError();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -1,58 +0,0 @@
|
|||
// 11 july 2014
|
||||
|
||||
package ui
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
var (
|
||||
hInstance uintptr
|
||||
nCmdShow int
|
||||
|
||||
hDefaultIcon uintptr
|
||||
hArrowCursor uintptr
|
||||
)
|
||||
|
||||
func getWinMainParams() (err error) {
|
||||
hInstance, err = f_GetModuleHandleW(nil)
|
||||
if hInstance == 0 {
|
||||
return fmt.Errorf("error getting hInstance: %v", err)
|
||||
}
|
||||
|
||||
var info s_STARTUPINFOW
|
||||
|
||||
f_GetStartupInfoW(&info)
|
||||
if info.dwFlags & c_STARTF_USESHOWWINDOW != 0 {
|
||||
nCmdShow = int(info.wShowWindow)
|
||||
} else {
|
||||
nCmdShow = c_SW_SHOWDEFAULT
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// TODO move to common_windows.go
|
||||
var hNULL uintptr = 0
|
||||
|
||||
func loadIconsCursors() (err error) {
|
||||
hDefaultIcon, err = f_LoadIconW(hNULL, c_IDI_APPLICATION)
|
||||
if hDefaultIcon == hNULL {
|
||||
return fmt.Errorf("error loading default icon: %v", err)
|
||||
}
|
||||
hArrowCursor, err = f_LoadCursorW(hNULL, c_IDC_ARROW)
|
||||
if hArrowCursor == hNULL {
|
||||
return fmt.Errorf("error loading arrow (default) cursor: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func initWindows() error {
|
||||
if err := getWinMainParams(); err != nil {
|
||||
return fmt.Errorf("error getting WinMain() parameters: %v", err)
|
||||
}
|
||||
if err := loadIconsCursors(); err != nil {
|
||||
return fmt.Errorf("error loading standard/default icons and cursors: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
|
@ -15,8 +15,11 @@ import "C"
|
|||
var msgwin C.HWND
|
||||
|
||||
func uiinit() error {
|
||||
if err := initWindows(); err != nil {
|
||||
return fmt.Errorf("error initializing package ui on Windows: %v", err)
|
||||
var errmsg *C.char
|
||||
|
||||
errcode := C.initWindows(&errmsg)
|
||||
if errcode != 0 || errmsg != nil {
|
||||
return fmt.Errorf("error initializing package ui on Windows: %s: %v", C.GoString(errmsg), syscall.Errno(errcode))
|
||||
}
|
||||
if err := initCommonControls(); err != nil {
|
||||
return fmt.Errorf("error initializing comctl32.dll version 6: %v", err)
|
||||
|
|
|
@ -38,3 +38,10 @@ extern HWND newWidget(LPCWSTR, DWORD, DWORD);
|
|||
extern void controlSetParent(HWND, HWND);
|
||||
extern LRESULT forwardCommand(HWND, UINT, WPARAM, LPARAM);
|
||||
extern void setButtonSubclass(HWND, void *);
|
||||
|
||||
/* init_windows.c */
|
||||
extern HINSTANCE hInstnace;
|
||||
extern int nCmdShow;
|
||||
extern HICON hDefaultIcon;
|
||||
extern HCURSOR hArrowCursor;
|
||||
extern DWORD initWindows(char **);
|
||||
|
|
Loading…
Reference in New Issue