📄 ontcdlg.cpp
字号:
// inf=m_dir+"\\OnTime.exe";
char inf[80];
GetModuleFileName(NULL,inf,80);//取得本应用程序的路径
::RegSetValueEx(key,"OnTC",0L,REG_SZ,(CONST BYTE *)inf,1);
RegWrite();
}
void COnTCDlg::OnSet()
{
m_set_flag=TRUE;
CSetDlg dlg;
{
dlg.m_default.Format("%d",m_data[0]-32);
dlg.m_late.Format("%d",m_data[1]-32);
dlg.m_min=m_data[2]-32;
dlg.m_mode=m_data[3]-32;
dlg.m_record=m_data[4]-32;
}
if(dlg.DoModal()==IDOK)
{
HKEY key=HKEY_LOCAL_MACHINE;
// LPCTSTR inf;
::RegOpenKeyEx(key,"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0L,KEY_ALL_ACCESS, &key);
m_data[0]=atoi(dlg.m_default)+32;
m_data[1]=atoi(dlg.m_late)+32;
m_data[2]=dlg.m_min+32;
m_data[3]=dlg.m_mode+32;
m_data[4]=dlg.m_record+32;
if(dlg.m_record)
{
// inf=m_dir+"\\OnTime.exe";
char inf[80];
GetModuleFileName(NULL,inf,80);//取得本应用程序的路径
::RegSetValueEx(key,"OnTC",0L,REG_SZ,(CONST BYTE *)inf,1);
}
else
::RegDeleteValue(key, "OnTC");
::RegCloseKey(key);
}
dlg.KillTimer(3);
m_set_flag=FALSE;
}
void COnTCDlg::OnCancel()
{
// TODO: Add extra cleanup here
m_data[4]=32;
m_data[2]=32;
RegWrite();
HKEY key=HKEY_LOCAL_MACHINE;
::RegOpenKeyEx(key,"Software\\Microsoft\\Windows\\CurrentVersion\\Run", 0L,KEY_ALL_ACCESS, &key);
::RegDeleteValue(key, "OnTC");
::RegCloseKey(key);
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = AfxGetApp()->m_pMainWnd->m_hWnd;
tnid.uID = IDR_MAINFRAME;
Shell_NotifyIcon(NIM_DELETE,&tnid);
CDialog::OnCancel();
}
void COnTCDlg::Close()
{
KillTimer(1);
CCloseDlg dlg;
dlg.DoModal();
OnCancel();
}
BOOL COnTCDlg::RegRead()//成功则返回0,否则返回非0值
{
HKEY key=HKEY_USERS;
DWORD dwDest;
DWORD dwSize = sizeof (DWORD);
DWORD dwType;
int flag=(::RegOpenKeyEx(key,".DEFAULT\\Software\\OnTC", 0L,KEY_ALL_ACCESS, &key));
if(flag==0)
{
::RegQueryValueEx (key, "default", NULL,&dwType, (BYTE *) &dwDest, &dwSize);
m_data[0] = (int)dwDest+32;
::RegQueryValueEx (key, "late", NULL,&dwType, (BYTE *) &dwDest, &dwSize);
m_data[1] = (int)dwDest+32;
::RegQueryValueEx (key, "min", NULL,&dwType, (BYTE *) &dwDest, &dwSize);
m_data[2] = (int)dwDest+32;
::RegQueryValueEx (key, "mode", NULL,&dwType, (BYTE *) &dwDest, &dwSize);
m_data[3] = (int)dwDest+32;
::RegQueryValueEx (key, "record", NULL,&dwType, (BYTE *) &dwDest, &dwSize);
m_data[4] = (int)dwDest+32;
::RegQueryValueEx (key, "hour", NULL,&dwType, (BYTE *) &dwDest, &dwSize);
m_data[5] = (int)dwDest+32;
::RegQueryValueEx (key, "minute", NULL,&dwType, (BYTE *) &dwDest, &dwSize);
m_data[6] = (int)dwDest+32;
}
::RegCloseKey(key);
return flag;
}
void COnTCDlg::RegWrite()
{
HKEY key=HKEY_USERS;
DWORD dwValue;
::RegOpenKeyEx(key,".DEFAULT\\Software\\OnTC", 0L,KEY_ALL_ACCESS, &key);
dwValue=(DWORD)m_data[0]-32;
::RegSetValueEx(key,"default",0L,REG_DWORD,(CONST BYTE*) &dwValue, sizeof(DWORD));
dwValue=(DWORD)m_data[1]-32;
::RegSetValueEx(key,"late",0L,REG_DWORD,(CONST BYTE*) &dwValue, sizeof(DWORD));
dwValue=(DWORD)m_data[2]-32;
::RegSetValueEx(key,"min",0L,REG_DWORD,(CONST BYTE*) &dwValue, sizeof(DWORD));
dwValue=(DWORD)m_data[3]-32;
::RegSetValueEx(key,"mode",0L,REG_DWORD,(CONST BYTE*) &dwValue, sizeof(DWORD));
dwValue=(DWORD)m_data[4]-32;
::RegSetValueEx(key,"record",0L,REG_DWORD,(CONST BYTE*) &dwValue, sizeof(DWORD));
dwValue=(DWORD)m_data[5]-32;
::RegSetValueEx(key,"hour",0L,REG_DWORD,(CONST BYTE*) &dwValue, sizeof(DWORD));
dwValue=(DWORD)m_data[6]-32;
::RegSetValueEx(key,"minute",0L,REG_DWORD,(CONST BYTE*) &dwValue, sizeof(DWORD));
LPCTSTR inf=m_alert;
::RegSetValueEx(key,"string",0L,REG_SZ,(CONST BYTE *)inf,1);
::RegCloseKey(key);
}
void COnTCDlg::OnDatetimechangeDatetimepicker(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(TRUE);
m_data[5]=m_close_time.GetHour()+32;
m_data[6]=m_close_time.GetMinute()+32;
m_rem.Format("%d",(m_close_time.GetTime()-m_now)/60+1);
RegWrite();
UpdateData(FALSE);
*pResult = 0;
}
void COnTCDlg::OnTimer(UINT nIDEvent)
{
CString OwnWinText;GetWindowText(OwnWinText);
CWnd *p=GetForegroundWindow();
if(p)
p->GetWindowText(m_WindowText);
else
m_WindowText=OwnWinText;
if(m_WindowText.Compare(OwnWinText))
{
if(m_hidetime++>5)
OnHide();
}
else m_hidetime=0;
/////////////////////////////////////////
time(&m_now);m_ctime=m_now;
m_static_time=m_ctime.Format("%c");
m_rem.Format("%d",(m_close_time.GetTime()-m_now+59)/60);
UpdateData(FALSE);
if(atoi(m_rem)<=0)
OnClose();
CDialog::OnTimer(nIDEvent);
}
void COnTCDlg::OnMenuSet()
{
m_barter_flag=TRUE;
CBarterDlg dlg;
if(m_lock&&!IsWindowVisible())
{
if(dlg.DoModal()==IDOK)
OnSet();
}
else
OnSet();
m_barter_flag=FALSE;
}
void COnTCDlg::OnMyicon(WPARAM wParam, LPARAM lParam)
{
UINT uMouseMsg;
uMouseMsg = (UINT) lParam;
if(!m_lock)
if(uMouseMsg == WM_LBUTTONDOWN)
{
if(IsWindowVisible())
{
ShowWindow(SW_HIDE);
}
else
{
ShowWindow(SW_SHOW);
}
}
/////////////////////////////////////
if(uMouseMsg == WM_LBUTTONDBLCLK)
m_lock=TRUE;
/////////////////////////////////////
if(uMouseMsg == WM_RBUTTONUP)
{
CMenu menu;
menu.CreatePopupMenu();
if(m_lock)
menu.AppendMenu(MF_STRING,IDM_LOCK,"任务栏解锁");
else
menu.AppendMenu(MF_STRING,IDM_LOCK,"任务栏上锁");
menu.AppendMenu(MF_STRING,IDM_BARTER,"修改密码");
menu.AppendMenu(MF_STRING,IDM_SET,"程序设置");
if(IsWindowVisible())
menu.AppendMenu(MF_STRING,IDC_HIDE,"隐藏窗口");
else
menu.AppendMenu(MF_STRING,IDM_SHOW,"显示窗口");
menu.AppendMenu(MF_STRING,IDM_OTHER_EXIT,"退出程序");
/////////////
if(m_otherexit_flag)
menu.EnableMenuItem(IDM_OTHER_EXIT,MF_GRAYED);
else
menu.EnableMenuItem(IDM_OTHER_EXIT,MF_ENABLED);
if(m_lock_flag)
menu.EnableMenuItem(IDM_LOCK,MF_GRAYED);
else
menu.EnableMenuItem(IDM_LOCK,MF_ENABLED);
if(m_barter_flag)
menu.EnableMenuItem(IDM_BARTER,MF_GRAYED);
else
menu.EnableMenuItem(IDM_BARTER,MF_ENABLED);
if(m_set_flag)
menu.EnableMenuItem(IDM_SET,MF_GRAYED);
else
menu.EnableMenuItem(IDM_SET,MF_ENABLED);
if(!m_barter_flag) menu.TrackPopupMenu(TPM_LEFTALIGN,740,580,this);
}
/////////////////////////ADD
///////////////////////////END
NOTIFYICONDATA tnid;
tnid.cbSize = sizeof(NOTIFYICONDATA);
tnid.hWnd = AfxGetApp()->m_pMainWnd->m_hWnd;
tnid.uID = IDR_MAINFRAME;
tnid.uFlags = NIF_ICON | NIF_TIP | NIF_MESSAGE;
tnid.uCallbackMessage = MYICON;
tnid.hIcon = m_hIcon;
CString iconstr,mode;
if(m_data[3]-32)mode="立即关机";
else mode="弹出对话框";
iconstr.Format("%s分后(%d:%d)%s\"%s\"",m_rem,m_close_time.GetHour(),m_close_time.GetMinute(),mode,m_alert);
lstrcpyn(tnid.szTip, iconstr, sizeof(tnid.szTip));
Shell_NotifyIcon(NIM_MODIFY,&tnid);
}
void COnTCDlg::OnLock()
{
m_barter_flag=TRUE;
if(m_lock)
{
CBarterDlg dlg;
if(dlg.DoModal()==IDOK)
m_lock=0;
}
else
m_lock=1;
m_barter_flag=FALSE;
}
void COnTCDlg::OnShow()
{
m_barter_flag=TRUE;
CBarterDlg dlg;
if(m_lock)
{
if(dlg.DoModal()==IDOK)
ShowWindow(SW_SHOW);
}
else
ShowWindow(SW_SHOW);
m_barter_flag=FALSE;
}
void COnTCDlg::OnOtherExit()
{
m_barter_flag=TRUE;
if(m_lock&&!IsWindowVisible())
{
if(MessageBox("任务栏处于锁定状态,最好不要退出!\n\n\t真的要退出吗?","退出提问",MB_OKCANCEL|MB_ICONWARNING)==IDOK)
{
CBarterDlg dlg;
if(dlg.DoModal()==IDOK)
OnCancel();
}
}
else
OnCancel();
m_barter_flag=FALSE;
}
void COnTCDlg::OnBarter()
{
m_barter_flag=TRUE;
CChangeBarterDlg dlg;
if(dlg.DoModal()==IDOK)
MessageBox("密码被成功地修改了,请记住新密码!","密码修改成功",MB_OK|MB_ICONASTERISK);
else
MessageBox("密码修改失败","密码修改失败",MB_OK|MB_ICONASTERISK);
m_barter_flag=FALSE;
}
void CAboutDlg::OnStaticEmail()
{
ShellExecute(NULL, "open","mailto:Gaotc@ah163.com",
NULL,NULL,SW_SHOWDEFAULT);
}
BOOL CAboutDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
// TODO: Add your message handler code here and/or call default
if(pWnd->GetDlgCtrlID()==IDC_STATIC_EMAIL)
{
SetCursor(AfxGetApp()->LoadCursor(IDC_HAND));
return TRUE;
}
else
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}
void COnTCDlg::OnEndSession(BOOL bEnding)
{
if(MessageBox("现在你不能关闭计算机,如果强行关机可能导致系统崩溃!\n\n真的要关机吗?","关机警告",MB_OKCANCEL|MB_ICONWARNING)==IDOK)
((COnTCApp *)AfxGetApp())->m_pMainWnd->SendMessage(WM_CLOSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -