実際のウィンドウをサブクラス化して、サイズがいつ変更されたかを検出したいと考えています。
これは、CallWindowProcW と SetWindowLongW を使用してサブクラス化しようとした関連コードですが、ウィンドウを最大化してもメッセージが表示されないため、これらのプロシージャのいくつかを間違って設定したと思われます。どうやってするの?
var oldWindowProc uintptr
func windowProc(hwnd syscall.Handle, msg uint32, wparam, lparam uintptr) (rc uintptr) {
switch msg {
case WM_SIZE:
fmt.Println("Size")
if wparam == SIZE_MAXIMIZED {
fmt.Println("Changed!")
}
default:
return CallWindowProcW(oldWindowProc, hwnd, msg, wparam, lparam)
}
return 0
}
func main() {
oldWindowProc, _ = SetWindowLongW(syscall.Stdin, GWLP_WNDPROC,
syscall.NewCallback(windowProc))
for {
}
}