📄 speedcddlg.cpp
字号:
}
}
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 + -