Winapi:处理自定义和默认的非客户端控件
Winapi : Handling custom and default non-client controls
非客户端控制事件都默认由DefWindowProc控制。我想创建自己的自定义非客户端控件;这导致我拦截WM_NCPINT消息,并可能创建自己的句柄来控制非客户端区域中的窗口。如果我要创建一个最小化或最大化按钮,那么我必须重新创建(从头开始?)并拦截默认窗口过程假设要处理的所有事件,因为我的自定义按钮的大小、位置和属性与默认按钮不同。然而,我仍然不太确定这是否是人们模仿默认非客户端控件创建自定义非客户端控件的常见方式,所以我想确保我是否走在正确的轨道上:
- 不传入默认窗口样式指定创建非客户端控制(最小化的存在,"最大化"、"关闭"按钮)
- 创建我自己的窗口控件(用于例如按钮)
- 拦截所有与之相关的消息他们如果自定义窗口是默认值,例如最小化按钮,然后发送与相关的消息那个按钮(然而,我只看到WM_CLOSE消息,没有WM_MINIMIZE或WM_MAXIMIZE)
我在处理所有违约程序方面遇到了麻烦;如果可能的话,我想看看DefWindowProc里面有什么(这样我就可以模仿它们的功能,同时添加我的)
听起来好像你想自定义所有东西。如果你绝对必须对用户施加一些"噪音",那么只需将你的东西放在客户端区域,并且没有任何非客户端区域(没有边界等)。你可能必须实现窗口拖动,但我认为仅此而已。
干杯&hth。,
在标题通常放置按钮的地方绘制自定义按钮。位置并不重要。在回调的WM_COMMAND
部分中,使用ShowWindow(hwnd, SW_MAXIMIZE)
和ShowWindow(hwnd, SW_RESTORE)
。这就是它的全部。
相关文章:
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何将函数集合传递给客户端类,以便将它们当作客户端类本身的成员使用
- 使用调试/崩溃报告将应用程序部署到客户端
- 如何在本地机器上运行c++和javascript客户端代码(hackerbank风格)
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 从服务器传输到客户端的消息不会出现
- OpenSSL TLS服务器-使用客户端证书白名单
- 当服务中的事件被触发时,如何将响应从服务发送回客户端?
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 提升 Asio TCP 服务器 处理多个客户端
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 如何绑定 C++ gRPC 客户端的网络接口
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- C++套接字客户端到 Python 服务器未创建连接
- 用于解析 win64 堆栈跟踪的命令行客户端(可以访问符号服务器)
- 多播客户端如何从发件人接收单个副本
- 如何将主文件分成三个文件:头文件、客户端和实现
- Winapi:处理自定义和默认的非客户端控件
- 从文本控件中检索字符位置的客户端区域坐标