我的YUV播放器MFC小笔记:非模态对话框建立及窗口间传值
来源:互联网 发布:java 类写成api 编辑:程序博客网 时间:2024/05/17 05:17
YUV播放器中,显示界面(主窗口)和设置界面分离,所有参数均在Setting子窗口设置,故需要主窗口和子窗口中实现参数传递。下面是方法。
1、
在主窗口CYUVPlayerDlg类中定义子窗口变量:
CSettingDlg* m_pSettingDlg;
并在初始化时将其置为NULL:
m_pSettingDlg = NULL;
显示子窗口较简单,主要是申请资源,调用Create函数,指定窗口ID即可。代码如下:
void CYUVPlayerDlg::ShowSettingWindow(){ // 非模态对话框 if (m_pSettingDlg == NULL) { m_pSettingDlg = new CSettingDlg(); m_pSettingDlg->Create(IDD_DIALOG_SETTING, this); } m_pSettingDlg->ShowWindow(SW_SHOW);}
退出或析构函数要释放资源:
if (m_pSettingDlg != NULL) { delete m_pSettingDlg; m_pSettingDlg = NULL; }
下面实现参数传递。
在CSettingDlg类中定义主窗口变量并赋值:
CYUVPlayerDlg *m_pParentWnd; // 窗口参数传递
void SetParentWnd(CYUVPlayerDlg* pWnd) {m_pParentWnd = pWnd;}
当子窗口需要主动将参数传给主窗口时,则使用m_pParentWnd访问主窗口函数。如:
void CYUVPlayerDlg::SetParentParameters(int width, int height, int fps, int fmt, BOOL loop){ m_nWidth = width; m_nHeight = height; m_nFps = fps; m_nYuvFormat = fmt; m_fLoop = loop; // 恢复原始状态 if (!IsOpen()) return; ShowOpenedFrame();}
这样,子窗口的值就传到主窗口中了。当主窗口需要拿子窗口数据时,也使用类似的方法。下面是子窗口的函数:
void SetParametersToParentWnd(int& width, int& height, int& fps, int& fmt, BOOL& loop) { width = m_nWidth; height = m_nHeight; fps = m_nFps; fmt = m_nYuvFormat; loop = m_fLoop; }
当主窗口需要子窗口参数时,比如在主窗口的初始化时对Setting窗口进行初始化,获取播放参数,代码如下:
// 初始化 设置 对话框 if (m_pSettingDlg == NULL) { m_pSettingDlg = new CSettingDlg(); m_pSettingDlg->Create(IDD_DIALOG_SETTING, this); m_pSettingDlg->SetParentWnd(this); // 将子窗口的值传递给本窗口 m_pSettingDlg->SetParametersToParentWnd(m_nWidth, m_nHeight, m_nFps, m_nYuvFormat, m_fLoop); }
李迟 2015.8.15
0 0
- 我的YUV播放器MFC小笔记:非模态对话框建立及窗口间传值
- 我的YUV播放器MFC小笔记:设置picture控件背景为黑色、窗口缩放
- 我的YUV播放器MFC小笔记:注册表读写
- 我的YUV播放器MFC小笔记:解析文件名称
- 我的YUV播放器MFC小笔记:添加删除自定义分辨率
- 我的YUV播放器MFC小笔记:unicode编码、宽字符
- 我的YUV播放器MFC小笔记:右键菜单事件和非标题实现鼠标拖动
- 我的HEVC码流分析工具MFC小笔记:树形控件使用及窗口缩放
- 基于MFC对话框的音乐播放器
- 对话框(1)之对话框的建立与如何添加窗口左上角的小ICON图标
- MFC学习笔记(一):模态对话框与非模态对话框的区别、创建及显示
- MFC小笔记之窗口
- MFC学习--对话框及窗口背景色
- MFC学习--对话框及窗口背景色
- MFC对话框及窗口函数调用顺序
- MFC对话框及窗口函数调用顺序
- MFC对话框及窗口函数调用顺序
- MFC对话框及窗口函数调用顺序
- leetcode 题解代码整理 31-35题
- Java NIO系列教程(二) Channel
- Android PopupWindow
- org.eclipse.jdt.internal.compiler.CompilationResult.getProblems()[Lorg/eclipse/jdt/core/compiler/IPr
- Java内存分配和垃圾回收
- 我的YUV播放器MFC小笔记:非模态对话框建立及窗口间传值
- 将多个连续的换行符替换成一个
- iOS开发UI篇—核心动画(UIView封装动画)
- 后台密码校验
- 细说Cocos2d-JS——项目如何Run起来
- UIButton和UIImageView的区别一
- 排序算法系列——冒泡排序
- 整个csdn网站处于不死不活的状态
- 欢迎使用CSDN-markdown编辑器