⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pagedlg.cpp

📁 C语言课程设计案例精编
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				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 + -