emwin两层界面点击Framewin上close按钮返回上一层代码
时间: 2023-12-14 13:36:59 浏览: 32
在emWin中,关闭窗口的一般方法是使用 `GUI_EndDialog()` 函数。对于 `Framewin` 窗口,可以通过以下步骤在关闭窗口时返回到上一层:
1. 在打开 `Framewin` 窗口时,保存其父窗口的句柄(通常为 `WM_GetParent(hWin)`),可以使用全局变量或其他方式保存。
2. 在关闭 `Framewin` 窗口时,调用 `GUI_EndDialog(hWin, 0)` 函数关闭窗口,并在回调函数中使用 `GUI_EndDialog(pParent, 0)` 函数返回到上一层。其中,`pParent` 为保存的父窗口句柄。
以下是示例代码片段:
```c
// 定义全局变量保存父窗口句柄
WM_HWIN hParent;
// 打开 Framewin 窗口时保存父窗口句柄
void OpenFramewin(void) {
// ...
hParent = WM_GetParent(hWin);
// ...
}
// 关闭 Framewin 窗口时返回到上一层
void CloseFramewin(WM_HWIN hWin) {
GUI_EndDialog(hWin, 0);
GUI_EndDialog(hParent, 0);
}
// 在回调函数中调用 CloseFramewin 函数
void _cbFramewin(WM_MESSAGE * pMsg) {
switch (pMsg->MsgId) {
case WM_CLOSE:
CloseFramewin(pMsg->hWin);
break;
// ...
}
}
```