uCGUI 窗口管理机制与解决独立窗口并存的方法 uCGUI 作为一个基于消息驱动的 GUI 库,提供了灵活的窗口管理机制,允许用户创建多个独立的窗口,并且可以自由地控制这些窗口之间的交互。但是,在实际应用中,可能会遇到一些问题,例如独立窗口并存时,如何处理窗口之间的交互,如何避免窗口关闭后另一个窗口失去响应等。 让我们了解一下 uCGUI 的消息驱动机制。uCGUI 采用的是消息驱动的方式,所有的事件都可以通过消息来处理。uCGUI 中的消息类型较少,总共只有大约二十种,但这已经足够满足嵌入式系统的需求。用户可以根据需要自定义消息类型。 在 uCGUI 中,消息处理的流程是这样的:用户点击 OK 按钮,这将触发 WM_TOUCH 消息,然后,OK 按钮的消息处理函数将此消息传递给对话框,以 WM_NOTIFY_PARENT 消息的形式。对话框收到这个消息后,将执行相应的处理函数。 在上面的代码中,我们可以看到,WM_NOTIFY_PARENT 消息是由函数 WM_NotifyParent(hObj, Notification) 实现的,这个函数将消息传递给父窗体,然后父窗体将执行相应的处理函数。 现在,让我们来解决独立窗口并存的问题。当我们创建两个独立的窗口时,如果关闭其中一个,另一个窗口将无法响应。这是因为,uCGUI 中的窗口之间是独立的,每个窗口都有其自己的消息处理函数。为了解决这个问题,我们可以使用 WM_NOTIFY_PARENT 消息来处理窗口之间的交互。 例如,在对话框中,我们可以使用 WM_NOTIFY_PARENT 消息来处理 OK 按钮的点击事件。当用户点击 OK 按钮时,我们可以发送 WM_NOTIFY_PARENT 消息给对话框,然后对话框将执行相应的处理函数。 但是,在实际应用中,我们可能会遇到一个问题:当我们关闭对话框时,弹出的消息框将无法响应。这是因为,弹出的消息框没有收到 WM_NOTIFY_PARENT 消息。为了解决这个问题,我们可以使用 WM_SENDMESSAGE 函数来发送消息给弹出的消息框。 例如,在对话框中,我们可以使用以下代码来发送 WM_NOTIFY_PARENT 消息给弹出的消息框: ```c void WM_NotifyParent(WM_HWIN hWin, int Notification) { WM_MESSAGE Msg; Msg.MsgId = WM_NOTIFY_PARENT; Msg.Data.v = Notification; WM_SendToParent(hWin, &Msg); } ``` 这样,弹出的消息框将收到 WM_NOTIFY_PARENT 消息,然后执行相应的处理函数。 uCGUI 的窗口管理机制提供了灵活的窗口管理方式,允许用户创建多个独立的窗口,并且可以自由地控制这些窗口之间的交互。通过使用 WM_NOTIFY_PARENT 消息,我们可以解决独立窗口并存的问题,并且可以自由地处理窗口之间的交互。
剩余10页未读,继续阅读
- hdyangqy2016-06-09不是太有用
- 粉丝: 0
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助