📄 pagedlg.cpp
字号:
if(m_page2.m_check_bPlaySound)
{
AfxBeginThread(sndThread,this); //利用多线程播放音乐
m_page2.m_check_bPlaySound=false;
}
if(m_page2.m_check_bSoundTime) // 报时
{
m_page2.m_SoundTime.SoundTime();
m_page2.m_check_bSoundTime=false;
}
if(m_page2.m_check_bBeep)
{
AfxBeginThread(beepThread,this);
m_page2.m_check_bBeep=false; //利用多线程播放闹铃
}
if(m_page2.m_check_bRunApp)
{
ShellExecute(
NULL, //父窗口句柄
"open", //操作
m_page2.m_edit_appPath,
NULL, //程序参数
"", //默认目录
SW_SHOWNORMAL); //Win32 nShowCmd
m_page2.m_check_bRunApp=false;
}
if(m_page2.m_check_bShutdown) //到时是否关机
{
if(this->GetOSVersion()=="Win2000") //保证在Win2000 WinXp中才调用
{
static HANDLE hToken; //为了能在WinNT/2K下实现关机功能
static TOKEN_PRIVILEGES tp;
static LUID luid;
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);
LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&luid);
tp.PrivilegeCount =1;
tp.Privileges [0].Luid =luid;
tp.Privileges [0].Attributes =SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(TOKEN_PRIVILEGES),NULL, NULL);
ExitWindowsEx(EWX_SHUTDOWN,0); //关机
m_page2.m_check_bShutdown=false;
}
else
{
ExitWindowsEx(EWX_SHUTDOWN,0); //关机
m_page2.m_check_bShutdown=false;
}
}
if(m_page2.m_check_bLock) //是否锁定计算机
{
m_page2.m_check_bLock=false;
if(this->GetOSVersion()=="Win2000")
{ HINSTANCE hinst=::LoadLibrary("user32.dll");
typedef BOOL (*FUN)(VOID);
FUN fun=(FUN)::GetProcAddress(hinst,"LockWorkStation");
fun();
}
else {CLockDlg ddd; ddd.DoModal(); }
}
if(m_page2.m_check_bPopup) //到时是否弹出窗口
{
if(!IsWindowVisible())
ShowWindow(SW_SHOWNORMAL);
}
if(m_page2.m_check_bScreenSave)
{
SendMessage(WM_SYSCOMMAND,SC_SCREENSAVE,0);
m_page2.m_check_bScreenSave=false;
}
CTimeSpan t=m_now - m_page2.m_set;
if(t.GetSeconds() <= 10) //时间到了之后的10秒中内,闪烁标题和任务栏图标
{
if(m_bIconModify) //实现任务栏图标的闪烁
{
TaskBarModifyIcon(GetSafeHwnd(),100,NULL,_T("你设置的时间到了!"));
m_bIconModify=false;
}
else
{
TaskBarModifyIcon(GetSafeHwnd(),100,AfxGetApp()->LoadIcon(IDI_ICON1),_T("你设置的时间到了!"));
m_bIconModify=true;
}
FlashWindow(true); //实现标题栏图标的闪烁
m_page1.SetDlgItemText(IDC_STATE,"时间到了!");
}
else //10秒中之后,停止闪烁,并且将程序设置成为设置闹钟的状态,以便重新开始新的设定
{
TaskBarModifyIcon(GetSafeHwnd(),100,AfxGetApp()->LoadIcon(IDI_ICON1),_T("闹钟--你未进行闹钟设置!"));
//停止任务栏的图标闪烁
FlashWindow(false); //停止标题栏的闪烁
m_page2.m_bHadSet=false; //设置成未设置时间的状态
m_page1.SetDlgItemText(IDC_EDIT2_TIMESET,""); //清空设定的时间
m_page1.SetDlgItemText(IDC_STATE,"欢迎使用!");
}
}//if(m_now >= m_page2.m_set)
}//if(m_page2.m_bHadSet)
}//if(nIDEvent==1)
CDialog::OnTimer(nIDEvent);
}
BOOL CPageDlg::TaskBarAddIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip)
{
NOTIFYICONDATA d;
d.cbSize=sizeof(NOTIFYICONDATA);
d.hWnd=hwnd;
d.uID=uID;
d.uFlags=NIF_ICON | NIF_TIP | NIF_MESSAGE;
d.uCallbackMessage=MYWM_NOTIFYICON;
d.hIcon=hicon;
if(lpszTip)
lstrcpy(d.szTip,lpszTip);
else
d.szTip[0]='\0';
return Shell_NotifyIcon(NIM_ADD,&d);
}
BOOL CPageDlg::TaskBarDeleteIcon(HWND hwnd, UINT uID)
{
NOTIFYICONDATA d;
d.cbSize=sizeof(NOTIFYICONDATA);
d.hWnd=hwnd;
d.uID=uID;
return Shell_NotifyIcon(NIM_DELETE,&d);
}
BOOL CPageDlg::TaskBarModifyIcon(HWND hwnd, UINT uID, HICON hicon, LPSTR lpszTip)
{
NOTIFYICONDATA d;
d.cbSize=sizeof(NOTIFYICONDATA);
d.hWnd=hwnd;
d.uID=uID;
d.uFlags=NIF_ICON | NIF_TIP | NIF_MESSAGE;
d.uCallbackMessage=MYWM_NOTIFYICON;
d.hIcon=hicon;
if(lpszTip)
lstrcpy(d.szTip,lpszTip);
else
d.szTip[0]='\0';
return Shell_NotifyIcon(NIM_MODIFY,&d);
}
LRESULT CPageDlg::OnHotKey(WPARAM wp,LPARAM lp)
{
if(wp==m_hotkey_show )
{
if(!IsWindowVisible())
{
AfxBeginThread(ButtonSndThread,this);
ShowWindow(SW_SHOWNORMAL);
}
else
{
AfxBeginThread(ButtonSndThread,this);
ShowWindow(SW_HIDE);
}
}
if(wp==m_hotkey_exit)
OnCancel();
if(wp==m_hotkey_SoundTime)
m_page2.m_SoundTime.SoundTime();
if(wp==107)
{
if(m_bHasTanchu)
{
mciSendString("set cdaudio door closed",NULL,NULL,0);
m_bHasTanchu=false;
m_page3.GetDlgItem(IDC_TANCHU)->EnableWindow(true);
m_page3.GetDlgItem(IDC_GUANBI)->EnableWindow(false);
}
else
{
mciSendString("set cdaudio door open",NULL,NULL,0);
m_bHasTanchu=true;
m_page3.GetDlgItem(IDC_TANCHU)->EnableWindow(false);
m_page3.GetDlgItem(IDC_GUANBI)->EnableWindow(true);
}
// MessageBox("fdsalkfjasjfja");
}
return 0;
}
void CPageDlg::OnMyIconNotify(WPARAM wParam,LPARAM lParam)
{
UINT uMouseMsg=LOWORD(lParam);
switch(uMouseMsg)
{
case WM_LBUTTONDBLCLK:
ShowWindow(IsWindowVisible()? SW_HIDE:SW_SHOWNORMAL);
break;
case WM_RBUTTONDOWN:
{
CPoint point;
GetCursorPos(&point);
COfficeXPMenu menu;
menu.LoadMenu(IDR_MENU);
menu.SetType(TYPE_XP);
COfficeXPMenu *psub = (COfficeXPMenu *)menu.GetSubMenu(0); //获取第一个子菜单的指针
CRect rect;
GetWindowRect(rect);
this->SetForegroundWindow();
DWORD dwID =psub->TrackPopupMenu((TPM_LEFTALIGN|TPM_RIGHTBUTTON),point.x,point.y, this);
menu.DestroyMenu();
}
break;
}
}
CString CPageDlg::GetWeek()
{
CTime t=CTime::GetCurrentTime();
CString s;
switch(t.GetDayOfWeek())
{
case 1:
s=" 星期天";
break;
case 2:
s=" 星期一";
break;
case 3:
s=" 星期二";
break;
case 4:
s=" 星期三";
break;
case 5:
s=" 星期四";
break;
case 6:
s=" 星期五";
break;
case 7:
s=" 星期六";
break;
default:
break;
}
return s;
}
void CPageDlg::OnMenu3()
{
m_page3.OnGuanbi();
}
void CPageDlg::OnMenu2()
{
m_page3.OnTanchu();
}
void CPageDlg::OnMenu5()
{
if(m_page2.m_bHadSet)
{
if(IDYES==MessageBox("你已经设了闹铃,真的要退出吗?","闹钟",MB_YESNO| MB_DEFBUTTON2 | MB_ICONEXCLAMATION))
CDialog::OnOK();
}
else
if(IDYES==MessageBox("真的要退出吗?","闹钟",MB_YESNO| MB_DEFBUTTON2 | MB_ICONQUESTION))
CDialog::OnOK();
}
void CPageDlg::OnMenu4()
{
if(!IsWindowVisible())
this->ShowWindow(SW_SHOWNORMAL);
this->ActivatePage(4);
}
void CPageDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
GetDlgItem(IDC_STATIC_HIDE)->GetWindowRect(m_rect_hide);
GetDlgItem(IDC_STATIC_EXIT)->GetWindowRect(m_rect_exit);
ScreenToClient(&m_rect_hide);
ScreenToClient(&m_rect_exit);
if(m_rect_hide.PtInRect(point))
ShowWindow(SW_HIDE);
if(m_rect_exit.PtInRect(point))
this->OnCancel();
SendMessage(WM_NCLBUTTONDOWN,HTCAPTION,0);
CDialog::OnLButtonDown(nFlags, point);
}
BOOL CPageDlg::DestroyWindow()
{
KillTimer(1);
KillTimer(3);
this->SaveWindowPosition();
TaskBarDeleteIcon(GetSafeHwnd(),100); //删除任务栏的图标
UnregisterHotKey(m_hWnd,m_hotkey_exit); //删除快捷键资源
UnregisterHotKey(m_hWnd,m_hotkey_show);
UnregisterHotKey(m_hWnd,m_hotkey_SoundTime);
UnregisterHotKey(m_hWnd,107);
//DeleteFile("c:\\temp.swf");
if(m_pSmallDlg->IsWindowVisible())
{
m_pSmallDlg->DestroyWindow();
delete m_pSmallDlg;
}
m_pFlashClockDlg->DestroyWindow();
delete m_pFlashClockDlg;
m_pDateDlg->DestroyWindow();
delete m_pDateDlg;
return CDialog::DestroyWindow();
}
BOOL CPageDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message ==WM_KEYDOWN)
{
switch(pMsg->wParam )
{
case VK_ESCAPE:
ShowWindow(SW_HIDE);
return true;
break;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
void CPageDlg::OnViewdate()
{
m_pDateDlg->SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
m_pDateDlg->ShowWindow(SW_SHOW);
}
void CPageDlg::OnFlashClock()
{
m_pFlashClockDlg->SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE);
m_pFlashClockDlg->ShowWindow(SW_SHOW);
}
CString CPageDlg::GetOSVersion() //获取操作系统的版本
{
OSVERSIONINFOEX os;
::ZeroMemory(&os,sizeof(os));
os.dwOSVersionInfoSize=sizeof(os);
::GetVersionEx(reinterpret_cast<LPOSVERSIONINFO>(&os));
if(os.dwPlatformId==VER_PLATFORM_WIN32_NT && os.dwMajorVersion >=5)
return "Win2000"; //win2000以上的版本
if(os.dwPlatformId ==VER_PLATFORM_WIN32_WINDOWS)
return "Win9x";
else
return "Other";
}
void CPageDlg::SaveWindowPosition() //保存窗体的位置信息
{
CRect rc;
GetWindowRect(&rc);
AfxGetApp()->WriteProfileInt("WinPos","x",rc.left);
AfxGetApp()->WriteProfileInt("WinPos","y",rc.top);
if(m_pSmallDlg->IsWindowVisible())
{
m_pSmallDlg->GetWindowRect(rc); //保存小对话框的位置
AfxGetApp()->WriteProfileInt("SmallDlgPos","x",rc.left);
AfxGetApp()->WriteProfileInt("SmallDlgPos","y",rc.top);
}
}
void CPageDlg::OnOK()
{
if(m_page2.IsWindowVisible()) //如果设置闹钟是见的(即此时正在设置闹钟,如果按下回车键就会掉用此函数)
{
m_page2.ReturnOK();
CString s=m_page2.m_set.Format("%I:%M:%S");
TaskBarModifyIcon(GetSafeHwnd(),100,NULL,(LPTSTR)(LPCTSTR)s);
}
}
void CPageDlg::OnCancel()
{
if(m_page2.m_bHadSet)
{
if(IDYES==MessageBox("你已经设了闹铃,真的要退出吗?","闹钟",MB_YESNO| MB_DEFBUTTON2 | MB_ICONQUESTION))
CDialog::OnOK();
else
return;
}
else
{
if(IDYES==MessageBox("真的要退出吗?","闹钟",MB_YESNO| MB_DEFBUTTON2 | MB_ICONQUESTION))
CDialog::OnOK();
}
}
void CPageDlg::ShowFlashClockDlg()
{
AfxBeginThread(ButtonSndThread,0);
GetWindowRect(&m_PageDlg_WindowRect);
if(!m_pFlashClockDlg->IsWindowVisible())
{
if(m_pDateDlg->IsWindowVisible())
m_pDateDlg->ShowWindow(SW_HIDE);
m_pFlashClockDlg->SetWindowPos(&CWnd::wndTopMost ,
m_PageDlg_WindowRect.right ,
m_PageDlg_WindowRect.top+37,
0,0,
SWP_NOSIZE);
/***************如果FlashClock对话框显示时右边出界就向右边靠齐****************************/
int cx=::GetSystemMetrics(SM_CXSCREEN);
if((m_PageDlg_WindowRect.right + m_FlashClockDlg_WindowRect.Width()) > cx)
m_pFlashClockDlg->SetWindowPos(&CWnd::wndTopMost ,
cx-m_FlashClockDlg_WindowRect.Width(),
m_PageDlg_WindowRect.top +37,
0,0,
SWP_NOSIZE);
/***************如果FlashClock对话框显示时右边出界就向右边靠齐****************************/
m_pFlashClockDlg->ShowWindow(SW_SHOWNORMAL);
}
else
m_pFlashClockDlg->ShowWindow(SW_HIDE);
}
void CPageDlg::ShowDateDlg()
{
GetWindowRect(&m_PageDlg_WindowRect);
AfxBeginThread(ButtonSndThread,0);
if(!m_pDateDlg->IsWindowVisible())
{
if(m_pFlashClockDlg->IsWindowVisible())
m_pFlashClockDlg->ShowWindow(SW_HIDE);
m_pDateDlg->SetWindowPos(&CWnd::wndTopMost ,
m_PageDlg_WindowRect.right ,
m_PageDlg_WindowRect.top+37,
0,0,
SWP_NOSIZE);
/***************如果DateDlg对话框显示时右边出界就向右边靠齐****************************/
int cx=::GetSystemMetrics(SM_CXSCREEN);
if((m_PageDlg_WindowRect.right + m_DateDlg_WindowRect.Width()) > cx)
m_pDateDlg->SetWindowPos(&CWnd::wndTopMost ,
cx-m_DateDlg_WindowRect.Width(),
m_PageDlg_WindowRect.top +37,
0,0,
SWP_NOSIZE);
/***************如果DateDlg对话框显示时右边出界就向右边靠齐****************************/
m_pDateDlg->ShowWindow(SW_SHOWNORMAL);
}
else
{
m_pDateDlg->ShowWindow(SW_HIDE);
}
}
void CPageDlg::OnMouseMove(UINT nFlags, CPoint point)
{
GetDlgItem(IDC_STATIC_HIDE)->GetWindowRect(m_rect_hide);
GetDlgItem(IDC_STATIC_EXIT)->GetWindowRect(m_rect_exit);
ScreenToClient(&m_rect_hide);
ScreenToClient(&m_rect_exit);
CBitmap bmp;
if(m_rect_exit.PtInRect(point))
{
bmp.LoadBitmap(IDB_EXIT2);
m_exit.SetBitmap(bmp);
}
else
{
bmp.LoadBitmap(IDB_EXIT1);
m_exit.SetBitmap(bmp);
}
if(m_rect_hide.PtInRect(point))
{
bmp.LoadBitmap(IDB_HIDE2);
m_hide.SetBitmap(bmp);
}
else
{
bmp.LoadBitmap(IDB_HIDE1);
m_hide.SetBitmap(bmp);
}
CDialog::OnMouseMove(nFlags, point);
}
void CPageDlg::OnScreencolor()
{
WinExec("ScreenColor\\ScreenColor.exe",SW_SHOWNORMAL);
}
void CPageDlg::OnShowmain()
{
ShowWindow(IsWindowVisible()? SW_HIDE:SW_SHOWNORMAL);
}
void CPageDlg::OnShowsmall()
{
if(!m_pSmallDlg->IsWindowVisible())
{
m_pSmallDlg->SetWindowPos(&CWnd::wndTopMost,
AfxGetApp()->GetProfileInt("SmallDlgPos","x",75),
AfxGetApp()->GetProfileInt("SmallDlgPos","y",-25),
0,0,SWP_NOSIZE);
m_pSmallDlg->ShowWindow(SW_SHOWNORMAL);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -