c++编写了一个播放器 用的picture控件,想双击它全屏显示,再双击回到原来的状态,

作者&投稿:苦邵 (若有异议请与网页底部的电邮联系)
C#开发视频播放器,双击PictureBox实现全屏播放,再双击时退出全屏的实现思路?~

所以说你就没把UserControl方法写完整,要写尺寸属性的,分辨率尺寸要一致更改,控件里面你拖动窗体的时候控件大小和字体要随着改变。这样这里过后,还需要新建一个窗体,让他去遍历所有Control,然后把Control作为变量,按照窗体拖动大小去改变他们相对尺寸。这个窗体就当一个控件用,新建窗体的时候继承该窗体新建,这样才是真正的任意分辨率,图象、视频要用到AJXA静态刷新。你看到网络电视没有,随意可以拖动大小的。再看看他们的菜单,拖动分辨率绝对不会变,因为光写个播放器分辨率简单多了,以免画蛇添足。
你所说的办法控件里把,Form定义成变量就好了。
public int i=1;public Form form;private void pictureBox1_click(Send....){ i++; if(i%2!=0) { ReSize(form,Max) } else { ReSize(form,Min); }}private void ReSize(Form f,String State){ if(State=="Min") { f.Width=...; f.Height=...; } else { ... .... }}

为了实现双击picture控件时弹出新的对话框显示大图片,因此需要添加左键双击响应事件,却发现picture控件没有对应的响应事件,因此在网上搜到一个实现双击picture控件框内时响应双击事件的方法。

可以参考下面的技术

摘要:本文对在VC下单文档程序的全屏显示及其恢复的实现过程作了介绍。

  关键字:窗体、全屏显示、Visual C++

  一、 引言

  在编辑类软件或程序代码编辑程序中经常要遇到一些长度特别大的文本或代码,尤其是对于程序源码的编辑,如果编辑界面太小,则需要频繁拉动滚动条,对于程序员而言是很不情愿的,因为这样会打断程序的设计思路、影响编程的效果。因此不少软件都具备了全屏放大的功能,将编辑界面放大到全屏幕,尽最大限度地减少对滚动条的依赖程度。相信不少程序员一定非常喜欢在VC的全屏编辑状态下编程,本文就以Visual C++ 6.0为开发环境将普通的单文档编辑视图程序扩展为全屏编辑功能。

  二、 程序的设计思路

  普通常规程序之所以在最大化的情况下没能实现全屏,是由于状态条、工具条、系统菜单、标题栏等几个窗口分别占据了一部分屏幕空间,所以实现视图的全屏显示首先要把以上几个窗体隐藏起来,然后才可以考虑将视图最大化的问题。

  隐藏状态栏、工具条,可以将其当作一个浮动的窗体,只需通过各自的句柄将ShowWindow()函数的参数设成SW_HIDE即可将这几个窗体隐藏,同视图非常类似,在需要显示的时候可以用SW_SHOW标志将其显示出来。在此需要说明的是在进行全屏操作之前需要将当前的视图设置保存好,这在从全屏恢复为原始状态时需要用到。该操作也比较简单,只需简单调用API函数GetWindowRect()即可。至于标题栏的隐藏就不是简单的隐藏窗口了,这涉及到窗体风格的修改,要把WS_CAPTION风格从现有的窗体风格中剥离出来。这可以先用GetWindowLong()获取到当前的窗体风格,然后通过逻辑运算将WS_CAPTION风格从中剥离开来,最后再用SetWindowLong()函数将修改后的窗体风格设置为当前的窗体风格。至于系统菜单的隐藏也可以很方便的加以实现:先保存当前菜单,然后将菜单设置为"空"就实现了菜单的隐藏。各个窗体都隐藏好后剩下的工作就是将编辑视图放大到满屏,可以用this来获取当前的视图指针,并把ShowWindow ()函数的参数设为SW_SHOWMAXIMIZED就最终完成了整个全屏放大的全过程。

  至于从全屏恢复到初始状态则完全是上述过程的逆操作:通过逻辑运算把WS_CAPTION风格加入到窗体风格中,恢复标题栏的显示;通过将状态条和工具条的ShowWindow()函数的标志参数设成WM_SHOW将其分别予以恢复;系统菜单也可以通过从保存好的原始菜单中读取并重新设置来恢复其原始面貌。现在仅把隐藏的各个窗体显示了出来,窗体还是处于满屏状态,所以还要通过MoveWindow()函数把窗体的位置恢复到全屏前的状态,这也是我们为何在全屏时要保存窗体的一些原始参数的原因。
三、 程序的具体实现

  前面部分在大体思路上对程序的设计实现进行了粗略的分析,但在实际编程中有不少的细节还未考虑进去,下面就根据前面的程序设计思路对其进行编码,并结合其部分关键代码进行讲解说明,以便于更好的理解本程序的实现方法:

  全屏显示部分:

//通过设置SW_HIDE参数隐藏当前的工具条、任务栏
m_bToolBarWasVisible=(m_wndToolBar.IsWindowVisible()!=0);
m_wndToolBar.ShowWindow(SW_HIDE);
m_bStatusBarWasVisible=(m_wndStatusBar.IsWindowVisible()!=0);
m_wndStatusBar.ShowWindow(SW_HIDE);
……
//由于在全屏状态下没有系统菜单和工具条,所以需要显示一个浮动的工具条按钮用于//从全屏状态下返回到正常状态。
//首先创建一个工具条对象,并把一个工具条资源装载进来,同时对工具条的风格进行//设置:
m_pwndFullScreenBar=new CToolBar;
m_pwndFullScreenBar->Create(this);
m_pwndFullScreenBar->LoadToolBar(IDR_FULLSCREEN);
m_pwndFullScreenBar->SetBarStyle(m_pwndFullScreenBar->GetBarStyle() |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
//浮动按钮的效果
m_pwndFullScreenBar->ModifyStyle(0, TBSTYLE_FLAT);
m_pwndFullScreenBar->EnableDocking(0);
//设置返回到正常状态下的按钮的位置
CPoint pt(300,200);
FloatControlBar(m_pwndFullScreenBar,pt);
//在放大到满屏前预先保存当前的窗口位置
GetWindowRect(&m_mainRect);
//通过改变窗口风格来隐藏标题栏
LONG style=::GetWindowLong(m_hWnd,GWL_STYLE);
style&=~WS_CAPTION;
::SetWindowLong(m_hWnd,GWL_STYLE,style);
int screenx=GetSystemMetrics(SM_CXSCREEN);
int screeny=GetSystemMetrics(SM_CYSCREEN);
//重新改变大小:
SetWindowPos(NULL,0,0,screenx,screeny,SWP_NOZORDER);
style=::GetWindowLong(m_hWnd,GWL_STYLE);
m_bChildMax=(style & WS_MAXIMIZE)?true:false;
//保存原有的系统菜单,并将当前菜单设置为空
CMenu* pOldMenu=GetMenu();
m_OrgMenu.Attach(pOldMenu->Detach());
SetMenu((CMenu*)NULL);
//在其他窗体隐藏好后,将编辑视图放大到满屏
this->ShowWindow (SW_SHOWMAXIMIZED);
……

  至于从全屏恢复到初始状态的这部分代码则相对比较简单,只需依次将隐藏的各个窗体和菜单恢复出来并将视图移动到原来大小即可,该段代码许多地方同放大到全屏时的代码相似,只是参数有所差异而已。下面就是恢复部分的主要代码:

……
//将保存的系统菜单恢复出来
SetMenu(&m_OrgMenu);
m_OrgMenu.Detach();
//释放掉在全屏时创建的工具条指针对象,由于是用new创建的,在系统堆中为指针分//配地址空间,在程序退出时不能自动释放,所以必须要用delete显式地进行释放
delete m_pwndFullScreenBar;
//把前面剥离出去的WS_CAPTION风格在加入到窗体风格中。
LONG style=::GetWindowLong(m_hWnd,GWL_STYLE);
style|=WS_CAPTION;
::SetWindowLong(m_hWnd,GWL_STYLE,style);
//显示工具条、任务栏
if(m_bToolBarWasVisible)
m_wndToolBar.ShowWindow(SW_SHOW);
if(m_bStatusBarWasVisible)
m_wndStatusBar.ShowWindow(SW_SHOW);
MoveWindow(&m_mainRect);
RecalcLayout();
……

  小结:

  本文主要是针对单文档框架的程序进行设计的,由于不涉及到子窗体,因此比较简单。对于多文档的全屏放大,实现方法在总体思路上是与之相一致的。只是在处理全屏显示与恢复时需要将程序子框架也响应的进行放大与缩小,标题栏也要通过改变窗口风格的方式来隐藏与恢复显示。本程序对于其他基于非编辑视图的程序也是适用的。本文所述程序在Windows 2000 Professional下由Microsoft Visual C++ 6.0编译通过。


哪位VC++高手帮我编写一个MP3播放器,只要实现我要求的(很简单的),分...
自己建一个1.mp3放进同一个文件夹 include "stdafx.h"include <graphics.h> include <conio.h> include <windows.h> pragma comment(lib,"Winmm.lib")void main(){ initgraph(640, 480);mciSendString("open 1.mp3 alias mymusic", NULL, 0, NULL);outtextxy(0, 0, "按任意键开始播放");...

VB编写能播放音频的程序。。。100分提供
VB编写能播放音频的程序。。。100分提供 书上已经有了一个能播放wma等音频格式的播放器程序,现在要求再添加mp3播放功能,应该怎么改程序。如果有哪位达人能解决,我会把源程序发给您,您也可以先说些思路,谢谢了。... 书上已经有了一个能播放wma等音频格式的播放器程序,现在要求再添加mp3播放功能,应该怎么改程序...

mfc编写一个flash播放器slider进度条的程序,在新建线程中,怎么实现进 ...
方法一:int npos =(int)((double)(pInfo->pFlash->CurrentFrame())*10000\/(double)(pInfo->pFlash->get_TotalFrames()));方法二:int npos=(pInfo->pFlash->CurrentFrame())\/(pInfo->pFlash->get_TotalFrames())*10000;在不把数据都改成double型,因为(pInfo->pFlash->CurrentFrame())*...

用Qt creater编写一个音乐播放器,只要可以实现播放暂停,下一首,上一...
啥也不缺,你只需要配置一个Kit就行,在工具-选项里配置。

我自己编写了个mp3音乐播放器,放在D盘根目录下,名字是test2.exe 求高...
其实如果只需要关联的话,你可以右键单击一个MP3文件,选择“打开方式”,点“选择程序”,出来对话框后,点选中“始终使用选择的程序打开这种文件”,并点“浏览”,找到你的test2.exe后,回到刚才对话框点“确定”。就可以满足你的双击双击mp3文件,自动调用你的程序打开了 ...

怎么在visual studio 2005下用C#编写一个视频播放器
用C#写视频播放器也不是不行,现在Silverlight已经是基于C#了,不过还是比较麻烦。建议使用开源的播放器Vcastr,现在已经出到3.0版本,作者的网站是http:\/\/www.ruochi.com\/main\/2008\/03\/19\/vcastr-30\/ 上面有使用方法和示例,有什么疑问,可以Hi我,我们再讨论。

用易语言怎么编写一个音乐播放器,有快进,停止,播放,上一曲,下一曲...
调用易语言MP3的类或者控件,支持库就行了。很简单 MP3.播放()mp3.暂停()

怎样用vc++编写MP3播放器。求方法,代码也行
wDeviceID;if(mcierror==0){ mciSendCommand(ID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)&mciplayparms);} 现在就可以播放MP3音乐文件了 去学习MCI编程是很简单的 用不了多少时间 你就能编写一个完整的MP3播放器了 当然可以使用微软的Windows Media Player控件就更简单 具体的函数调用可以百度一下 ...

vb.net制作 mp3播放器
用VB制作一个简单的MP3播放器 用VB制作一个简单的MP3播放器 利用API函数[mciSendString]可以轻松实现MP3音乐文件的播放。下面这段程序实现了MP3播放的大部分常规操作,对其稍加修改,做一个100KB大小的MP3播放器轻而易举 启动VB程序,在窗体上放置6个命令按钮,三个标签,一个公用对话框、一个进度条...

汇编语言编写播放音乐的程序
好好看看,这是一个可以播放音乐,康定情歌,其他设计。或者学到什么东西,我祝你成功。PP EQU 30H YF EQU 31H JP EQU 32H ORG 0000H AJMP MAIN ORG 000BH JMP TIM0 MAIN:ORG 0050H MOV TMOD,#01H MOV IE,#82H ; SETB P3.5 SATR0:MOV PP,#0 NEXT:MOV A,PP MOV DPTR,#...

福州市15879258841: 用C++编程语言可以做个播放器吗?可以的话请写个详细的步骤和必要的代码~谢谢啦
干华盐酸: 用MFC,加载一个播放器控件,设置几下就行了

福州市15879258841: 如何用C++Builder制作简易音乐播放器 -
干华盐酸: 这个程序可能是最简单的mp3播放器了.当然也谈不上什么功能.但是确实能播放. 链接时要指定库文件.VC++是vfw32.lib, GCC是libvfw32.a. 我在VC6.0和GCC/MinGW 3.3.1下都通过了. 假设程序名是MyPlay, 目录下还有一个aaa.mp3, 运...

福州市15879258841: 如何用C++编写一个简单的音乐播放器 -
干华盐酸: 这个程序可能是最简单的mp3播放器了.当然也谈不上什么功能.但是确实能播放.链接时要指定库文件.VC++是vfw32.lib, GCC是libvfw32.a.我在VC6.0和GCC/MinGW 3.3.1下都通过了.假设程序名是MyPlay, 目录下还有一个aaa.mp3, 运行...

福州市15879258841: 使用Visual C++编写播放器 -
干华盐酸: 我把上面的代码封转起来,想写播放器的就可以直接调用了.// Player.h #include <mmsystem.h> #include <windows.h>#include "assert.h"#pragma comment(lib,"Winmm.lib") class Player {public:// 函数调用入口 // 播放、暂停、停止等接口void ...

福州市15879258841: 怎样用c++编写1个视频播放器求高手回答
干华盐酸: 可以用微软的mediaplayer库,或第3方库.

福州市15879258841: c++ 如何编写播放功能的软件? -
干华盐酸: 我以前写过的一个AVI播放器,有几种方法吧有的实际上WINDOWS API就有的,只要调用就可以,参见MCI或者direct show或者VFW编程也可以自己写,本身播放类功能软件就是1秒放几张图片的原理,所以也可以用定时器来实现,1秒中在一个窗口绘制24张图片即可.所以做这个前提是了解图片结构和要播放的文件格式

福州市15879258841: MP3播放器用C++怎么写?
干华盐酸: #include<fstream.h> #include<iostream.h> #include<windows.h> #include<mmsystem.h> #pragma comment(lib,"winmm.lib")void print() { cout<<"\n\t\t\t>>>>*简单音乐播放器*<<<<"; cout<<" 1.输入L(List)查看播放列表"<<endl; cout<<" 2...

福州市15879258841: vc++编写视频播放器 -
干华盐酸: 播放结束时,将播放指针置于文件之首,如果设定了循环播放,则再次启动播放器(vc != null) { pack(); return; } else { setSize(300, 75);

福州市15879258841: 用VC++编写一个音乐播放器软件,,谢谢各位大神们了...
干华盐酸: <p>我这刚好有个现成的用VC++编写的一个音乐播放器,只有31KB.</p> <p> </p> <p>只要你安装了相应的解码器,它就能为你播放.swf、mp3、wmv、wma、asf、avi、mpeg、mpg等等等格式!另外它还具有全局热键功能,可以让您在游戏中,或工作中,轻松地控制音乐或影视的播放!</p> <p> </p> <p> </p> <p> </p> <p> </p>

福州市15879258841: 我也要vc++编写播放器函数使用方法!
干华盐酸: 有一个mciString函数,或者PlaySound函数,可以播放音乐,还有,你要用到一个ListBox控件来放歌,加几个Button空间来当“开始”“暂停”

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网