⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msgwnd.cpp

📁 这是一个学生信息管理系统
💻 CPP
字号:
// MsgWnd.cpp : implementation file
//

#include "stdafx.h"
#include "MsgWnd.h"
#include "SMS.h"
#include "resource.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//---------------------------------------------------------------------------

/////////////////////////////////////////////////////////////////////////////
// CMsgWnd

CMsgWnd::CMsgWnd()
{
	switch(m_iSystemStyle)
	{
	case 0:
		m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_TIP_0)); 
		break;
	case 1:
		m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_TIP_1)); 
		break;
	case 2:
		m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_TIP_2)); 
		break;
	case 3:
		m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_TIP_3)); 
		break;
	case 4:
		m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_TIP_4)); 
		break;
	case 5:
		m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_TIP_5)); 
		break;
	case 6:
		m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_TIP_6)); 
		break;
	case 7:
		m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_TIP_7)); 
		break;
	case 8:
		m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_TIP_8)); 
		break;
	case 9:
		m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_TIP_9)); 
		break;
	case 10:
		m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_TIP_10)); 
		break;
	}
	
	m_Bitmap.GetBitmap(&bmBitmap);         //Get Bitmap Info
	m_bFlag=false;
	m_strMessage=_T("No Message To Show");
	m_strCaption=_T("No Caption");
	m_iLine=1;
    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	
}

CMsgWnd::~CMsgWnd()
{
}


BEGIN_MESSAGE_MAP(CMsgWnd, CWnd)
	//{{AFX_MSG_MAP(CMsgWnd)
	ON_WM_PAINT()
	ON_WM_TIMER()
	ON_WM_CREATE()
	ON_WM_MOUSEMOVE()
	ON_WM_KILLFOCUS()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/////////////////////////////////////////////////////////////////////////////
// CMsgWnd message handlers
void CMsgWnd::CreateMsgWindow()
{
//	RECT rect;
//	SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0);
//	int y=rect.bottom-rect.top;
//	int x=rect.right-rect.left;
//	x=x-WIN_WIDTH;
//	y=y-WIN_HEIGHT;
	CreateEx(0,
		     AfxRegisterWndClass(
			 0,
			 ::LoadCursor(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDC_CURSOR1)),(HBRUSH)(COLOR_DESKTOP+1),NULL),
			 _T(""),
			 WS_POPUP|WS_EX_TOPMOST,
			 0,
			 0,
			 0,//bmBitmap.bmWidth,  //Bitmap Width = Splash Window Width
			 0,//bmBitmap.bmHeight, //Bitmap Height = Splash Window Height
			 NULL,//AfxGetMainWnd()->GetSafeHwnd(),
			 NULL,
			 NULL);
	SetTimer(ID_TIMER_POP_WINDOW,20,NULL);
}
/*
void CMsgWnd::SetPromptMessage(LPCTSTR lpszMsg)
{
	lstrcpy(m_strMessage,lpszMsg);
}
*/
void CMsgWnd::SetPromptMessage(CString lpszMsg)
{
	m_strMessage=lpszMsg;
}
void CMsgWnd::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	CDC dcMemory;
	CRect rect;
	GetClientRect(&rect);
    dcMemory.CreateCompatibleDC(NULL);
	dcMemory.SelectObject(&m_Bitmap);
	dc.StretchBlt(0,
		0,
		rect.right-rect.left,//bmBitmap.bmWidth,
		rect.bottom-rect.top,//bmBitmap.bmHeight,    
		&dcMemory, 
		0,
		0,
		bmBitmap.bmWidth,    
		bmBitmap.bmHeight,
		SRCCOPY);	
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标
	// 使图标在工作矩形中居中
	int cxIcon = GetSystemMetrics(SM_CXICON);
	int cyIcon = GetSystemMetrics(SM_CYICON);
	int x = (rect.Width() - cxIcon + 1) / 2;
	int y = (rect.Height() - cyIcon + 1) / 2;
	// 绘制图标
	dc.DrawIcon(x, y, m_hIcon);

	CFont font;
	font.CreatePointFont(90,_T("Impact"));
	dc.SelectObject(&font);
	dc.SetTextColor(RGB(0,64,128));
	dc.SetBkColor (RGB(255,0,0));
    dc.SetBkMode(TRANSPARENT);
	dc.TextOut(30,10,m_strCaption);
	rect.top=30;
	//dc.DrawText(m_strMessage,-1,&rect,DT_CALCRECT|DT_WORDBREAK);
	CString tempStr;
	int Length=m_strMessage.GetLength ();
	for(int i=0;i<m_iLine; i++)//每一行显示
	{
		//L"我是王昌栋,我喜欢计算机,我更喜欢代码,我要用计算机改变人类!和和好非常好!非常好,不错的想法!这就是我,有激情,有动力!";
		tempStr=m_strMessage;
		rect.OffsetRect (0,15);
		tempStr.Delete (0,i*20);
		tempStr.Delete (20,Length*20-20);
		dc.DrawText(tempStr,-1,&rect,DT_CENTER|DT_SINGLELINE|DT_LEFT);
	}
	// Do not call CWnd::OnPaint() for painting messages
}

void CMsgWnd::OnTimer(UINT nIDEvent) 
{	
	static int nHeight=0;
 	int cy=GetSystemMetrics(SM_CYSCREEN);
	int cx=GetSystemMetrics(SM_CXSCREEN);
	RECT rect;
	SystemParametersInfo(SPI_GETWORKAREA,0,&rect,0);
	int y=rect.bottom-rect.top;
	int x=rect.right-rect.left;
	x=x-WIN_WIDTH;
	
	switch(nIDEvent)
	{
	case ID_TIMER_POP_WINDOW:
		if(nHeight<=WIN_HEIGHT)
		{
			++nHeight;			
			MoveWindow(x,
				y-nHeight,
				WIN_WIDTH,
				WIN_HEIGHT);
			
		    Invalidate(FALSE);
		}
		else
		{
			KillTimer(ID_TIMER_POP_WINDOW);
			SetTimer(ID_TIMER_DISPLAY_DELAY,5000,NULL);
		}
		break;
	case ID_TIMER_CLOSE_WINDOW:
		if(nHeight>=0)
		{
			nHeight--;
			MoveWindow(x,
				y-nHeight,
				WIN_WIDTH,
				nHeight);
		}
		else
		{
			KillTimer(ID_TIMER_CLOSE_WINDOW);
			SendMessage(WM_CLOSE);
		}
		break;
	case ID_TIMER_DISPLAY_DELAY:
		KillTimer(ID_TIMER_DISPLAY_DELAY);
		SetTimer(ID_TIMER_CLOSE_WINDOW,20,NULL);
		break;
	}
	
	CWnd::OnTimer(nIDEvent);
}

int CMsgWnd::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CWnd::OnCreate(lpCreateStruct) == -1)
		return -1;
	return 0;
}



void CMsgWnd::OnMouseMove(UINT nFlags, CPoint point) 
{
	CRect rect;
	GetClientRect(&rect);
	if(rect.PtInRect(point))
	{	m_bFlag=true;
		KillTimer(ID_TIMER_DISPLAY_DELAY);
	}	
	CWnd::OnMouseMove(nFlags, point);
}

void CMsgWnd::OnKillFocus(CWnd* pNewWnd) 
{
	CWnd::OnKillFocus(pNewWnd);
	if(m_bFlag)
	SetTimer(ID_TIMER_DISPLAY_DELAY,3000,NULL);
	// TODO: Add your message handler code here
	
}

void CMsgWnd::SetPromptCaption(CString lpszCaption)
{
//	lstrcpy(m_strCaption,lpszCaption);
	m_strCaption=lpszCaption;
}
HCURSOR CMsgWnd::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -