#include "StdAfx.h"
#include ".\maindlg.h"
LRESULT CMainDlg::OnBnClickedOk(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
// TODO: Add your control notification handler code here
return 0;
}
LRESULT CMainDlg::OnEraseBackground(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
RECT rc = {0};
BITMAP bm = {0};
HBITMAP hBitmap = NULL;
HGDIOBJ hOldBitmap = NULL;
HDC dc = (HDC)wParam;
HDC hMemDC = ::CreateCompatibleDC(dc);
if( hMemDC == NULL )
return E_FAIL;
hBitmap = ::LoadBitmap( _AtlBaseModule.GetResourceInstance(), MAKEINTRESOURCE(IDB_CMD_BK));
if( hBitmap == NULL ) {
::DeleteDC(hMemDC);
return E_FAIL;
}
// ASSERT( hBitmap != NULL );
this->GetClientRect(&rc);
hOldBitmap = ::SelectObject(hMemDC, hBitmap);
::GetObject(hBitmap, sizeof(bm), &bm);
::StretchBlt(dc, 0, 0, rc.right, rc.bottom, hMemDC, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
::SelectObject(hMemDC, hOldBitmap);
::DeleteObject(hBitmap);
::DeleteDC(hMemDC);
return S_OK;
}
LRESULT CMainDlg::OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
{
int cx = LOWORD(lParam);
int cy = HIWORD(lParam);
LONG lDistance = 0;
LONG lBtnWidth = 30;
LONG lBtnHeight = 18;
long left = lBtnWidth/2;
long top = 27;
int iLetPos = 0;
int iRightPos = 0;
int iHightSecSlider = 0;
if( ::IsWindow(m_cSliderVideo.m_hWnd) )
::SetWindowPos(m_cSliderVideo.m_hWnd, NULL, lBtnWidth/3, 0, cx-2 * lBtnWidth/3, 22, SWP_SHOWWINDOW);
if( ::IsWindow(m_cSliderAudio.m_hWnd) )
::SetWindowPos(m_cSliderAudio.m_hWnd, NULL, cx - left - 60, 25 + iHightSecSlider, 67, 24, SWP_SHOWWINDOW);
if( ::IsWindow(m_cSilence.m_hWnd) )
::SetWindowPos(m_cSilence.m_hWnd, NULL, cx - left - 60 - 17, 30 + iHightSecSlider, 17, 14, SWP_SHOWWINDOW);
if( ::IsWindow(m_cBtnPlay.m_hWnd) )
::SetWindowPos(m_cBtnPlay.m_hWnd, NULL, left, top + iHightSecSlider, lBtnWidth, lBtnHeight, SWP_SHOWWINDOW);
//left = left + lBtnWide + lDistance;
//if( ::IsWindow(m_cBtnContinue.m_hWnd) )
// ::SetWindowPos(m_cBtnContinue.m_hWnd, NULL, left, top + iHightSecSlider, lBtnWidth, lBtnHeight, SWP_SHOWWINDOW);
left = left + lBtnWidth + lDistance;
if( ::IsWindow(m_cBtnPause.m_hWnd) )
::SetWindowPos(m_cBtnPause.m_hWnd, NULL, left, top + iHightSecSlider, lBtnWidth, lBtnHeight, SWP_SHOWWINDOW);
left = left + lBtnWidth + lDistance;
if( ::IsWindow(m_cDownRate.m_hWnd) )
::SetWindowPos(m_cDownRate.m_hWnd, NULL, left, top + iHightSecSlider, lBtnWidth, lBtnHeight, SWP_SHOWWINDOW);
left = left + lBtnWidth + lDistance;
if( ::IsWindow(m_cUpRate.m_hWnd) )
::SetWindowPos(m_cUpRate.m_hWnd, NULL, left, top + iHightSecSlider, lBtnWidth, lBtnHeight, SWP_SHOWWINDOW);
left = left + lBtnWidth + lDistance;
if(::IsWindow(m_cBtnStop.m_hWnd))
::SetWindowPos(m_cBtnStop.m_hWnd, NULL, left, top + iHightSecSlider, lBtnWidth, lBtnHeight, SWP_SHOWWINDOW);
left = left + lBtnWidth + lDistance;
if( ::IsWindow(m_cBtnRec.m_hWnd) )
::SetWindowPos(m_cBtnRec.m_hWnd, NULL, left, top + iHightSecSlider, lBtnWidth, lBtnHeight, SWP_SHOWWINDOW);
if( !::IsWindow(m_cBtnStop.m_hWnd) || !::IsWindow(m_cBtnPlay.m_hWnd) )
return S_OK;
_ASSERT( ::IsWindow(m_cBtnStop.m_hWnd) && ::IsWindow(m_cBtnPlay.m_hWnd) );
}
LRESULT CMainDlg::OnMsgSliderPos(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
// ASSERT( uMsg == WM_SLIDER_POS_MSG );
switch( wParam )
{
case IDC_SLIDER_VIDEO:
{
//this->OnVideoSliderPos(lParam);
break;
}
case IDC_SLIDER_AUDIO:
{
//this->OnAudioSliderPos(lParam);
break;
}
default: /*-- do nothing --*/ break;
}
return S_OK;
}
LRESULT CMainDlg::OnTimer(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
hash_map<__int64,__int64> MapArea;
if( m_iEndPos == 101 )
return S_OK;
//在此可以画多个区域,当在网络播放器上用时要显示下载的进度,这里就可根据下载的情况进行下载的区域填充。如果是播放器进行了SEEK操作,
//那么就可能会出现多个不连续的数据块,此时可能根据已有下载数据进行分区域填充,以示当前下载的情况
//MapArea[ 区域开始 ] = 区域结束位置;
m_cSliderVideo.SetPos(m_iEndPos);
MapArea[ 0 ] = m_iEndPos++;
m_cSliderVideo.DrawChannelBarBack( MapArea, 100 );
return S_OK;
}
LRESULT CMainDlg::OnBnClickedBtnPlay(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
//MessageBox("开始播放了!");
SetTimer(1,1000,NULL);
m_cBtnPlay.EnableWindow(FALSE);
m_cBtnPause.EnableWindow();
m_cBtnStop.EnableWindow();
m_cBtnRec.EnableWindow();
return S_OK;
}
LRESULT CMainDlg::OnBnClickedBtnStop(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
{
KillTimer(1);
m_cBtnPlay.EnableWindow(TRUE);
m_cBtnPause.EnableWindow(FALSE);
m_cBtnStop.EnableWindow(FALSE);
m_cBtnRec.EnableWindow(FALSE);
m_cSliderVideo.Reset();
m_iEndPos = 0;
return S_OK;
}
没有合适的资源?快使用搜索试试~ 我知道了~
WTL实现播放器控制窗口
共54个文件
h:26个
bmp:17个
cpp:3个
5星 · 超过95%的资源 需积分: 10 117 下载量 158 浏览量
2009-06-22
22:42:20
上传
评论 4
收藏 420KB RAR 举报
温馨提示
用WTL写成的一个精美播放器控制窗口,源码说明的文章http://blog.csdn.net/wanghaisheng/archive/2009/06/18/4281221.aspx
资源推荐
资源详情
资源评论
收起资源包目录
TestSlider.rar (54个子文件)
TestSlider
UIBmpBtn.h 48KB
resource.h 2KB
MainDlg.h 8KB
stdafx.h 761B
TestSlider.vcproj 6KB
TestSlider.rc 10KB
maindlg.CPP 5KB
AboutDlg.h 1KB
TestSlider.sln 909B
Debug
TestSlider.exe 564KB
stdafx.cpp 287B
TestSlider.h 17B
TestSlider.suo 13KB
res
TestSlider.ico 1KB
myCMD.bmp 50KB
barBakChal.bmp 5KB
TestSlider.exe.manifest 594B
Record.bmp 3KB
chalright.bmp 790B
AuThum.bmp 1KB
BarBack.bmp 13KB
sound.bmp 3KB
BKStatu.bmp 2KB
challeft.bmp 790B
decrease.bmp 3KB
PAUSE.bmp 3KB
Thumbs.db 28KB
BarBackaudio.bmp 4KB
increase.bmp 3KB
PLAY.bmp 3KB
sliderThum.bmp 366B
STOP.bmp 3KB
CONTINUE.bmp 3KB
WTL
atlsplit.h 24KB
atlprint.h 29KB
atluser.h 31KB
atlcrack.h 60KB
atlresce.h 2KB
atlctrls.h 265KB
atlres.h 9KB
atlwince.h 82KB
atlwinx.h 14KB
atlctrlw.h 119KB
atlfind.h 27KB
atlframe.h 100KB
atlddx.h 15KB
atlapp.h 43KB
atlgdi.h 98KB
atlscrl.h 57KB
atlmisc.h 94KB
atldlgs.h 169KB
atlctrlx.h 126KB
atltheme.h 34KB
TestSlider.cpp 1KB
共 54 条
- 1
MarkStudio
- 粉丝: 337
- 资源: 29
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 通道处理过程的模拟通常涉及对通道处理机制的理解与实现.txt
- Flume进阶-自定义拦截器jar包
- Dubins曲线算法讲解和在运动规划中的使用.pdf
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.dta
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.xlsx
- Reeds+Shepp曲线算法讲解和实现.pdf
- 毕业设计基于SpringBoot+MyBatisPlus+MySQL+Vue的外卖配送信息系统源代码+数据库
- 词向量(Word Embeddings)是自然语言处理(NLP)领域的一种重要技术.txt
- Surfer,线性函数
- MyBatis 的动态 SQL 是其核心特性之一.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页