解决SDL_Quit后再次启动SDL视频渲染无画面问题

在使用MFC+SDL进行视频渲染时遇到播放后画面无法显示的问题,原因是SDL_Quit可能导致控件隐藏。解决方案是通过调用SDL_ShowWindow()或MFC的ShowWindow()方法在播放开始时设置控件可见。两种方法均能恢复正常显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

工作中使用MFC+SDL进行视频渲染显示,有下述现象:
1、每次播放开始时使用SDL_Init进行初始化,播放结束时使用SDL_Quit释放资源,再次播放开始时看不到画面,播放结束再开始只是播放功能的启停,此时进程正常运行,也未对MFC对话框及其控件做操作,此时数据流正常,只是画面无显示;
2、进程退出再启动后第一次播放画面正常;
3、将SDL_Init和SDL_Quit分别放到进程启动后和进程退出前,播放开始不执行SDL_Init,播放结束不执行SDL_Quit,反复开始和结束播放,画面正常。


应用环境

硬件环境:PC
操作系统:Win32


解决方法

经过查找资料,此问题最可能的原因是SDL_Quit将控件隐藏,导致再次开始播放后画面不显示,因此解决思路为开始播放后设置控件为可见,参见下述两种方法:

  • 方法一(SDL方式):
    使用SDL_ShowWindow()函数设置SDL_Window显示。
SDL_Window *sdlWindow = NULL;
sdlWindow = SDL_CreateWindowFrom((void *)pInterface->m_windowindex[0].hWnd);
SDL_ShowWindow(sdlWindow);

 
 
  • 1
  • 2
  • 3
  • 方法二(MFC方式):
    使用ShowWindow()方法设置控件显示。
GetDlgItem(IDC_REMOTE_VIDEO)->ShowWindow(SW_SHOWNORMAL);

 
 
  • 1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值