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

📄 ddlg.cpp

📁 The vc catalogue places procedure code under surveillance
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	::ZeroMemory(&lf,sizeof(lf));  //API函数,它将一块内存清零
	lf.lfHeight =90;         
	lf.lfWeight =FW_NORMAL;     //,  FW_NORMAL常规  FW_BOLD;粗体 
	lf.lfItalic =false;	
	::lstrcpy(lf.lfFaceName ,"Verdana"); 
	m_font.CreatePointFontIndirect(&lf);
	GetDlgItem(IDC_STATE)->SetFont(&m_font);		
	
	CString str;
	str.Format("你选择的监视目录为 %s",m_strWatchedDir);
	GetDlgItem(IDC_STATE)->SetWindowText(str);

	GetDlgItem(IDC_STOP)->EnableWindow(false);

	if(m_bAlwaysOnTop)
		OnBtnAlwaysOnTop();
	if(this->m_bMinimized)
		PostMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0);
	if(this->m_bAutoStart)
		this->OnStart();
	
	::RegisterHotKey(m_hWnd,199,MOD_ALT,'Z');
		return TRUE;  
}

void CDDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
		if(nID==SC_MINIMIZE)
	{
		ShowWindow(SW_HIDE);
	}

	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CDDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CDDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

BOOL CDDlg::StartWatch(CString path)
{
	m_strWatchedDir = path;  
	
	DWORD ThreadId;  //创建一个新线程用于监视
	m_hThread=::CreateThread(NULL,0,ThreadProc,this,0,&ThreadId );
	
	return NULL!=m_hThread;
}


void CDDlg::OnSelectDir() 
{
	CBrowseFolder Dlg;
	if(Dlg.DoModal(this,NULL)==IDOK)
	{
		m_strWatchedDir=Dlg.GetDirPath();
		::WritePrivateProfileString("Settings",
									"监视目录",
									m_strWatchedDir,
									".\\Settings.ini");
		GetDlgItem(IDC_STATE)->SetWindowText("你选择了监视 "+m_strWatchedDir);
		
	}
}

void CDDlg::OnStart() 
{
	this->StartWatch(m_strWatchedDir);
	GetDlgItem(IDC_STOP)->EnableWindow(true);
	GetDlgItem(IDC_START)->EnableWindow(false);
	GetDlgItem(IDC_SELECT_DIR)->EnableWindow(false);	
	GetDlgItem(IDC_STATE)->SetWindowText("正在监视...    "+m_strWatchedDir);
}
void CDDlg::OnStop() 
{
		GetDlgItem(IDC_STATE)->SetWindowText("停止了监视"+m_strWatchedDir);
		if(m_hThread !=NULL)
		{
			::TerminateThread(m_hThread, 0 );
			m_hThread = NULL;
		}
		if(hDir !=INVALID_HANDLE_VALUE)
		{
			CloseHandle( hDir );
			hDir = INVALID_HANDLE_VALUE;
		}
		GetDlgItem(IDC_STOP)->EnableWindow(false);
		GetDlgItem(IDC_START)->EnableWindow(true);
		GetDlgItem(IDC_SELECT_DIR)->EnableWindow(true);
	
}
void CDDlg::OnClear() 
{
	PlaySound(MAKEINTRESOURCE(IDR_WAVE2),AfxGetResourceHandle(),SND_RESOURCE|SND_PURGE|SND_NODEFAULT); 
	m_list.DeleteAllItems();
}

void CDDlg::OnBtnAlwaysOnTop() 
{
	UpdateData();	
	if (m_bAlwaysOnTop)
	{
		SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | WS_EX_TOPMOST);
		::WritePrivateProfileString("Settings","AlwaysOnTop",m_bAlwaysOnTop? "1":"0",".\\Settings.ini");
	}

	else
	{
		::SetWindowPos(GetSafeHwnd(), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
		::WritePrivateProfileString("Settings","AlwaysOnTop",m_bAlwaysOnTop? "1":"0",".\\Settings.ini");
	}

	
}

void CDDlg::OnAbout() 
{
	//CAboutDlg dd;
	CLogoDlg dd;
	dd.DoModal();
	
}

void CDDlg::OnNosound() 
{
	UpdateData(true);
	::WritePrivateProfileString("Settings","AutoStart",m_bAutoStart? "1":"0",".\\Settings.ini");

	
}


void CDDlg::OnCheckMinimized() 
{
	UpdateData(true);
	::WritePrivateProfileString("Settings","Minimized",m_bMinimized? "1":"0",".\\Settings.ini");
	
}

void CDDlg::OnCheckAutorun() 
{
	UpdateData(true);
	
	const TCHAR gcszAutoRunKey[]= _T( "Software\\microsoft\\windows\\currentversion\\run" );
	const TCHAR	gcszWindowClass[] = _T("关驱控制");//设置开机程序自启动键值位置和其下新建子键值(可设为程序名)

	HKEY hKey;
	LONG lRet, lRet2;
	DWORD dwLength, dwDataType;
	TCHAR szItemValue[MAX_PATH], szPrevValue[MAX_PATH];
	TCHAR szBuffer[MAX_PATH];


	GetModuleFileName( NULL, szItemValue, MAX_PATH );	// 得到程序全路径名
	
	//MessageBox(szItemValue);
		
		lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE, gcszAutoRunKey,0, KEY_READ | KEY_WRITE, &hKey );
		if( lRet != ERROR_SUCCESS )        	// 打开注册表键
		{
			MessageBox("设置自动启动失败,请检查注册表是否被禁用!","使闹钟",MB_OK| MB_ICONEXCLAMATION);

		}
	
		dwLength = sizeof( szBuffer );
		lRet = RegQueryValueEx( hKey, gcszWindowClass,NULL, &dwDataType, (LPBYTE)szBuffer, &dwLength );
																		// 查询AutoRun项目是否存在
	
		if( m_bAutoRun ) // 添加
		{
			::WritePrivateProfileString("Settings","AutoRun",m_bAutoRun? "1":"0",".\\Settings.ini");
		
			if( lRet != ERROR_SUCCESS )  // AutoRun项目不存在
				lRet2 = RegSetValueEx( hKey, gcszWindowClass,0, REG_SZ, (LPBYTE)szItemValue, strlen( szItemValue ) );
			else				// 存在, 比较二者是否相同
			{

				dwLength = sizeof( szPrevValue );
				lRet2 = RegQueryValueEx( hKey, gcszWindowClass,0, &dwDataType,(LPBYTE)szPrevValue, &dwLength );

				if( lstrcmp( szItemValue, szPrevValue ) ) 	// 不相同则替换
				{
					lRet2 = RegDeleteValue( hKey, gcszWindowClass );
					lRet2 = RegSetValueEx( hKey, gcszWindowClass,0, REG_SZ,(LPBYTE)szItemValue, strlen( szItemValue ) );
				}
			}
		}

		else 	// 删除
		{
			if( lRet == ERROR_SUCCESS )
				lRet2 = RegDeleteValue( hKey, gcszWindowClass );	// AutoRun项目已存在则删除
			::WritePrivateProfileString("Settings","AutoRun",m_bAutoRun? "1":"0",".\\Settings.ini");
		}


		RegCloseKey( hKey );	// 关闭注册表键


		if( lRet2 != ERROR_SUCCESS )
		{}//	MessageBox("设置自动启动失败,请检查注册表是否被禁用!","使闹钟",MB_OK| MB_ICONEXCLAMATION);
			
}
void CDDlg::OnHotKey(WPARAM wp,LPARAM lp)
{
	if(wp==199)
	{
		if(IsWindowVisible())
			ShowWindow(SW_HIDE);
		else
			ShowWindow(SW_SHOWNORMAL);
	}
}

BOOL CDDlg::DestroyWindow() 
{

	::UnregisterHotKey(m_hWnd,199);

	return CDialog::DestroyWindow();
}

BOOL CDDlg::PreTranslateMessage(MSG* pMsg) 
{
	if (pMsg->message==WM_KEYDOWN)
	{
		switch (pMsg->wParam)
		{
		case VK_ESCAPE:
			ShowWindow(SW_HIDE);
			return true;
			break;
		case VK_RETURN:
			return true;
			break;
			
		default: break;
		} 
	}
	
	return CDialog::PreTranslateMessage(pMsg);
}


HBRUSH CDDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	

	if(pWnd->GetDlgCtrlID()==IDC_STATE)
		pDC->SetTextColor(RGB(0,0,255));
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

void CDDlg::OnLButtonDown(UINT nFlags, CPoint point) 
{

	ReleaseCapture();
	SendMessage(WM_NCLBUTTONDOWN,HTCAPTION,0);
	CDialog::OnLButtonDown(nFlags, point);
}






void CDDlg::OnSelections() 
{

	CSelectDlg sel;
	if(sel.DoModal()==IDOK)
	{
	
		this->m_bAddNew0=sel.m_bAddNew;
		this->m_bDel0=sel.m_bDel;
		this->m_bModify0=sel.m_bModify;
		this->m_bRename0=sel.m_bRename;
		this->m_bOther0=sel.m_bOther;

	::WritePrivateProfileString("Selections","m_bAddNew",sel.m_bAddNew? "1":"0",".\\Settings.ini");
	::WritePrivateProfileString("Selections","m_bDel",sel.m_bDel? "1":"0",".\\Settings.ini");
	::WritePrivateProfileString("Selections","m_bModify",sel.m_bModify? "1":"0",".\\Settings.ini");
	::WritePrivateProfileString("Selections","m_bRename",sel.m_bRename? "1":"0",".\\Settings.ini");
	::WritePrivateProfileString("Selections","m_bOther",sel.m_bOther? "1":"0",".\\Settings.ini");
	}
}





void CDDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) 
{

	int nIndex = m_list.GetNextItem(-1, LVNI_ALL | LVNI_SELECTED); 
    if(nIndex == -1)
        return;

	char buf[200];
	m_list.GetItemText(nIndex,3,buf,200);
	CString str;	
	str=this->m_strWatchedDir+"\\"+buf;

	::ShellExecute(NULL,"open",str,NULL,NULL,SW_SHOW);

	*pResult = 0;	*pResult = 0;
}

⌨️ 快捷键说明

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