MFC(VC++)でフォルダタイプ(Windows/FTP)を区別する方法は? 私の場合は、MFCツリービューを持っています。私は、サーバーからのフォルダーのリストを追加しています。そのフォルダーはWindowsとCIFSです。次に、内部的にどのタイプのフォルダーを区別したいのですか?私はログイン資格情報の詳細が必要なログインページを表示しますが、その前に私はどのタイプのフォルダを区別する必要がありますか?MFC(VC++)でフォルダタイプ(Windows/FTP)を区別する方法は?
設定やジエットキーなどのツリービューのプロパティ。 ありがとうございました。
この形式では、サーバーからフォルダーリストを取得します。この形式では、ボリューム1 /フォルダー1、ボリューム2 /フォルダー2 ||フォルダー3、 strDataFolder contains - FTP Foldersと strNASfoldersがCIFSフォルダをconatinsした後、もう1つの方法としてUpdateFolderを使用しています。 FTPの場合は直接追加しますが、CIFSでそのフォルダがすでに存在する場合は複製をチェックして、再度ツリービューに追加しないでください。
ここではどのようにフォルダの種類を区別することができないのですか?
void CNDSClientDlg::UpdateSharedFolder(CString strNASfolders,HTREEITEM hChildItem)
{
CString strDataFolder = "";
CString strData = "";
int iPos = 0;
int fPosition = 0;
fPosition = strNASfolders.Find("||");
if(fPosition != -1)
{
strDataFolder = strNASfolders.Mid(0,fPosition);
strNASfolders = strNASfolders.Right(strNASfolders.GetLength()-(fPosition+2));
}
else
{
strDataFolder = strNASfolders;
}
if (strDataFolder != "")
{
UpdateFolders(strDataFolder,hChildItem,false);
}
if (strNASfolders != "") //don't add if already exist
{
UpdateFolders(strNASfolders,hChildItem,true);
}
}
void CNDSClientDlg::UpdateFolders(CString strFolderType,HTREEITEM hChildItem,bool bCheck)
{
int iPos = 0 ;
CString strData = "";
CString strCurrFolder ="";
HTREEITEM HShareFolder = NULL;
bool bFound = false ;
while (iPos != -1)
{
iPos = strFolderType.Find(",");
if (iPos != -1)
{
strData = strFolderType.Mid(0,iPos);//get the folder details
}
else
{
strData = strFolderType;//get the last folder details
}
strFolderType = strFolderType.Right(strFolderType.GetLength()-(iPos+1)); //get remaining data
int fPos = strData.ReverseFind('/');
if (fPos != -1)
{
strCurrFolder = strData.Mid(fPos+1,strData.GetLength()); // get required data
}
else
{
strCurrFolder = strData; //else assign all the data
}
if(bCheck == true)
{
bFound = false ;
HTREEITEM hTempItem = NULL;
CString strItemText = "" ;
hTempItem = m_pTreeview->GetChildItem(hChildItem);
strItemText = m_pTreeview->GetItemText(hTempItem);
while(hTempItem != NULL)
{
if(strItemText != strCurrFolder)
{
strItemText = m_pTreeview->GetItemText(hTempItem);
hTempItem = m_pTreeview->GetNextSiblingItem(hTempItem);
}
else
{
bFound = true;
break;
}
}
}
if(bCheck == false || bFound == false)
{
HShareFolder = m_pTreeview->InsertItem(strCurrFolder,hChildItem);
m_pTreeview->SetItemImage(HShareFolder,2,2);
TTipItemData* pToolTipData ;
pToolTipData = new TTipItemData;
pToolTipData->strTool = strData ;
m_pTreeview->SetItemData(HShareFolder,DWORD(pToolTipData));
}
m_pTreeview->Expand(hParentItem,TVE_EXPAND);
m_pTreeview->EnsureVisible(hParentItem);
}
}
'CTreeCtrlの:: SetItemData'あなたは項目が同じように動作し、挿入した後。 – djeidot
@ djeidot +1。これは実際には、大きな構造体を使って周囲を吐くよりも簡単です。 –
lparamの使い方を教えてもらえますか? –