FFmpeg_SDL_MFC4MFC的基础使用

Posted 叮咚咕噜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FFmpeg_SDL_MFC4MFC的基础使用相关的知识,希望对你有一定的参考价值。

参考:MFC使用详解

一、创建MFC工程

▫ 打开VC++
▫ 文件->新建->项目->MFC应用程序
▫ 应用程序类型->基于对话框(最简单的一种)
▫ 取消勾选“使用Unicode库”(暂不详细介绍)

二、置控件

在右侧工具箱拖到到此:

  • Button:按键,如:暂停、播放
  • Edit Control:文件路径框
  • Static Text:没有实际含义,文字信息

三、修改属性

说明:

  • ID:对话框ID,唯一标识对话框资源,可以修改;代码中用来表示当前控件的唯一标识
  • Caption:对话框标题,如上图的播放等文字填写

四、添加消息响应函数

  • 双击Button控件,就可以给该控件添加消息响应函数。
  • 在菜单栏的“项目->类向导” 处,可以添加更多种类的消息响应函数。
  • MFC最简单的弹出消息框的函数是AfxMessageBox(“HelloWorld”)
  • 弹出主对话框附带的对话框
void Cffmpeg_sdl_mfcDlg::OnBnClickedPlay()
{
	CAboutDlg dlg;   //对应的是另一个对话框
	dlg.DoModal();//模式对话框,DoModal使用这个函数弹出的对话框必须关闭之后才能点击其他按钮。
}		

注: 我们在创建MFC工程时,生成两个类,一个是当前对话框,一个是我们工程整体的类Cffmpeg_sdl_mfcDlg和Cffmpeg_sdl_mfcApp

五、删除按钮

删除按钮不能只删除界面上的按钮,这样会编译不过的,有两种方法:
(1)代码中涉及到这个按钮的代码全部删掉
(2)菜单栏项目->类向导,里面选择对应的类和按钮ID,点击右侧批量删除,代码中按钮相关的就会被注释掉

六、获取输入框字符

获取输入框的字符:

点击编辑框右键,新增成员变量,编辑框中输入的内容会保存到编辑框中:

  • 菜单栏项目->类向导->成员变量->双击新增成员名
  • 新增之后代码中就会新增一个成员m_url,通过访问这个变量就可以获取输入的值。
/* 获取输入的字符串并打印出来 */
void CSFFPlayerDlg::OnBnClickedFiledialog()
{
	CString str1;
	m_url.GetWindowText(str1);	//MFC中的函数

	AfxMessageBox(str1);
}

七、FFMPEG合入验证

简单调用ffmpeg中的函数,并将打印显示出来,验证环境搭建可行

CString str1;
str1.Format("%s", avcodec_configuration());			//类似于C中的sprintf函数
AfxMessageBox(str1);

八、选择文件路径

点击文件按钮,弹出windows界面,选择需要播放的文件:

代码实现如下:

void CSFFPlayerDlg::OnBnClickedFilebrowser()
{
	/* 这都是windows中的函数,我们不需要关心具体底层是怎么实现的 */
	CString FilePathName;
	/* 申明这个类就会弹出选择文件的对话框 */
	CFileDialog dlg(TRUE,NULL,NULL,NULL,NULL);///TRUE为OPEN对话框,FALSE为SAVE AS对话框 
	if(dlg.DoModal()==IDOK) {   /* DoModal表示只能操作当前对话框,不可以操作其他内容 */
		FilePathName=dlg.GetPathName();
		m_url.SetWindowText(FilePathName);
	}
}

九、添加窗口图片资源

  • 选择类型为Bitmap,选择Image为哪张图片,Image中的ID是添加资源之后确定的唯一ID

  • 添加资源(右键添加资源,选中需要添加的资源文件)

  • 资源添加之后也会有一个ID,用来表示当前资源,在主界面用ID引用它

十、增加和windows类似的菜单栏

(1)资源视图->右键->添加资源->menu->新建:然后就构建我们想要的菜单

(2)将菜单和主界面关联:点击主界面->属性->杂项->menu

(3)为菜单栏添加对应的功能:点击到菜单中某一项,将其id改成主界面中随便一个的id,就和对应的按钮有了相同的功能。

以上是关于FFmpeg_SDL_MFC4MFC的基础使用的主要内容,如果未能解决你的问题,请参考以下文章

Stack overflow错误的一个原因

使用cocoapods管理私有库

特技使用CocoaPods管理私有库

Python基础 – 使用别人代码的模块机制

Python基础 – 使用别人代码的模块机制

Python基础 – 使用别人代码的模块机制