// HelpPlayer.cpp : 实现文件
//
#include "stdafx.h"
#include "mozi2.h"
#include "HelpPlayer.h"
class CHelpPlayer : public CDialog
{
DECLARE_DYNAMIC(CHelpPlayer)
public:
CHelpPlayer(CWnd* pParent = NULL); // 标准构造函数
virtual ~CHelpPlayer();
// 对话框数据
enum { IDD = IDD_DLG_HELPPLAY };
CImageList m_ImageList;
CPoint m_pt;
BYTE m_cIndex;
int m_iAlpha;
DECLARE_MESSAGE_MAP()
public:
virtual BOOL OnInitDialog();
public:
afx_msg void OnTimer(UINT_PTR nIDEvent);
public:
afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
public:
afx_msg void OnPaint();
};
void Image3(CDC* pDC, IPicture* pPicture, int iX, int iY, int iW, int iH)
{
if(pPicture==NULL) return;
HDC hDC=pDC->GetSafeHdc();
OLE_XSIZE_HIMETRIC Width;
OLE_YSIZE_HIMETRIC Height;
pPicture->get_Width(&;Width);
pPicture->get_Height(&;Height);
pPicture->Render(hDC, iX, iY, iW, iH, 0, Height, Width, -Height, NULL);
}
BOOL ZycGlob_ImageFlieToIPic(IPicture*&; pPicture, LPCTSTR szFileName)
{
if(pPicture!=NULL){
pPicture->Release();
pPicture=NULL;
}
CFileStatus fstatus;
CFile file;
long cb;
if(!file.Open(szFileName, CFile::modeRead)||
!file.GetStatus(szFileName,fstatus)||((cb=fstatus.m_size)==-1)){
return FALSE;
}
HGLOBAL hGlobal;
IStream *pStrm;
hGlobal = GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData = NULL;
if(hGlobal != NULL) {
if((pvData = GlobalLock(hGlobal)) != NULL) {
file.Read(pvData, cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal,true, &;pStrm);
OleLoadPicture(pStrm, cb, true, IID_IPicture, (LPVOID*)&;pPicture);
}
}
file.Close();
if(pStrm!=NULL) pStrm->Release();
if(hGlobal!=NULL) GlobalFree(hGlobal);
return TRUE;
}
BOOL Image2(CDC* pDC, CImageList* pImg, int iW, int iH, LPCTSTR szFileName)
{
IPicture* pPicture=NULL;
if(ZycGlob_ImageFlieToIPic(pPicture, szFileName)){
CBitmap bmpMap, *pBmp;
CDC dcMem;
dcMem.CreateCompatibleDC(NULL);
bmpMap.CreateCompatibleBitmap(pDC, iW, iH);
pBmp=dcMem.SelectObject(&;bmpMap);
Image3(&;dcMem, pPicture, 0, 0, iW, iH);
pPicture->Release();
dcMem.SelectObject(pBmp);
pImg->Add(&;bmpMap, RGB(255,0,255));
bmpMap.DeleteObject();
dcMem.DeleteDC();
return TRUE;
}
return FALSE;
}
void ZycGlob_SetLayeredWindow(HWND hWnd, DWORD dwColorKey, WORD wAlfa, BYTE cLAW)
{
HINSTANCE hInst=GetModuleHandle(_T("USER32.DLL"));
if(hInst){
BOOL (WINAPI *SetLayeredWindowAttributes)(HWND,COLORREF,BYTE,DWORD)=
(BOOL (WINAPI*) (HWND,COLORREF,BYTE,DWORD))GetProcAddress(hInst,"SetLayeredWindowAttributes");
if(SetLayeredWindowAttributes){
::SetWindowLong(hWnd,GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE)|WS_EX_LAYERED);
SetLayeredWindowAttributes(hWnd, dwColorKey, wAlfa, cLAW);
}
FreeLibrary(hInst);
}
}
// CHelpPlayer 对话框
IMPLEMENT_DYNAMIC(CHelpPlayer, CDialog)
CHelpPlayer::
CHelpPlayer(CWnd* pParent /*=NULL*/):CDialog(CHelpPlayer::IDD, pParent)
{
m_cIndex=0;
m_iAlpha=0;
}
CHelpPlayer::~CHelpPlayer()
{
}
BEGIN_MESSAGE_MAP(CHelpPlayer, CDialog)
ON_WM_TIMER()
ON_WM_CTLCOLOR()
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
END_MESSAGE_MAP()
// CHelpPlayer 消息处理
程序 BOOL CHelpPlayer::OnInitDialog()
{
CDialog::OnInitDialog();
CP