友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

C语言实例教程(PDF格式)-第90章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






afx_msg void OnPlayStart();  



afx_msg void OnPlayStop();  



afx_msg void OnAudeoVolumn();  



afx_msg void OnErrorAmovie(short SCode; LPCTSTR Description;   



LPCTSTR Source; BOOL FAR* CancelDisplay);  


…………………………………………………………Page 415……………………………………………………………

afx_msg void OnAudeoBalance();  



afx_msg void OnVideo1x();  



afx_msg void OnVideo2x();  



afx_msg void OnPlayPause();  



afx_msg void OnHelpAbout();  



DECLARE_EVENTSINK_MAP()  



//}}AFX_MSG  



DECLARE_MESSAGE_MAP()  



};  



// VideoPlayerDlg。cpp : 实现文件  



//  



#include 〃stdafx。h〃  



#include 〃VideoPlayer。h〃  



#include 〃VideoPlayerDlg。h〃  



#include 〃VolumnDlg。h〃  



#include 〃BalanceDlg。h〃  



// 在此省略了定义和实现类 CAboutDlg 的代码  



// 。。。  



/////////////////////////////////////////////////////////////////////////////  



// CVideoPlayerDlg 对话框  



CVideoPlayerDlg::CVideoPlayerDlg(CWnd* pParent /*=NULL*/)  



: CDialog(CVideoPlayerDlg::IDD; pParent)  



{  



//{{AFX_DATA_INIT(CVideoPlayerDlg)  



//}}AFX_DATA_INIT  



// 注意:LoadIcon 函数并不需要的后面调用 Win32 中的 DestroyIcon  


…………………………………………………………Page 416……………………………………………………………

m_hIcon = AfxGetApp()…》LoadIcon(IDR_MAINFRAME);  



}  



void CVideoPlayerDlg::DoDataExchange(CDataExchange* pDX)  



{  



CDialog::DoDataExchange(pDX);  



//{{AFX_DATA_MAP(CVideoPlayerDlg)  



DDX_Control(pDX; IDC_AMOVIE; m_amovie);  



//}}AFX_DATA_MAP  



}  



// 类 CVideoPlayerDlg 的消息映射  



BEGIN_MESSAGE_MAP(CVideoPlayerDlg; CDialog)  



//{{AFX_MSG_MAP(CVideoPlayerDlg)  



ON_WM_SYSMAND()  



ON_WM_PAINT()  



ON_WM_QUERYDRAGICON()  



ON_MAND(ID_FILEOPEN; OnFileOpen)  



ON_MAND(ID_FILECLOSE; OnFileClose)  



ON_MAND(ID_FILEEXIT; OnFileExit)  



ON_MAND(ID_PLAYSTART; OnPlayStart)  



ON_MAND(ID_PLAYSTOP; OnPlayStop)  



ON_MAND(ID_AUDEOVOLUMN; OnAudeoVolumn)  



ON_MAND(ID_AUDEOBALANCE; OnAudeoBalance)  



ON_MAND(ID_VIDEO1X; OnVideo1x)  



ON_MAND(ID_VIDEO2X; OnVideo2x)  



ON_MAND(ID_PLAYPAUSE; OnPlayPause)  



ON_MAND(ID_HELPABOUT; OnHelpAbout)  


…………………………………………………………Page 417……………………………………………………………

//}}AFX_MSG_MAP  



END_MESSAGE_MAP()  



/////////////////////////////////////////////////////////////////////////////  



// CVideoPlayerDlg 消息处理函数  



BOOL CVideoPlayerDlg::OnInitDialog()  



{  



CDialog::OnInitDialog();  



// 为对话框设置图标。对于不使用对话框作为主窗口的应用程序,这一步骤由框架自动完成  



SetIcon(m_hIcon; TRUE); // 设置大图标  



SetIcon(m_hIcon; FALSE); // 设置小图标  



// 设置 ActiveMovie 控件的初始文件为空  



m_amovie。SetFileName(〃〃);  



// 改变窗口的大小以适应 ActiveMovie 控件的大小  



MoveMovieWindow();  



return TRUE;  



}  



// 如果向对话框中添加到最小化按钮,您将需要编写代码来绘制相应的图标。对于使用了  



// 文档/视结构的应用程序,这一操作由框架自动完成  



void CVideoPlayerDlg::OnPaint()   



{  



if (IsIconic())  



{  



CPaintDC dc(this); // 绘制设备上下文  



SendMessage(WM_ICONERASEBKGND; (WPARAM) dc。GetSafeHdc(); 0);  



// 在客户区矩形内居中图标  



int cxIcon = GetSystemMetrics(SM_CXICON);  


…………………………………………………………Page 418……………………………………………………………

int cyIcon = GetSystemMetrics(SM_CYICON);  



CRect rect;  



GetClientRect(&rect);  



int x = (rect。Width() cxIcon + 1) / 2;  



int y = (rect。Height() cyIcon + 1) / 2;  



// 绘制图标  



dc。DrawIcon(x; y; m_hIcon);  



}  



else  



{  



CDialog::OnPaint();  



}  



}  



// 当用户拖动最小化了的窗口时,系统调用该函数来获得显示使用的光标  



HCURSOR CVideoPlayerDlg::OnQueryDragIcon()  



{  



return (HCURSOR) m_hIcon;  



}  



// 打开媒体文件  



void CVideoPlayerDlg::OnFileOpen()   



{  



CFileDialog dlg(TRUE; NULL; NULL; 0; 〃所有文件 |*。*〃; NULL);  



if (dlg。DoModal()==IDOK)  



{  



m_amovie。SetFileName(dlg。GetPathName());  



}  


…………………………………………………………Page 419……………………………………………………………

}  



// ActiveMovie 控件 IDC_AMOVIE 的消息映射  



BEGIN_EVENTSINK_MAP(CVideoPlayerDlg; CDialog)  



//{{AFX_EVENTSINK_MAP(CVideoPlayerDlg)  



ON_EVENT(CVideoPlayerDlg; IDC_AMOVIE; 50 /* Openplete */;   



OnOpenpleteAmovie; VTS_NONE)  



ON_EVENT(CVideoPlayerDlg; IDC_AMOVIE; …609 /* ReadyStateChange */;   



OnReadyStateChangeAmovie; VTS_I4)  



ON_EVENT(CVideoPlayerDlg; IDC_AMOVIE; 1 /* StateChange */;   



OnStateChangeAmovie; VTS_I4 VTS_I4)  



ON_EVENT(CVideoPlayerDlg; IDC_AMOVIE; 51 /* DisplayModeChange */;   



OnDisplayModeChangeAmovie; VTS_NONE)  



ON_EVENT(CVideoPlayerDlg; IDC_AMOVIE; 999 /* Error */;   



OnErrorAmovie; VTS_I2 VTS_BSTR VTS_BSTR VTS_PBOOL)  



//}}AFX_EVENTSINK_MAP  



END_EVENTSINK_MAP()  



// 当 ActiveMovie 控件完成媒体文件的加载时自动播放该文件  



void CVideoPlayerDlg::OnOpenpleteAmovie()   



{  



m_amovie。Run();   



}  



// 当 ActiveMovie 控件的准备状态发生改变时,在需要的情况下改变对话框的大小以适应  



// ActiveMovie 控件的大小  



void CVideoPlayerDlg::OnReadyStateChangeAmovie(long ReadyState)   



{  



MoveMovieWindow();  


…………………………………………………………Page 420……………………………………………………………

}  



// 关闭媒体文件,即简单的将 ActiveMovie 控件的 FileName 属性值设置为空  



void CVideoPlayerDlg::OnFileClose()   



{  



m_amovie。SetFileName(〃〃);  



}  



// 当 ActiveMovie 控件的状态发生改变时,在需要的情况下改变对话框的大小以适应  



// ActiveMovie 控件的大小  



void CVideoPlayerDlg::OnStateChangeAmovie(long oldState; long newState)   



{  



MoveMovieWindow();   



}  



// 改变对话框在大小以适应 ActiveMovie 控件的大小  



void CVideoPlayerDlg::MoveMovieWindow()  



{  



CRect rc1; rc2; rc3;  



// 得到 Ac
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!