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

📄 mypropertysheet.cpp

📁 mytoolpad 源码
💻 CPP
字号:
#include "stdafx.h"
#include "resource.h"
#include "mmsystem.h"
#include "MyPropertySheet.h"
#include "io.h"


#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif


CMyPropertySheet *m_sheet=NULL;

IMPLEMENT_DYNAMIC(CMyPropertySheet, CPropertySheet)


CMyPropertySheet::CMyPropertySheet(CWnd* pWndParent)
	 : CPropertySheet(IDS_PROPSHT_CAPTION, pWndParent)
{
	m_sheet=this;
	CPropertyPage *m_pages[7];
	AllocPages();
	m_pages[0]=m_Page1;
	m_pages[1]=m_Page7;
	m_pages[2]=m_Page8;
	m_pages[3]=m_Page4;
	m_pages[4]=m_Page2;
	m_pages[5]=m_Page3;
	m_pages[6]=m_Page5;
	for(int i=0;i<7;i++)
	{
		int m_index=m_playorder[i]-'1';
		if(m_playenable[i]=='2')
			AddPage(m_pages[m_index]);
	}

	AddPage(&m_Page9);
	m_curpage=AfxGetApp()->GetProfileInt("系统配置","当前页",0);
	SetActivePage(m_curpage);

	m_psh.dwFlags|=PSH_NOAPPLYNOW;
	m_psh.dwFlags&=(~PSH_HASHELP);

	m_hIcon = AfxGetApp()->LoadIcon(IDI_DEFRAG);
	m_ClearEmpty=AfxGetApp()->GetProfileInt("系统配置","清除空目录",FALSE);
	m_discout=FALSE;
	m_CanExit=FALSE;
	m_tasklist=NULL;
	ListFromFile("c:\\My Documents\\tasklist.dat");
}

void CMyPropertySheet::AllocPages()
{
	m_Page1=NULL;
	m_Page7=NULL;
	m_Page8=NULL;
	m_Page4=NULL;
	m_Page2=NULL;
	m_Page3=NULL;
	m_Page5=NULL;
	
	CString m_temp=AfxGetApp()->GetProfileString("系统配置","界面秩序","1234567");
	strcpy(m_playorder,m_temp);
	m_temp=AfxGetApp()->GetProfileString("系统配置","界面允许","2222222");
	strcpy(m_playenable,m_temp);

	for(int i=0;i<7;i++)
	{
		int m_index=m_playorder[i]-'1';
		if(m_playenable[i]=='2')
		{
			switch(m_index)
			{
			case 0:
				m_Page1=new CMyPropertyPage1;
				break;
			case 1:
				m_Page7=new CPropertyPage7;
				break;
			case 2:
				m_Page8=new CMyPropertyPage8;
				break;
			case 3:
				m_Page4=new CMyPropertyPage4;
				break;
			case 4:
				m_Page3=new CMyPropertyPage3;
				break;
			case 5:
				m_Page2=new CMyPropertyPage2;
				break;
			case 6:
				m_Page5=new CMyPropertyPage;
				break;
			}
		}
	}
}

CMyPropertySheet::~CMyPropertySheet()
{
	AfxGetApp()->WriteProfileInt("系统配置","清除空目录",m_ClearEmpty);
	AfxGetApp()->WriteProfileInt("系统配置","当前页",m_curpage);
	AfxGetApp()->WriteProfileString("系统配置","界面秩序",m_playorder);
	AfxGetApp()->WriteProfileString("系统配置","界面允许",m_playenable);
	ListToFile("c:\\My Documents\\tasklist.dat");
	ReleaseList();
}


BEGIN_MESSAGE_MAP(CMyPropertySheet, CPropertySheet)
	//{{AFX_MSG_MAP(CMyPropertySheet)
	ON_COMMAND(ID_CALENDAR, OnCalendar)
	ON_COMMAND(ID_DESKMANAGER, OnDeskmanager)
	ON_COMMAND(ID_HELPABOUT, OnHelpabout)
	ON_COMMAND(ID_RESOURCEMAMAGER, OnResourcemamager)
	ON_COMMAND(ID_SPEEDMODEM, OnSpeedmodem)
	ON_COMMAND(ID_STARTUP, OnStartup)
	ON_MESSAGE(WM_HOTKEY,OnHotKey)
	ON_COMMAND(ID_APP_EXIT, OnAppExit)
	ON_WM_SYSCOMMAND()
	ON_COMMAND(ID_THINGDISPOSE, OnThingdispose)
	ON_WM_TIMER()
	ON_COMMAND(ID_REJECTDISC, OnRejectdisc)
	ON_UPDATE_COMMAND_UI(ID_REJECTDISC, OnUpdateRejectdisc)
	ON_COMMAND(ID_SHUTDOWNPOWER, OnShutdownpower)
	ON_WM_PAINT()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()



BOOL CMyPropertySheet::OnInitDialog() 
{
	BOOL bResult=CPropertySheet::OnInitDialog();

	SetIcon(m_hIcon, TRUE);
	SetIcon(m_hIcon, FALSE);
	SetLogoFont("楷体",24,FW_BOLD,TRUE);

	CWnd *m_wnd=GetDlgItem(IDHELP);
	if(m_wnd!=NULL)
	{
		m_wnd->EnableWindow(FALSE);
		m_wnd->SetWindowText("联机帮助");
	}
	HWND hWnd=::GetDlgItem(m_hWnd,IDOK);
	if(hWnd!=NULL)
		::SetWindowText(hWnd,"退出系统");
	hWnd=::GetDlgItem(m_hWnd,IDCANCEL);
	if(hWnd!=NULL)
		::SetWindowText(hWnd,"隐藏窗口");

	AddTaskBarIcon();
	RegisterHotKey(GetSafeHwnd(),1000,MOD_WIN,0X41);
	RegisterHotKey(GetSafeHwnd(),1001,MOD_WIN,0X4F);
	RegisterHotKey(GetSafeHwnd(),1002,MOD_WIN,0X53);
	RegisterHotKey(GetSafeHwnd(),1003,MOD_WIN,0X58);
	RegisterHotKey(GetSafeHwnd(),1004,MOD_WIN,0X5A);
	m_showcmd=SW_HIDE;
	CenterWindow();
	SetTimer(100,100,NULL);
	SetTimer(200,200,NULL);

	return bResult;
}

void CMyPropertySheet::AddTaskBarIcon()
{  
	NOTIFYICONDATA nid;
	nid.cbSize=sizeof(NOTIFYICONDATA);
	nid.hWnd=GetSafeHwnd();
	nid.uID=0;
	nid.uFlags=NIF_MESSAGE;
	strcpy(nid.szTip,"柴银辉编的工具程序");
	nid.uCallbackMessage=WM_COMMAND;
	Shell_NotifyIcon(NIM_ADD,&nid);
	SetTaskBarIcon();
}

void CMyPropertySheet::DeleteTaskbarIcon()
{  
	NOTIFYICONDATA nid;
	nid.cbSize=sizeof(NOTIFYICONDATA);
	nid.hWnd=GetSafeHwnd();
	nid.uID=0;
	nid.uFlags=NULL;
	Shell_NotifyIcon(NIM_DELETE,&nid);
	SetTaskBarIcon();
}

void CMyPropertySheet::SetTaskBarIcon()
{
	NOTIFYICONDATA nid;
	nid.cbSize=sizeof(NOTIFYICONDATA);
	nid.hWnd=GetSafeHwnd();
	nid.uID=0;
	nid.uFlags=NIF_ICON|NIF_TIP;
	nid.hIcon=(HICON)LoadImage(AfxGetInstanceHandle(),
			MAKEINTRESOURCE(IDI_SHOUHUO),IMAGE_ICON,16,16,NULL);
	lstrcpy(nid.szTip,"柴银辉编的工具程序");
	Shell_NotifyIcon(NIM_MODIFY,&nid);
}


void CMyPropertySheet::OnSysCommand(UINT nID, LPARAM lParam) 
{
	WPARAM m_close=SC_CLOSE;
	if(nID==m_close && !m_CanExit)
	{
		m_showcmd=SW_HIDE;
		ShowHideWindow();
		return ;
	}

	DeleteTaskbarIcon();
	CPropertySheet::OnSysCommand(nID, lParam);
}

BOOL CMyPropertySheet::OnCommand(WPARAM wParam, LPARAM lParam) 
{	
	WPARAM m_close=WM_DESTROY;
	if(wParam==m_close && !m_CanExit)
	{
		m_showcmd=SW_HIDE;
		m_curpage=GetActiveIndex();
		ShowHideWindow();
		return TRUE;
	}

	if(wParam==0)
	{
		switch(lParam)
		{
		case WM_LBUTTONDOWN:
			m_showcmd=(m_showcmd==SW_HIDE)?SW_SHOW:SW_HIDE;
			m_curpage=GetActiveIndex();
			ShowHideWindow();
			break;
		case WM_RBUTTONDOWN:
			ShowMenu();
			break;
		}
		return TRUE;
	}

	DeleteTaskbarIcon();
	return CPropertySheet::OnCommand(wParam, lParam);
}

void CMyPropertySheet::ShowMenu()
{
	CMenu m_menu;
	m_menu.CreatePopupMenu();
	m_menu.AppendMenu(MF_ENABLED,ID_HELPABOUT,"关于系统");
	if(m_discout)
		m_menu.AppendMenu(MF_ENABLED,ID_REJECTDISC,"关闭光驱");
	else
		m_menu.AppendMenu(MF_ENABLED,ID_REJECTDISC,"弹出光驱");

	m_menu.AppendMenu(MF_ENABLED,ID_SHUTDOWNPOWER,"挂起系统");
	m_menu.AppendMenu(MF_ENABLED,MF_SEPARATOR);
	m_menu.AppendMenu(MF_ENABLED,ID_DESKMANAGER,"桌面管理");
	m_menu.AppendMenu(MF_ENABLED,ID_RESOURCEMAMAGER,"资料管理");
	m_menu.AppendMenu(MF_ENABLED,ID_CALENDAR,"查阅日历");
	m_menu.AppendMenu(MF_ENABLED,ID_STARTUP,"定制启动");
	m_menu.AppendMenu(MF_ENABLED,ID_SPEEDMODEM,"加速MODEM");
	m_menu.AppendMenu(MF_ENABLED,ID_THINGDISPOSE,"定制事务");
	m_menu.AppendMenu(MF_ENABLED,MF_SEPARATOR);
	m_menu.AppendMenu(MF_ENABLED,ID_APP_EXIT,"退出系统");
	CPoint m_point;
	GetCursorPos(&m_point);
	m_menu.TrackPopupMenu(TPM_LEFTALIGN,m_point.x,m_point.y,this);
}

void CMyPropertySheet::ShowHideWindow()
{
	AddTaskBarIcon();
	ShowWindow(m_showcmd);
	if(m_showcmd==SW_SHOW)
	{
		SetWindowPos(&CWnd::wndTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
		SetWindowPos(&CWnd::wndNoTopMost,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
		SetForegroundWindow();
		SetActivePage(m_curpage);
	}
}
void CMyPropertySheet::OnCalendar() 
{
	m_showcmd=SW_SHOW;
	m_curpage=3;
	ShowHideWindow();
}
void CMyPropertySheet::OnDeskmanager() 
{
	m_showcmd=SW_SHOW;
	m_curpage=0;
	ShowHideWindow();
}
void CMyPropertySheet::OnHelpabout() 
{
	m_showcmd=SW_SHOW;
	m_curpage=6;
	ShowHideWindow();
}
void CMyPropertySheet::OnResourcemamager() 
{
	m_showcmd=SW_SHOW;
	m_curpage=4;
	ShowHideWindow();
}
void CMyPropertySheet::OnSpeedmodem() 
{
	m_showcmd=SW_SHOW;
	m_curpage=2;
	ShowHideWindow();
}
void CMyPropertySheet::OnStartup() 
{
	m_showcmd=SW_SHOW;
	m_curpage=1;
	ShowHideWindow();
}

void CMyPropertySheet::OnThingdispose() 
{
	m_showcmd=SW_SHOW;
	m_curpage=5;
	ShowHideWindow();
}

LONG CMyPropertySheet::OnHotKey(WPARAM wParam,LPARAM lParam)
{
	switch(wParam)
	{
	case 1000:
		m_showcmd=(m_showcmd==SW_SHOW)?SW_HIDE:SW_SHOW;
		ShowHideWindow();
		break;

	case 1001:
		OnRejectdisc();
		break;

	case 1002:
		OnShutdownpower();
		break;

	case 1003:
		OnAppExit();
		break;

	case 1004:
		DeleteNcb();
		break;
	}
	return 1;
}
 

void CMyPropertySheet::OnAppExit() 
{
	m_CanExit=TRUE;
	DeleteTaskbarIcon();
	PostMessage(WM_CLOSE,0,0L);
}

void CMyPropertySheet::ReleaseList()
{
	if(!m_tasklist)
		return;

	if(!m_tasklist->IsEmpty())
	{
		CEverydayTask *m_task=(CEverydayTask *)m_tasklist->RemoveHead();
		while(m_task)
		{
			delete m_task;
			m_task=NULL;
			if(!m_tasklist->IsEmpty())
				m_task=(CEverydayTask *)m_tasklist->RemoveHead();
		}
	}
	delete m_tasklist;
}

void CMyPropertySheet::ListFromFile(char *m_filename)
{
	ReleaseList();
	m_tasklist=new CObList;

	CFile m_file;
	if(m_file.Open(m_filename,CFile::modeRead|CFile::typeBinary))
	{
		int  m_num=0;
		m_file.Read((char *)&m_num,sizeof(int));
		for(int i=0;i<m_num;i++)
		{
			CEverydayTask *m_task=new CEverydayTask;
			m_task->FromFile(m_file);
			if(!m_task->KeepInQuene())
				delete m_task;
			else
				m_tasklist->AddTail(m_task);
		}
		m_file.Close();
	}
}

void CMyPropertySheet::ListToFile(char *m_filename)
{
	CFile m_file;
	if(m_file.Open(m_filename,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary))
	{
		int  m_num=m_tasklist->GetCount();
		m_file.Write((char *)&m_num,sizeof(int));
		POSITION m_pos;
		for(int i=0;i<m_num;i++)
		{
			m_pos=m_tasklist->FindIndex(i);
			if(m_pos!=NULL)
			{
				CEverydayTask *m_task=(CEverydayTask *)m_tasklist->GetAt(m_pos);
				if(m_task)
					m_task->ToFile(m_file);
			}
		}
		m_file.Close();
	}
}

BOOL CMyPropertySheet::AutoStartup()
{
	int m_pass=(int)(GetTickCount()/(DWORD)1000);
	return (m_pass<180);
}

void CMyPropertySheet::OnTimer(UINT nIDEvent) 
{
	KillTimer(nIDEvent);
	switch(nIDEvent)
	{
	case 100:
		ShowWarning();
		if(m_tasklist->GetCount()!=0)
			SetTimer(100,60000,NULL);
		break;

	case 200:
		if(AutoStartup())
		{
//			DeleteNcb();
			ShowHideWindow();
		}
		break;
	}
	
	CPropertySheet::OnTimer(nIDEvent);
}

void CMyPropertySheet::ShowWarning()
{
	int m_count=m_tasklist->GetCount();
	POSITION m_pos;
	for(int i=0;i<m_count;i++)
	{
		m_pos=m_tasklist->FindIndex(i);
		if(m_pos!=NULL)
		{
			CEverydayTask * m_task=(CEverydayTask *)m_tasklist->GetAt(m_pos);
			if(m_task->ReachTime())
				MessageBox(m_task->m_content);
		}
	}
}

//检测光驱内是否有光盘或者光驱是否准备好
BOOL CMyPropertySheet::IsDiscReady()
{
	MCI_STATUS_PARMS mciStatusParms;
	mciStatusParms.dwCallback = (DWORD)GetSafeHwnd();
	mciStatusParms.dwItem  =MCI_STATUS_READY;
	mciStatusParms.dwReturn=0;
	mciSendCommand(MCI_DEVTYPE_CD_AUDIO,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)&mciStatusParms);
	return mciStatusParms.dwReturn;
}

void CMyPropertySheet::OnRejectdisc()
{
	char retbuf[60];
	m_discout=IsDiscReady();
	if(m_discout)
		mciSendString("set cdaudio door open",retbuf,60,NULL);
	else
		mciSendString("set cdaudio door closed",retbuf,60,NULL);
	AddTaskBarIcon();
}

void CMyPropertySheet::OnUpdateRejectdisc(CCmdUI* pCmdUI) 
{
	if(m_discout)
		pCmdUI->SetText("关闭光驱");
	else
		pCmdUI->SetText("弹出光驱");
}

void CMyPropertySheet::OnShutdownpower() 
{
	SetSystemPowerState(TRUE,TRUE);
}

void CMyPropertySheet::DeleteNcb()
{
	DeleteFileInDir("e:\\vcwork",".ncb;.opt;.plg");
	MessageBox("哈哈,所有VC的ncb文件死伤殆尽!","请您确认",MB_OK);
}

void CMyPropertySheet::DeleteFileInDir(char * dirname,char * m_ext)
{
	char findfile[255];
	struct _finddata_t FileBlock;
	int  m_len=strlen(dirname);
	if(dirname[m_len-1]=='\\')
		wsprintf(findfile,"%s*.*",dirname);
	else
		wsprintf(findfile,"%s\\*.*",dirname);
	long handle=_findfirst(findfile,&FileBlock);
	int  ret=0;

	while(handle>0 && ret==0)
	{
		wsprintf(findfile,"%s\\%s",dirname,FileBlock.name);
		if(FileBlock.attrib & _A_SUBDIR)
		{
			if(strcmp(FileBlock.name,".")!=0 && strcmp(FileBlock.name,"..")!=0)
				DeleteFileInDir(findfile,m_ext);
		}
		else
		{
			m_len=strlen(findfile);
			char * m_buffer=strrchr(findfile,'.');
			if(m_buffer)
			{
				char *m_addr=strstr(m_ext,m_buffer);
				if(m_addr!=0)
				{
					SetFileAttributes(findfile,FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL);
					DeleteFile(findfile);
				}
			}
		}
		ret=_findnext(handle,&FileBlock);
	}
}



void CMyPropertySheet::SetLogoText(CString Text)
{
	m_LogoText=Text;
}

void CMyPropertySheet::SetLogoFont(CString Name,int nHeight,
	int nWeight,BYTE bItalic,BYTE bUnderline)
{
	if(m_fontLogo.m_hObject)
		m_fontLogo.Detach();
	m_fontLogo.CreateFont(nHeight, 0, 0, 0, nWeight, bItalic, bUnderline,0,0,0,0,0,0, Name);
}

void CMyPropertySheet::DrawLogoText()
{
	if(m_LogoText.IsEmpty()) return;

	CPaintDC dc(this);
	CRect rectTabCtrl;
	GetTabControl()->GetWindowRect(rectTabCtrl);
	ScreenToClient(rectTabCtrl);

	CRect rectOk;
	GetDlgItem(IDOK)->GetWindowRect(rectOk);
	ScreenToClient(rectOk);

	dc.SetBkMode(TRANSPARENT);

	CRect rectText;
	rectText.left = rectTabCtrl.left;
	rectText.top = rectOk.top;
	rectText.bottom = rectOk.bottom;
	rectText.right = rectOk.left;

	CFont * OldFont = dc.SelectObject(&m_fontLogo);
	COLORREF OldColor = dc.SetTextColor( ::GetSysColor( COLOR_3DHILIGHT));

	dc.DrawText( m_LogoText, rectText + CPoint(1,1), DT_SINGLELINE | DT_LEFT | DT_VCENTER);
	dc.SetTextColor( ::GetSysColor( COLOR_3DSHADOW));
	dc.DrawText( m_LogoText, rectText, DT_SINGLELINE | DT_LEFT | DT_VCENTER);

	dc.SetTextColor( OldColor);
	dc.SelectObject(OldFont);
}

void CMyPropertySheet::OnPaint() 
{
	DrawLogoText();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -