gpt4 book ai didi

c# - WndProc:如何在窗体最小化时获取窗口消息

转载 作者:太空狗 更新时间:2023-10-29 21:06:30 28 4
gpt4 key购买 nike

要与特定服务通信,我必须覆盖 WindProc。并接收窗口消息。

但是,当表单最小化时,我不再收到任何消息。我知道它必须是那样的,但是有解决方法吗?我不想有一个始终保持打开状态的隐藏表单...

最佳答案

我最近也需要解决类似的问题。亚伯的回答让我走上了正确的方向。这是一个完整的示例,说明我是如何做到的,将普通窗口更改为仅显示消息的窗口:

class MessageWindow : Form {

[DllImport("user32.dll")]
static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);

public MessageWindow() {
var accessHandle = this.Handle;
}

protected override void OnHandleCreated(EventArgs e) {
base.OnHandleCreated(e);
ChangeToMessageOnlyWindow();
}

private void ChangeToMessageOnlyWindow() {
IntPtr HWND_MESSAGE = new IntPtr(-3);
SetParent(this.Handle, HWND_MESSAGE);
}

protected override void WndProc(ref Message m) {
// respond to messages here
}
}

注意构造函数:我发现我需要访问 Handle 属性,否则不会调用 OnHandleCreated 方法。不确定原因,也许有人可以解释原因。

我相信我的示例代码也能回答相关问题:How do I create a message-only window from windows forms?

关于c# - WndProc:如何在窗体最小化时获取窗口消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6786891/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com