175 lines
4.0 KiB
C++
175 lines
4.0 KiB
C++
// DLG_RecvSms.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "CorpSms.h"
|
|
#include "DLG_RecvSms.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// DLG_RecvSms dialog
|
|
|
|
#include "Memdc.h"
|
|
|
|
DLG_RecvSms::DLG_RecvSms(CWnd* pParent /*=NULL*/)
|
|
: CDialog(DLG_RecvSms::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(DLG_RecvSms)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
|
|
m_lCount = 0;
|
|
memset(m_szTitle,0,sizeof(m_szTitle));
|
|
}
|
|
|
|
|
|
void DLG_RecvSms::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(DLG_RecvSms)
|
|
// NOTE: the ClassWizard will add DDX and DDV calls here
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(DLG_RecvSms, CDialog)
|
|
//{{AFX_MSG_MAP(DLG_RecvSms)
|
|
ON_WM_PAINT()
|
|
ON_WM_CLOSE()
|
|
ON_WM_TIMER()
|
|
ON_WM_LBUTTONDOWN()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// DLG_RecvSms message handlers
|
|
|
|
BOOL DLG_RecvSms::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
CBitmap bmpMain; //用于载入教室图形
|
|
BITMAP BitMap; //用于取位图的大小
|
|
long lTemp;
|
|
lTemp = bmpMain.LoadBitmap( IDB_S_RECVSMS ); //装入位图
|
|
lTemp = bmpMain.GetBitmap( &BitMap ); //取得位图的大小
|
|
|
|
xBmp = BitMap.bmWidth+2;
|
|
yBmp = BitMap.bmHeight+2;
|
|
|
|
|
|
HDC hScrDC; // 屏幕和内存设备描述表
|
|
//为屏幕创建设备描述表
|
|
hScrDC = CreateDC(_T("DISPLAY"), NULL, NULL, NULL);
|
|
//获得屏幕分辨率
|
|
xScrn = GetDeviceCaps(hScrDC, HORZRES);
|
|
yScrn = GetDeviceCaps(hScrDC, VERTRES);
|
|
|
|
MoveWindow( xScrn , yScrn , xBmp , yBmp );
|
|
|
|
SetTimer( 1 , 100 , NULL );
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void DLG_RecvSms::OnPaint()
|
|
{
|
|
CPaintDC dc(this); // device context for painting
|
|
|
|
CMemDC_R memDC(&dc);
|
|
|
|
CDC pDispDC;
|
|
pDispDC.CreateCompatibleDC( &memDC );
|
|
CBitmap bmpMain; //用于载入教室图形
|
|
CBitmap * OldBmp; //记录旧的Bitmap
|
|
BITMAP BitMap; //用于取位图的大小
|
|
long lTemp;
|
|
lTemp = bmpMain.LoadBitmap( IDB_S_RECVSMS ); //装入位图
|
|
lTemp = bmpMain.GetBitmap( &BitMap ); //取得位图的大小
|
|
//HBITMAP bmp;
|
|
//bmp = (HBITMAP)LoadImage( NULL,"Main.bmp",IMAGE_BITMAP,0,0,LR_DEFAULTCOLOR|LR_LOADFROMFILE);
|
|
//GetObject(bmp, sizeof(BitMap), &BitMap);
|
|
//CBitmap * pbmp;
|
|
//pbmp = CBitmap::FromHandle( bmp );
|
|
|
|
//OldBmp = pDispDC.SelectObject( &bmpMain );//选入位图
|
|
OldBmp = pDispDC.SelectObject( &bmpMain );//选入位图
|
|
memDC.BitBlt( 0 , 0 , BitMap.bmWidth , BitMap.bmHeight , &pDispDC , 0 , 0 , SRCCOPY );
|
|
memDC.SetBkMode(TRANSPARENT);
|
|
if ( _tcslen(m_szTitle) > 0 )
|
|
memDC.TextOut( 50 , 15 , m_szTitle );
|
|
else
|
|
memDC.TextOut( 50 , 15 , _T("收到新消息") );
|
|
memDC.TextOut( 5 , 40 , m_Sms.szSender );
|
|
memDC.TextOut( 5 , 60 , m_Sms.szTime );
|
|
memDC.TextOut( 5 , 80 , m_Sms.szMsg );
|
|
|
|
//恢复原来的BMP
|
|
pDispDC.SelectObject( OldBmp );
|
|
CDialog::OnPaint();
|
|
}
|
|
|
|
void DLG_RecvSms::SetPara(SMS_Recv2 *pSms,const TCHAR * pTitle)
|
|
{
|
|
memcpy( &m_Sms , pSms , sizeof(m_Sms) );
|
|
|
|
if ( pTitle )
|
|
_tcscpy(m_szTitle , pTitle );
|
|
}
|
|
|
|
void DLG_RecvSms::OnClose()
|
|
{
|
|
CDialog::OnClose();
|
|
this->DestroyWindow();
|
|
delete this;
|
|
}
|
|
|
|
void DLG_RecvSms::OnTimer(UINT_PTR nIDEvent)
|
|
{
|
|
switch( nIDEvent )
|
|
{
|
|
case 1:
|
|
m_lCount +=5;
|
|
if ( m_lCount >= yBmp +50 ) //升至上限
|
|
{
|
|
KillTimer( 1 );
|
|
SetTimer(2 , 5000 , NULL ); //5秒钟后退出
|
|
return ;
|
|
}
|
|
MoveWindow( xScrn - xBmp -20 , yScrn - m_lCount , xBmp , yBmp );
|
|
break;
|
|
case 2:
|
|
KillTimer(2);
|
|
SetTimer(3 , 70 , NULL); //启动降时钟
|
|
break;
|
|
case 3:
|
|
m_lCount -=5;
|
|
if ( m_lCount <= 0 ) //降至上限
|
|
{
|
|
KillTimer( 3 );
|
|
this->OnClose();
|
|
return ;
|
|
}
|
|
MoveWindow( xScrn - xBmp -20 , yScrn - m_lCount , xBmp , yBmp );
|
|
break;
|
|
}
|
|
|
|
CDialog::OnTimer(nIDEvent);
|
|
}
|
|
|
|
void DLG_RecvSms::OnLButtonDown(UINT nFlags, CPoint point)
|
|
{
|
|
KillTimer(1);
|
|
KillTimer(2);
|
|
SetTimer(3 , 30 , NULL); //启动降时钟
|
|
|
|
|
|
CDialog::OnLButtonDown(nFlags, point);
|
|
}
|