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

📄 speedcddlg.cpp

📁 虚拟光驱程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
   }
  	
}

void CDialogDemoDlg::OnFileUnmount() 
{
	// TODO: Add your command handler code here
	DWORD error;
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	
    HTREEITEM itm;
	itm=m_ctlTree1.GetSelectedItem();
    if (m_ctlTree1.GetItemData(itm)==0)
		return;
    if (m_ctlTree1.GetItemData(itm)==2)
       itm=m_ctlTree1.GetParentItem(itm);// GetItem(); 

    CString m_sUnmountLetter=m_ctlTree1.GetItemText(itm);// SelectItem
   
	char *cd_path=( char *)m_sUnmountLetter.GetBuffer(1);
	
	if (m_sUnmountLetter.GetLength() < 1 || !Unmount(m_sUnmountLetter[0]))
	{
		error = GetLastError();
		if (error == 1)
		{
			AfxMessageBox("This drive is not a SpeedCD volume.");
			return;
		}
		CString s;
		s.Format("Error number %i. Durring IOCTL.",error);
		AfxMessageBox(s);
	}else
	{
	    //
		// Success... We need to update the registry so that this drive is no
		// longer mounted on boot.
		//

        /*
		if (FALSE)
		{
			HKEY hkResult;
			LONG r1 = RegOpenKeyEx(  
				HKEY_LOCAL_MACHINE,         // handle to open key
				"SYSTEM\\CurrentControlSet\\Services\\SPEEDCD\\Parameters",  // address of name of subkey to open
				0,
				KEY_ALL_ACCESS,   // reserved  REGSAM samDesired, // security access mask
				&hkResult
				);

			if (r1 != ERROR_SUCCESS)
			{
				AfxMessageBox("Cannot open registry key");
				return;
			}

			// delete the key with the matching ordinal
			LONG r = RegDeleteValue(hkResult,m_sUnmountLetter);

			if (r != ERROR_SUCCESS)
			{
				// error deleting key
				AfxMessageBox("Error deleting key");
			}
			RegCloseKey(hkResult);
		}
		*/
		inifile.DeleteValue("ISOCD",CString(cd_path[0]));
	    inifile.WriteFile();
	    m_ctlTree1.DeleteItem(itm);
	}
	
	/*HTREEITEM itm;
	itm=m_ctlTree1.GetSelectedItem();
    if (m_ctlTree1.GetItemData(itm)==0)
		return;
    CString sPath=m_ctlTree1.GetItemText(itm);// SelectItem
    char *cd_path=( char *)sPath.GetBuffer(1);
	if ( XuNiCDUmount(cd_path[0])==0)
	{
	 // device_Num--;
	  inifile.DeleteValue("ISOCD",CString(cd_path[0]));
	  inifile.WriteFile();
	  m_ctlTree1.DeleteItem(itm);
	}
	*/
}


void CDialogDemoDlg::OnRclickTree1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
  HTREEITEM itm;
  itm=m_ctlTree1.GetSelectedItem();
  int itmData=m_ctlTree1.GetItemData(itm);
  
 // else// if( itmData!=0)
  {
	CPoint point;
	VERIFY(GetCursorPos(&point));
	ScreenToClient(&point);
	ClientToScreen(&point);
	{
		CMenu menu;
		VERIFY(menu.LoadMenu(IDR_POPUPMENU));

		CMenu* pPopup = menu.GetSubMenu(0);
		ASSERT(pPopup != NULL);
		CWnd* pWndPopupOwner = this;
		if( itmData==0)
		{
          //pPopup->EnableMenuItem(IDM_POP_INSERT_ISO,TRUE);
		  //pPopup->EnableMenuItem(IDM_POP_REJECT_ISO,TRUE);
		  pPopup->EnableMenuItem(ID_FILE_UNMOUNT,TRUE);
		}
		else
		{ 
		  //pPopup->EnableMenuItem(IDM_POP_INSERT_ISO,FALSE);
		  //pPopup->EnableMenuItem(IDM_POP_REJECT_ISO,FALSE);
		  pPopup->EnableMenuItem(ID_FILE_UNMOUNT,FALSE);
        }
		/*
		if (itmData==3)  
          pPopup->EnableMenuItem(IDM_POP_INSERT_ISO,TRUE);
		else if (itmData!=0) 
		  pPopup->EnableMenuItem(IDM_POP_INSERT_ISO,FALSE);
        
		if (itmData==1) 
          pPopup->EnableMenuItem(IDM_POP_REJECT_ISO,TRUE);
		else  if (itmData!=0) 
          pPopup->EnableMenuItem(IDM_POP_REJECT_ISO,FALSE);
        
		if (itmData==2) 
		  pPopup->EnableMenuItem(IDM_POP_INSERT_ISO,TRUE);
        else if (itmData!=0 && itmData!=3)  
          pPopup->EnableMenuItem(IDM_POP_INSERT_ISO,FALSE);
        */
		while (pWndPopupOwner->GetStyle() & WS_CHILD)
			pWndPopupOwner = pWndPopupOwner->GetParent();

		TrackSkinPopupMenu( pPopup->m_hMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,
			pWndPopupOwner->m_hWnd );
	}
  }
	*pResult = 0;
}


void CDialogDemoDlg::OnRclickList1(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	
	CPoint point;
	VERIFY(GetCursorPos(&point));
	ScreenToClient(&point);
	ClientToScreen(&point);
	{
	    CMenu menu;
		VERIFY(menu.LoadMenu(IDR_POPUPMENU2));
        HTREEITEM itm;
        itm=m_ctlTree1.GetSelectedItem();
        int itmData=m_ctlTree1.GetItemData(itm);

		CMenu* pPopup = menu.GetSubMenu(0);
		ASSERT(pPopup != NULL);
		CWnd* pWndPopupOwner = this;
        /*if (itmData!=1) 
		{
		   pPopup->EnableMenuItem(IDM_POP_INSERT_ISO,TRUE);
		}*/
		while (pWndPopupOwner->GetStyle() & WS_CHILD)
			pWndPopupOwner = pWndPopupOwner->GetParent();

		TrackSkinPopupMenu( pPopup->m_hMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,
			pWndPopupOwner->m_hWnd );
	}
	*pResult = 0;
}

void CDialogDemoDlg::OnAddIsofile() 
{
   char strExt[]= "CD ISO Files(*.iso)|*.iso||";
   
   CFileDialog dlg( TRUE, "*.iso", "*.iso" , OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT
		             , strExt ,  this );
   
   if( dlg.DoModal() == IDOK  )
   {
       
	   CString szPath=dlg.GetPathName();
	   int itmCNT=m_ctlList1.GetItemCount();
	   for (int i=0;i<itmCNT;i++)
	   {
	      if (m_ctlList1.GetItemText(i,0)==szPath)
		  {
			  ::MessageBox(m_hWnd,"Have a same file exists!","ISO Studio",MB_ICONINFORMATION |MB_OK);
			  break;
		  }
	   }
       if (i==itmCNT||itmCNT==0)
	   {
	      m_ctlList1.InsertItem(m_ctlList1.GetItemCount(),szPath);
		  //m_ctlList1.SetItemData(i,i);
		  CString s; 
          s.Format("%ld", itmCNT); 
		  inifile.SetValue("ISOFILE",s,szPath);
		  inifile.WriteFile(); 
       }	      
   }
   
}

void CDialogDemoDlg::OnRemoveIsofile() 
{
	// TODO: Add your command handler code here
     int i=m_ctlList1.GetNextItem(-1,LVNI_SELECTED); 
     m_ctlList1.DeleteItem (i);
     
	 //for( i=0;i<itmCNT;i++) 
	 {
		  inifile.DeleteKey("ISOFILE"); 
	      inifile.WriteFile(); 
	 }
	 int itmCNT=m_ctlList1.GetItemCount();
     for (i=0;i<itmCNT;i++)
	 {    
		  CString s; 
          s.Format("%ld", i);
		  CString szPath=m_ctlList1.GetItemText(i,0);
          inifile.SetValue("ISOFILE",s,szPath);
		  inifile.WriteFile(); 
     }  
	 
}

BOOL CDialogDemoDlg::SaveHistory()
{

	// Save the contents of the listbox
     int itmCNT=m_ctlList1.GetItemCount();
     for (int i=0;i<itmCNT;i++)
	 {    
		  CString s; 
          s.Format("SPEEDISO%ld", i);
		  CString szPath=m_ctlList1.GetItemText(i,0);
		((CDialogDemoApp *)AfxGetApp())-> WriteProfileString("Mount",s, szPath);
	}
  
	return TRUE;
}

/*void CDialogDemoDlg::OnPopRejectIso() 
{
	// TODO: Add your command handler code here
	HTREEITEM itm;
	itm=m_ctlTree1.GetSelectedItem();
    
    if (m_ctlTree1.GetItemData(itm)==2)
       
	{ 
		itm= m_ctlTree1.GetParentItem(itm);
	}
	   

    CString sPath=m_ctlTree1.GetItemText(itm);// SelectItem
	char *cd_path=( char *)sPath.GetBuffer(1);
	if ( RejectCDISO(cd_path[0])==0)
	{
	  //device_Num--;
	  inifile.SetValue("ISOCD",CString(cd_path[0]),"NOCD");
	  //ifile.DeleteValue();
	  inifile.WriteFile();
	  m_ctlTree1.DeleteItem(m_ctlTree1.GetChildItem(itm));
  	  m_ctlTree1.SetItemData(itm,1); //NO CD ISO FILE
	}

}
*/

/*void CDialogDemoDlg::OnPopInsertIso() 
{
   CString szPath;
   
   POPEN_FILE_INFORMATION  OpenFileInformation;
   int i=-1;
   if (m_ctlList1.GetItemCount())
     i=m_ctlList1.GetNextItem(-1,LVNI_SELECTED); 

   if (i>=0) 
      szPath=m_ctlList1.GetItemText(i,0);    
   else
   {
	   char strExt[]= "CD ISO Files(*.iso)|*.iso||";
   
	   CFileDialog dlg( TRUE, "*.iso", "*.iso" , OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT
						 , strExt ,  this );
	   if( dlg.DoModal() == IDOK  )
	   {
		  szPath=dlg.GetPathName();
	   }
   }
   if (szPath!="")
   {
	  OpenFileInformation =(POPEN_FILE_INFORMATION ) malloc(sizeof(OPEN_FILE_INFORMATION)+ szPath.GetLength()-256+8);
      memset(
            OpenFileInformation,
            0,
            sizeof(OPEN_FILE_INFORMATION) + szPath.GetLength() + 8-256
            );
      strcpy((char*)OpenFileInformation->FileName, "\\??\\");
      strcat((char*)OpenFileInformation->FileName, szPath);
	  OpenFileInformation->FileNameLength = strlen((char*)OpenFileInformation->FileName);
	  HTREEITEM itm;
	  itm=m_ctlTree1.GetSelectedItem();
      CString sPath=m_ctlTree1.GetItemText(itm);// SelectItem
      char *cd_path=( char *)sPath.GetBuffer(1);
	  if( InsertCDISO( OpenFileInformation,cd_path[0])==0)
	  {
	     hi2 = m_ctlTree1.InsertItem( szPath, 3, 3, itm );
		 m_ctlTree1.SetItemData(itm,3); //have CD ISO FILE
         m_ctlTree1.SetItemData(hi2,2);
	     inifile.SetValue("ISOCD",CString(cd_path[0]),szPath);
	     inifile.WriteFile(); 

		 int itmCNT=m_ctlList1.GetItemCount();
	     for (i=0;i<itmCNT;i++)
		 {
	      if (m_ctlList1.GetItemText(i,0)==szPath)
		  {
			  //::MessageBox(m_hWnd,"Have a same file exists!","ISO Studio",MB_ICONINFORMATION |MB_OK);
			  break;
		  }
		 }
         if (i==itmCNT||itmCNT==0)
		 {
	      m_ctlList1.InsertItem(m_ctlList1.GetItemCount(),szPath);
		  CString s; 
          s.Format("%ld", itmCNT); 
		  inifile.SetValue("ISOFILE",s,szPath);
		  inifile.WriteFile(); 
		 }
	  }
	 
   }
	// TODO: Add your command handler code here
	
}*/

BOOL CDialogDemoDlg::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
{
	// TODO: Add your specialized code here and/or call the base class
	return CDialog::Create(IDD, pParentWnd);
}

//工具栏提示
BOOL CDialogDemoDlg::OnToolTipText(UINT, NMHDR* pNMHDR, LRESULT* pResult)
{
	ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW);
	
	// UNICODE消息
	TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR;
	TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR;
	//TCHAR szFullText[512];
	CString strTipText;
	UINT nID = pNMHDR->idFrom;
	
	if (pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) ||
		pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
	{
		// idFrom为工具条的HWND 
		nID = ::GetDlgCtrlID((HWND)nID);
	}
	
	if (nID != 0) //不为分隔符
	{
		strTipText.LoadString(nID);
		strTipText = strTipText.Mid(strTipText.Find('\n',0)+1);
		
#ifndef _UNICODE
		if (pNMHDR->code == TTN_NEEDTEXTA)
		{
			lstrcpyn(pTTTA->szText, strTipText, sizeof(pTTTA->szText));
		}
		else
		{
			_mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
		}
#else
		if (pNMHDR->code == TTN_NEEDTEXTA)
		{
			_wcstombsz(pTTTA->szText, strTipText,sizeof(pTTTA->szText));
		}
		else
		{
			lstrcpyn(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
		}
#endif
		
		*pResult = 0;
		
		// 使工具条提示窗口在最上面
		::SetWindowPos(pNMHDR->hwndFrom, HWND_TOP, 0, 0, 0, 0,SWP_NOACTIVATE|
			SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER); 
		return TRUE;
	}
	return TRUE;
}


void CDialogDemoDlg::OnSize(UINT nType, int cx, int cy) 
{
    	CDialog::OnSize(nType, cx, cy);
		//获得对话框的尺寸

  // TODO: Add your message handler code here
	
}

⌨️ 快捷键说明

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