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

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

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






{  



CSliderCtrl *pSlider=(CSliderCtrl *)pScrollBar;  


…………………………………………………………Page 409……………………………………………………………

int nVolume=pSlider…》GetPos();  



m_pAmovie…》SetVolume(nVolume);  



CDialog::OnHScroll(nSBCode; nPos; pScrollBar);  



}  



8。  设计用于调节左右声道平衡的对话框。该对话框如图7。6所示,其 

资源ID为IDD_BALANCE。由ClassWizard创建的新类CBalanceDlg封装 

了该对话框。同前面的对话框IDD_VOLUME相类似,CBalanceDlg定义 

了公有成员函数SetBalance以供类外部的使用者调用,该函数同样使 

用一个指向CActiveMovie对象的指针作为其参数。  



                                                      



                      图7。 6 用于调节左右声道平衡的对话框:  

                                   IDD_BALANCE  



根据下面提供的代码来完成类CBalanceDlg。  



// BalanceDlg。h : 头文件  



//  



class CActiveMovie;  



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



// CBalanceDlg 对话框  



class CBalanceDlg : public CDialog  



{  



// 构造  



public:  



void SetBalance(CActiveMovie* pAmovie);  



CBalanceDlg(CWnd* pParent = NULL); // 标准构造函数  



// 对话框数据  



//{{AFX_DATA(CBalanceDlg)  


…………………………………………………………Page 410……………………………………………………………

enum { IDD = IDD_BALANCE };  



CSliderCtrl m_sld;  



//}}AFX_DATA  



    



// 重载  



//{{AFX_VIRTUAL(CBalanceDlg)  



protected:  



virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持  



//}}AFX_VIRTUAL  



// 实现  



protected:  



CActiveMovie *m_pAmovie;  



//{{AFX_MSG(CBalanceDlg)  



virtual BOOL OnInitDialog();  



afx_msg void OnHScroll(UINT nSBCode; UINT nPos; CScrollBar* pScrollBar);  



//}}AFX_MSG  



DECLARE_MESSAGE_MAP()  



};  



// BalanceDlg。cpp : 实现文件  



//  



#include 〃stdafx。h〃  



#include 〃VideoPlayer。h〃  



#include 〃BalanceDlg。h〃  



#include 〃activemovie。h〃  



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



// CBalanceDlg 对话框  


…………………………………………………………Page 411……………………………………………………………

    



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



: CDialog(CBalanceDlg::IDD; pParent)  



{  



//{{AFX_DATA_INIT(CBalanceDlg)  



// NOTE: the ClassWizard will add member initialization here  



//}}AFX_DATA_INIT  



}  



    



void CBalanceDlg::DoDataExchange(CDataExchange* pDX)  



{  



CDialog::DoDataExchange(pDX);  



//{{AFX_DATA_MAP(CBalanceDlg)  



DDX_Control(pDX; IDC_SLIDER1; m_sld);  



//}}AFX_DATA_MAP  



}  



    



BEGIN_MESSAGE_MAP(CBalanceDlg; CDialog)  



//{{AFX_MSG_MAP(CBalanceDlg)  



ON_WM_HSCROLL()  



//}}AFX_MSG_MAP  



END_MESSAGE_MAP()  



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



// CBalanceDlg 消息处理函数  



BOOL CBalanceDlg::OnInitDialog()   



{  


…………………………………………………………Page 412……………………………………………………………

CDialog::OnInitDialog();  



// 初始化音量调节滑块的最大值和最小值、标度以及当前位置等  



m_sld。SetRange(…10000; 10000);  



m_sld。SetTicFreq(2000);  



m_sld。SetLineSize(500);  



m_sld。SetPageSize(2000);  



m_sld。SetPos(m_pAmovie…》GetBalance());  



return TRUE;  



}  



// 提供给类外部的使用者的接口方法  



void CBalanceDlg::SetBalance(CActiveMovie * pAmovie)  



{  



m_pAmovie=pAmovie;  



// 如果当前 ActiveMovie 未加载任何文件,则音量调节不可用并弹出出错信息  



// ActiveMovie 控件的 CurrentState 属性返回了当前控件的状态,…1 表示未加载任何文 

件  



if (m_pAmovie…》GetCurrentState()!=…1)  



{  



DoModal();  



}  



else  



{  



MessageBox(〃音频设备尚未加载,请先打开一个媒体文件。〃);  



}  



}  



// 当用户在拖动或点击滑块时,将用户的改变立即作用于 ActiveMovie 控件  



void CBalanceDlg::OnHScroll(UINT nSBCode; UINT nPos; CScrollBar* pScrollBar)   


…………………………………………………………Page 413……………………………………………………………

{  



CSliderCtrl *pSlider=(CSliderCtrl *)pScrollBar;  



// 得到滑块控件的当前位置  



int nVolume=pSlider…》GetPos();  



// 设置 ActiveMovie 控件的当前的声道平衡设置  



m_pAmovie…》SetBalance(nVolume);  



CDialog::OnHScroll(nSBCode; nPos; pScrollBar);  



}  



9。  按下面所给的代码来修改类CVideoPlayerDlg,在注意的是,这里 

的大部分菜单处理的声明是使用ClassWizard添加的:  



// VideoPlayerDlg。h : 头文件  



//  



//{{AFX_INCLUDES()  



#include 〃activemovie。h〃  



//}}AFX_INCLUDES  



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



// CVideoPlayerDlg 对话框  



class CVideoPlayerDlg : public CDialog  



{  



// 构造  



public:  



CVideoPlayerDlg(CWnd* pParent = NULL); // 标准构造函数  



// 对话框数据  



//{{AFX_DATA(CVideoPlayerDlg)  



enum { IDD = IDD_VIDEOPLAYER_DIALOG };  



CActiveMovie m_amovie;  


…………………………………………………………Page 414……………………………………………………………

//}}AFX_DATA  



//{{AFX_VIRTUAL(CVideoPlayerDlg)  



protected:  



virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持  



//}}AFX_VIRTUAL  



// 实现  



protected:  



void MoveMovieWindow();  



HICON m_hIcon;  



//{{AFX_MSG(CVideoPlayerDlg)  



virtual BOOL OnInitDialog();  



afx_msg void OnSysmand(UINT nID; LPARAM lParam);  



afx_msg void OnPaint();  



afx_msg HCURSOR OnQueryDragIcon();  



afx_msg void OnFileOpen();  



afx_msg void OnOpenpleteAmovie();  



afx_msg void OnReadyStateChangeAmovie(long ReadyState);  



afx_msg void OnFileClose();  



afx_msg void OnStateChangeAmovie(long oldState; long newState);  



afx_msg void OnDisplayModeChangeAmovie();  



afx_msg void OnFileExit();  



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)  


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