資源簡介
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
- 上一篇:MATLAB模糊控制器*.fisC/C++接口文件
- 下一篇:C++實驗繼承與派生
評論
共有 條評論