Go/window_api

[Go] Windows API - 메시지 박스

_HelloWorld_ 2025. 3. 5. 12:43
package main

import (
	"syscall"
	"unsafe"
)

func main() {
	// user32.dll 불러오기
	mod := syscall.NewLazyDLL("user32.dll")
	proc := mod.NewProc("MessageBoxW")

	// MessageBox 호출
	proc.Call(
		0, // 부모 윈도우 핸들 (0이면 없음)
		uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("Hello, Windows API!"))), // 메시지 내용
		uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr("Go Windows API Test"))), // 창 제목
		0, // 버튼 종류 (0: OK 버튼)
	)
}

 

설명

  • MessageBoxW → 유니코드 버전의 메시지 박스 API
  • syscall.StringToUTF16Ptr → Go 문자열을 Windows의 UTF-16 포인터로 변환
  • proc.Call → API 호출 (창 띄우기)

MessageBox 인자 설명

  1. 첫 번째 인자 (부모 윈도우 핸들) → 0이면 독립 창
  2. 두 번째 인자 (메시지 내용) → 팝업 창의 본문
  3. 세 번째 인자 (창 제목) → 팝업 창의 제목
  4. 네 번째 인자 (버튼/아이콘 옵션)
    • 0: OK 버튼
    • 1: OK & 취소 버튼
    • 2: 중지, 재시도, 무시 버튼
    • 0x40: 정보 아이콘
    • 0x30: 경고 아이콘