2012-04-21 105 views
2

我想使用一些Windows API,但我不知道如何开始。有没有教程呢?cgo - 如何转换去字符串LPCWSTR

无论如何,我有一个简单的代码。你能帮我解决这个问题吗?

package mypackage 
/* 
#cgo LDFLAGS: -luser32 
#include <windows.h> 
*/ 
import "C" 
import "unsafe" 

func MessageBox(m string) { 
     cm := C.CString(s) 
     defer C.free(unsafe.Pointer(cm)) 
     C.MessageBoxA(C.HWND(nil), (*C.CHAR)(cm), C.LPCSTR(nil), 0) // It display a message. 
} 

编辑:我可以处理char *但仍然不知道什么与wchar_t *。

import "syscall" 

func MessageBoxU(m string) { 
     C.MessageBoxW(C.HWND(nil), (*C.WCHAR)(unsafe.Pointer(syscall.StringToUTF16Ptr(m))), C.LPCWSTR(nil), 0) 
} 

请让我知道这是不是成语。

回答

4

以下两个项目在Windows API去哪个包:

的利用方法:

func setWidgetText(hwnd HWND, text string) error { 
     if TRUE != go-winapi.SendMessage(hwnd, WM_SETTEXT, 0, uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(text)))) { 
      return newError("WM_SETTEXT failed") 
     } 
     return nil 
    } 
+0

嗨,感谢答复。 – 2012-04-21 17:36:30