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

📄 cb199910dc_f.asp.htm

📁 C++builder学习资料C++builder
💻 HTM
📖 第 1 页 / 共 5 页
字号:
=====================================================================</span></i></span></p>     

     

<p class=Code><span class=Code>&nbsp; </span></p>     

     

<p class=Code><span class=Code>LPITEMIDLIST     

GetNextItem(LPITEMIDLIST pidl) </span></p>     

     

<p class=Code><span class=Code>{</span></p>     

     

<p class=Code><span class=Code><b>&nbsp;&nbsp;unsigned</b> <b>short</b> nLen = pidl-&gt;mkid.cb; </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;<b> if</b>     

(nLen == 0) <b>return</b> NULL; </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;<b> return</b>     

(LPITEMIDLIST)((LPBYTE)pidl + nLen); </span></p>     

     

<p class=Code><span class=Code>}</span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//     

---------------------------------------------------------------------------</span></i></span></p>     

     

<p class=Code><span class=Code>&nbsp; </span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//     

=====================================================================</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Function:&nbsp;&nbsp;&nbsp; PathFromPIDL()</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Synopsis:&nbsp;&nbsp;&nbsp; Returns an AnsiString path of a PIDL</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Parameters: LPITEMIDLIST pidl -- PIDL to return path     

for</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//     

=====================================================================</span></i></span></p>     

     

<p class=Code><span class=Code>&nbsp; </span></p>     

     

<p class=Code><span class=Code>AnsiString     

PathFromPIDL(LPITEMIDLIST lpidl) </span></p>     

     

<p class=Code><span class=Code>{</span></p>     

     

<p class=Code><span class=Code><b>&nbsp;&nbsp;char</b> path[MAX_PATH]; </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;SHGetPathFromIDList(lpidl, path); </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;<b> return</b>     

AnsiString(path); </span></p>     

     

<p class=Code><span class=Code>}</span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//     

---------------------------------------------------------------------------</span></i></span></p>     

     

<p class=Code><span class=Code>&nbsp; </span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//     

=====================================================================</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Function:&nbsp;&nbsp;&nbsp; PathFromPIDL()</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Synopsis:&nbsp;&nbsp;&nbsp; Returns an AnsiString path of a PIDL</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Parameters: LPITEMIDLIST pidl -- PIDL to return path     

for</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//     

=====================================================================</span></i></span></p>     

     

<p class=Code><span class=Code>&nbsp; </span></p>     

     

<p class=Code><span class=Code>LPITEMIDLIST     

PIDLFromPath(LPSHELLFOLDER lpsf, AnsiString Path) </span></p>     

     

<p class=Code><span class=Code>{</span></p>     

     

<p class=Code><span class=Code><b>&nbsp;&nbsp;if</b> (Path[Path.Length()] != '\\') Path     

= Path + &quot;\\&quot;; </span></p>     

     

<p class=Code><span class=Code>&nbsp; </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;LPITEMIDLIST lpidl; </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;<b> wchar_t</b>     

WPath[MAX_PATH]; </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;StringToWideChar(Path, WPath, MAX_PATH); </span></p>     

     

<p class=Code><span class=Code>&nbsp; </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;<b> unsigned</b>     

<b>long</b> eaten; </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;<b> if</b>     

(SUCCEEDED(lpsf-&gt;ParseDisplayName(NULL, NULL, WPath, </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;eaten,     

&amp;lpidl, NULL))) </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;{ </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;&nbsp;&nbsp;<b> return</b>     

lpidl; </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;} </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;<b> return</b>     

NULL; </span></p>     

     

<p class=Code><span class=Code>}</span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//     

---------------------------------------------------------------------------</span></i></span></p>     

     

<p class=Code><span class=Code>&nbsp; </span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//     

=====================================================================</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Function:&nbsp;&nbsp;&nbsp; FreePIDL()</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Synopsis:&nbsp;&nbsp;&nbsp; Uses the shell allocator to free a previously</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allocated PIDL</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Parameters: LPITEMIDLIST pidl -- PIDL to free</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//     

=====================================================================</span></i></span></p>     

     

<p class=Code><span class=Code>&nbsp; </span></p>     

     

<p class=Code><span class=Code><b>void</b>     

FreePIDL(LPITEMIDLIST lpidl) </span></p>     

     

<p class=Code><span class=Code>{</span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;LPMALLOC lpMalloc; </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;<b> if</b>     

(SUCCEEDED(SHGetMalloc(&amp;lpMalloc))) </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;{ </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;&nbsp;&nbsp;lpMalloc-&gt;Free(lpidl); </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;&nbsp;&nbsp;lpMalloc-&gt;Release();</span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;} </span></p>     

     

<p class=Code><span class=Code>}</span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//     

---------------------------------------------------------------------------</span></i></span></p>     

     

<p class=Code><span class=Code>&nbsp; </span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//     

=====================================================================</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Function:&nbsp;&nbsp;&nbsp; GetPIDLSize()</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Synopsis:&nbsp;&nbsp;&nbsp; Returns the number of bytes occupied by a PIDL</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Parameters: LPITEMIDLIST pidl -- PIDL to query size     

of</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//     

=====================================================================</span></i></span></p>     

     

<p class=Code><span class=Code>&nbsp; </span></p>     

     

<p class=Code><span class=Code><b>unsigned</b>     

<b>short</b> GetPIDLSize(LPITEMIDLIST     

lpidl) </span></p>     

     

<p class=Code><span class=Code>{</span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;<b> unsigned</b>     

<b>short</b> cb = 0; </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;<b> while</b>     

(lpidl) </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;{ </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;&nbsp;&nbsp;cb = (<b>unsigned</b>     

<b>short</b>)(cb + lpidl-&gt;mkid.cb); </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;&nbsp;&nbsp;lpidl = GetNextItem(lpidl); </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;} </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;<b> return</b>     

(<b>unsigned</b> <b>short</b>)(cb + 2); </span></p>     

     

<p class=Code><span class=Code>}</span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//     

---------------------------------------------------------------------------</span></i></span></p>     

     

<p class=Code><span class=Code>&nbsp; </span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// =====================================================================</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Function:&nbsp;&nbsp;&nbsp; CreatePIDL()</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Synopsis:&nbsp;&nbsp;&nbsp; Uses the shell allocator to allocate a block of memory</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of a given size, then returns a pointer to this memory</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>// Parameters: unsigned short size -- bytes of memory     

to allocate</span></i></span></p>     

     

<p class=Code><span class=Code><i><span Class=CodeBlue>//     

=====================================================================</span></i></span></p>     

     

<p class=Code><span class=Code>&nbsp; </span></p>     

     

<p class=Code><span class=Code>LPITEMIDLIST     

CreatePIDL(<b>unsigned</b> <b     

style='mso-bidi-font-weight:normal'>short</b> size) </span></p>     

     

<p class=Code><span class=Code>{</span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;LPITEMIDLIST lpidlResult; </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;LPMALLOC lpMalloc; </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;<b> if</b>     

(SUCCEEDED(SHGetMalloc(&amp;lpMalloc))) </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;{ </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;&nbsp;&nbsp;lpidlResult = (LPITEMIDLIST)lpMalloc-&gt;Alloc(size); </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;&nbsp;&nbsp;<b> if</b>     

(lpidlResult) </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;&nbsp;&nbsp;ZeroMemory(lpidlResult, <b     

style='mso-bidi-font-weight:normal'>sizeof</b>(size)); </span></p>     

     

<p class=Code><span class=Code>&nbsp;&nbsp;&nbsp;&nbsp;lpMalloc-&gt;Release();</span></p>     

⌨️ 快捷键说明

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