?? transparentwnd.cpp
字號:
}
void CTransparentWnd::OnPaint()
{
CPaintDC dc(this);
}
void CTransparentWnd::OnTimer(UINT nIDEvent)
{
POINT point;
CRect rcW;
GetWindowRect(rcW);
switch(nIDEvent)
{
case(1)://judge
DoSet();
break;
case(2)://walk
if(m_iAniSeq%24) //奔跑還是靜止播放聲音
DoWalk();
else if(m_iAniSeq%59) //播放情話
{
bWavPlay=!bWavPlay;
Reset();
}
break;
case(3):
bDragDrop=true; //寵物拖動標志為真
::GetCursorPos(&point); //實現拖動時窗體跟著移動
MoveWindow(point.x-CurPoint.x ,point.y-CurPoint.y ,rcW.Width(),rcW.Height() ,true);
break;
default:
break;
}
m_iAniSeq++; //圖像循環顯示變量增加及復位
if(m_iAniSeq>60) m_iAniSeq=0;
CWnd::OnTimer(nIDEvent);
}
void CTransparentWnd::OnDestroy()
{
CWnd::OnDestroy();
}
//關閉程序對話框
void CTransparentWnd::OnRButtonDown(UINT nFlags, CPoint point)
{
CWnd::OnRButtonDown(nFlags, point);
// CScrGeniusDlg dlg;
// if(IDOK!=dlg.DoModal())
// DestroyWindow();
//添加右擊時彈出快捷菜單
/* CMenu menu;
menu.LoadMenu(IDR_POPUP);
CMenu* pSubMenu = menu.GetSubMenu(0);
// Make first menu item the default (bold font)
::SetMenuDefaultItem(pSubMenu->m_hMenu, 0, TRUE);
//Display and track the popup menu
CPoint pos;
GetCursorPos(&pos);
// ::SetForegroundWindow(::FindWindow(NULL,"窈窕淑女,君子好求!"));
::TrackPopupMenu(pSubMenu->m_hMenu, 0, pos.x, pos.y, 0, ::FindWindow(NULL,"窈窕淑女,君子好求!"), NULL);
*/
//添加右鍵快捷圖標菜單(用于下拉式菜單)
popmenu.LoadMenu(IDR_POPUP);
popmenu.ModifyODMenu(NULL,IDR_EJECT,IDB_EJECT);
if(bMute)
popmenu.ModifyODMenu(NULL, IDR_MUTE,IDB_CHECKED);
else
popmenu.ModifyODMenu(NULL, IDR_MUTE,IDB_CHECK);
popmenu.ModifyODMenu(NULL, IDR_CUSTOMWAVFILE,IDB_CUSTOM);
popmenu.ModifyODMenu(NULL, IDR_GETIP,IDB_GETIP);
popmenu.ModifyODMenu(NULL, IDR_HELP,IDB_HELP);
popmenu.ModifyODMenu(NULL, IDR_BIG2GB,IDB_BIG2GB);
popmenu.ModifyODMenu(NULL, IDR_BMP2TXT,IDB_BMP2TXT);
popmenu.ModifyODMenu(NULL,IDR_EXIT,IDB_EXIT);
popmenu.ModifyODMenu(NULL,IDR_REGISTER,IDB_REGISTER);
popmenu.ModifyODMenu(NULL,IDR_SHUTDOWN,IDB_SHUTDOWN);
popmenu.ModifyODMenu(NULL,IDR_HIDEINBMP,IDB_HIDEINBMP);
popmenu.ModifyODMenu(NULL,IDR_SHOW,IDB_SHOW);
popmenu.ModifyODMenu(NULL,IDR_REGOCX,IDB_REGOCX);
popmenu.ModifyODMenu(NULL,IDR_EDSTAR,IDB_EDSTAR);
//用原郵件發送ID號,換為文件分割圖標
popmenu.ModifyODMenu(NULL,ID_FILE_SEND_MAIL,IDB_FILESPLIT);
//SK modified for Unicode
// popmenu.LoadToolbar(IDR_TOOLBAR);
ClientToScreen(&point);
BCMenu *psub = (BCMenu *)popmenu.GetSubMenu(0);
psub->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);
popmenu.DestroyMenu();
}
void CTransparentWnd::OnMoving(UINT fwSide, LPRECT pRect)
{
CWnd::OnMoving(fwSide, pRect);
}
void CTransparentWnd::OnLButtonUp(UINT nFlags, CPoint point)
{
bDragDrop=false; //寵物拖動標志為假
ReleaseCapture();
KillTimer(3); //關閉拖動時的圖像顯示記數器3
// SetCursor(LoadCursor(NULL, IDC_ARROW)); //恢復鼠標正常顯示
CWnd::OnLButtonUp(nFlags, point);
}
LRESULT CTransparentWnd::OnTrayNotification(WPARAM wParam, LPARAM lParam)
{
//刪除系統區創建的圖標映射涵數
return m_TrayIcon.OnTrayNotification(wParam, lParam);
}
//獲取寵物是否顯示的標志位
bool CTransparentWnd::GetShowPetFlag ()
{
bool bShowFlag=true;
if(!bShow)
bShowFlag=bShow;
return bShowFlag;
}
//顯示或隱藏寵物
void CTransparentWnd::OnShow()
{
pFrame=AfxGetApp()->GetMainWnd();
if(!bShow) //是否進行窗體動畫,窗體已顯示則不進行
{
WinAnimation(false); //窗體動畫從系統區滑出
pFrame->ShowWindow(SW_SHOW);
}
else //是否進行窗體動畫,窗體已隱藏則不進行
{
pFrame->ShowWindow(SW_HIDE);
WinAnimation(true); //窗體動畫滑入到系統區中
}
bShow=!bShow; //顯示隱藏標志位取反
}
//WINDOWS NT/98下安全關機或注銷的調用涵數
void CTransparentWnd::WinShutdown(UINT ShutdownFlag)
{
OSVERSIONINFO oi;
oi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&oi);
//如果是NT/2000下需先設置相關權限
if (oi.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
HANDLE handle;
TOKEN_PRIVILEGES tkp;
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &handle);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(handle, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
}
//WIN98下關機或注銷時可直接調用下面涵數既可
::ExitWindowsEx(ShutdownFlag,0);
}
//注銷當前用戶
void CTransparentWnd::OnRegister()
{
// if(MessageBox("您是否真的要注銷當前用戶?","用戶注銷",
// MB_ICONWARNING | MB_OKCANCEL | MB_DEFBUTTON2)==IDOK)
// {
WinShutdown(EWX_LOGOFF);
CTransparentWnd::DestroyWindow();
// }
}
//關閉計算機
void CTransparentWnd::OnShutdown()
{
// if(MessageBox("您是否真的要關閉計算機?","關閉系統",
// MB_ICONWARNING | MB_OKCANCEL | MB_DEFBUTTON2)==IDOK)
// WinShutdown(EWX_SHUTDOWN);
CSetTimeShutdown dlg;
//此對話框只顯示一次
if( !FindWindow(NULL,"定時關機"))
dlg.DoModal();
else
::ShowWindow (::FindWindow(NULL,"定時關機"),SW_SHOW);
}
//彈出或關閉CD-ROM
void CTransparentWnd::OnEject()
{
if(bEject)
{
if(mciSendString("set cdaudio door open",NULL,0,NULL)!=0)
MessageBox("彈出CD-ROM出錯!");
}
else
{
if(mciSendString("set cdaudio door closed",NULL,0,NULL)!=0)
MessageBox("關閉CD-ROM出錯");
}
bEject=!bEject;
}
//關閉程序對話框
void CTransparentWnd::OnExit()
{
CScrGeniusDlg dlg;
//只顯示一次關閉對話框
if( !FindWindow(NULL,"愿天下有情人終成眷屬 -- 未來工作室(Future Studio)"))
if(IDOK!=dlg.DoModal())
DestroyWindow();
}
//原為郵件發送功能,現改為打開文件分割與合并對話框
void CTransparentWnd::OnFileSendMail()
{
// CHyperLink m_Mail;
// m_Mail.GotoURL(_T("mailto:jz_x@china.com"), SW_SHOW);
CFileSplit dlg;
//此對話框只顯示一次
if( !FindWindow(NULL,"文件分割器"))
dlg.DoModal();
}
//獲取靜音情話的標志位
bool CTransparentWnd::GetMuteFlag ()
{
bool bMuteFlag=false;
if(bMute)
bMuteFlag=bMute;
return bMuteFlag;
}
//關閉或打開情話播放
void CTransparentWnd::OnMute()
{
bMute=!bMute; //情話靜音標志取反
if(bMute)
{
if(bWavPlay)
//關閉原情話播放一
PlaySound("IDR_WAVE1",AfxGetResourceHandle(),SND_RESOURCE|SND_PURGE|SND_NODEFAULT );
else
//先關閉原情話播放二
PlaySound("IDR_WAVE2",AfxGetResourceHandle(),SND_RESOURCE|SND_PURGE|SND_NODEFAULT );
SetTimer(2,600,NULL);
}
}
void CTransparentWnd::OnUpdateMute(CCmdUI* pCmdUI)
{
pCmdUI->SetCheck (bMute);
}
//竊取星號密碼對話框
void CTransparentWnd::OnGetip()
{
GetIP dlg;
//此對話框只顯示一次
if( !FindWindow(NULL,"竊取星號密碼"))
dlg.DoModal();
}
//位圖轉換為文本對話框
void CTransparentWnd::OnBmp2txt()
{
CBMP2TXT dlg;
//此對話框只顯示一次
if( !FindWindow(NULL,"位圖轉換為文本"))
dlg.DoModal();
}
void CTransparentWnd::OnHelp()
{
CAbout dlg;
//此對話框只顯示一次
if( !FindWindow(NULL,"幫助"))
dlg.DoModal();
}
//在顯示窗體動畫效果前,先尋找系統區位置
BOOL CALLBACK FindTrayWnd(HWND hwnd, LPARAM lParam)
{
TCHAR szClassName[256];
GetClassName(hwnd, szClassName, 255);
// 比較窗口類名
if (_tcscmp(szClassName, _T("TrayNotifyWnd")) == 0)
{
CRect *pRect = (CRect*) lParam;
::GetWindowRect(hwnd, pRect);
return TRUE;
}
// 當找到時鐘窗口時表示可以結束了
if (_tcscmp(szClassName, _T("TrayClockWClass")) == 0)
{
CRect *pRect = (CRect*) lParam;
CRect rectClock;
::GetWindowRect(hwnd, rectClock);
pRect->right = rectClock.left;
return FALSE;
}
return TRUE;
}
//顯示窗口動畫效果的涵數
void CTransparentWnd::WinAnimation(bool ShowFlag)
{
CRect rect(0,0,0,0);
// 查找托盤窗口
CWnd* pWnd = FindWindow("Shell_TrayWnd", NULL);
if (pWnd)
{
pWnd->GetWindowRect(rect);
EnumChildWindows(pWnd->m_hWnd, FindTrayWnd, (LPARAM)&rect);
//rect 為托盤區矩形
CRect rcWnd;
GetWindowRect(rcWnd);
if(ShowFlag) //窗體滑向系統區
DrawAnimatedRects(GetSafeHwnd(),IDANI_CAPTION,rcWnd,rect);
else //窗體從系統區滑出
DrawAnimatedRects(GetSafeHwnd(),IDANI_CAPTION,rect,rcWnd);
}
}
void CTransparentWnd::OnCustomwavfile()
{
CCustomWavFile dlg;
//此對話框只顯示一次
if( !FindWindow(NULL,"定制自我情話"))
dlg.DoModal();
}
void CTransparentWnd::OnBig2gb()
{
Big2GB dlg;
//此對話框只顯示一次
if( !FindWindow(NULL,"兩岸通--簡繁字體互轉"))
dlg.DoModal();
}
void CTransparentWnd::OnHideinbmp()
{
HideInBMP dlg;
//此對話框只顯示一次
if( !FindWindow(NULL,"將文件隱藏到位圖中"))
dlg.DoModal();
}
void CTransparentWnd::OnMouseMove(UINT nFlags, CPoint point)
{
CWnd::OnMouseMove(nFlags, point);
}
void CTransparentWnd::OnShowWindow(BOOL bShow, UINT nStatus)
{
CWnd::OnShowWindow(bShow, nStatus);
CRect rc0; //對話框動畫顯示效果
AnimEffect anim0;
GetWindowRect(rc0);
anim0.Open (rc0); //顯示對話框動態打開動畫效果
}
//文件加解密對話框
void CTransparentWnd::OnEdstar()
{
CEDStar dlg;
//此對話框只顯示一次
if( !FindWindow(NULL,"加密之星袖珍版"))
dlg.DoModal();
}
//控件注冊器對話框
void CTransparentWnd::OnRegocx()
{
CRegOCX dlg;
//此對話框只顯示一次
if( !FindWindow(NULL,"控件注冊器"))
dlg.DoModal();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -