• 大小: 411KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: C/C++
  • 标签: C++  desktop  pet  

资源简介

MFC环境下的桌面宠物,金鱼。。。。。。。。。。。。。。。。。 使用方法: //0,添加left.png,right.png资源文件 //1, 头文件定义变量 GoldFish pet; //2, 在CPP文件创建 // Create a goldfish if (!pet.Create(NULL, NULL, WS_CHILD | WS_VISIBLE, CRect(0,0,0,0), /* CWnd:: */ GetDesktopWindow(), 0x556)) { TRACE0("can not create desktop pet, goldfish."); } pet.UpdateWindow();

资源截图

代码片段和文件信息

// MGoldFishWnd.cpp : 实现文件
//

#include “stdafx.h“
#include “lrPrint.h“
#include “GoldFish.h“


// GoldFish

IMPLEMENT_DYNAMIC(GoldFish CWnd)

GoldFish::GoldFish()
{

}

GoldFish::~GoldFish()
{
}


BEGIN_MESSAGE_MAP(GoldFish CWnd)
ON_WM_CREATE()
ON_WM_TIMER()
ON_WM_DESTROY()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_MOUSEMOVE()
ON_WM_RBUTTONDBLCLK()
ON_WM_SIZE()
END_MESSAGE_MAP()



// GoldFish 消息处理程序

int GoldFish::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;

SetWindowText(L“MGoldFish“);

m_nIDEvent = TIME_ID;
SetTimer(m_nIDEvent 50 NULL);

hFuncInst = LoadLibrary(L“User32.DLL“); 
BOOL bRet=FALSE;
if(hFuncInst) 
UpdatelayeredWindow = (MYFUNC)GetProcAddress(hFuncInst “UpdatelayeredWindow“);
else
{
//AfxMessageBox(“User32.dll ERROR!“);
exit(0);
}



ImageFromIDResource(IDB_PNG_LEFT L“PNG“m_pImageLeft);
ImageFromIDResource(IDB_PNG_RIGHT L“PNG“m_pImageRight);

m_BakWidth  = m_pImageLeft->GetWidth()/20;
m_BakHeight = m_pImageLeft->GetHeight();

frame = 0;
mouseDown = false;
haveHandle = false;
MaxCount = 50;
stepX = 2;
stepY = 0;
count = 0;
speedMode = false;
left = 0;
top = 0;

toRight = true;
frameCount = 20;
frame = 0; 
frameWidth = 100;
frameHeight = 100; 
oldPoint.x = 0;
oldPoint.y = 0;


m_Blend.BlendOp=0; 
m_Blend.BlendFlags=0;
m_Blend.AlphaFormat=1;
m_Blend.SourceConstantAlpha=255;

sizeWindow.cx = m_BakWidth
sizeWindow.cy = m_BakHeight;
ptSrc.x = 0;
ptSrc.y = 0;

//Modifystyle(WS_CAPTION0SWP_frameCHANGED); //去除标题栏
ModifystyleEx (WS_EX_APPWINDOW WS_EX_TOOLWINDOW ); //去除任务栏窗口对应按钮
::SetWindowPos(m_hWnd HWND_TOPMOST300300 m_pImageLeft->GetWidth()/20 m_pImageLeft->GetHeight()SWP_NOSIZE|SWP_NOMOVE);   


DWORD dwExstyle=::GetWindowLong(m_hWndGWL_EXstyle);
if((dwExstyle&0x80000)!=0x80000)
::SetWindowLong(m_hWndGWL_EXstyledwExstyle^0x80000);

return 0;
}


void GoldFish::OnTimer(UINT_PTR nIDEvent)
{
if ( m_nIDEvent != nIDEvent )
CWnd::OnTimer(nIDEvent);
else
{

if (!mouseDown)
{
count++;
if (count > MaxCount)
{
MaxCount = rand()*(70-0)/RAND_MAX+70 + 30;
//if (speedMode) timerSpeed.Interval = 50;

count = 0;
float r = (float)rand()/(float)RAND_MAX;
stepX = r * 3 + 0.5f;
stepY = ( r - 0.5f) * 0.5f;
}

left = (int)(left + (toRight ? 1 : -1) * stepX);
top = (int)(top + stepY);
FixLeftTop();
::SetWindowPos(m_hWnd HWND_TOPMOST left top m_pImageLeft->GetWidth()/20  m_pImageLeft->GetHeight()SWP_SHOWWINDOW);   
TRACE2(“left=%d top=%d\n“ left top);

//this.Left = (int)left;
//this.Top = (int)top;
}
frame++;
if (frame >= frameCount) frame = 0;

UpdateFishDisplay();
}

}


void GoldFish::OnDestroy()
{
KillTimer(m_nIDEvent);

CleanBitmap();

delete m_pImageLeft;
delete m_pImageRight;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7616  2014-01-08 13:50  goldfish\GoldFish.cpp

     文件       1711  2014-01-08 13:38  goldfish\GoldFish.h

     文件     205721  2014-01-08 12:41  goldfish\res\Left.png

     文件       6542  2012-03-05 19:57  goldfish\res\mgoldfish.ico

     文件     204894  2014-01-08 12:41  goldfish\res\Right.png

     文件       6542  2012-03-05 19:57  goldfish\res\small.ico

     目录          0  2014-01-08 13:58  goldfish\res

     目录          0  2014-01-08 13:58  goldfish

----------- ---------  ---------- -----  ----

               433026                    8


评论

共有 条评论