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

📄 visual c++编程技巧之八.htm

📁 载之“阿蒙编程乐园”
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<P><FONT face="Times New Roman" size=+0>_T (" forest.bmp"), 
SPIF_UPDATEINIFILE);</FONT> </P>
<P><A name=tip62></A><B><FONT size=+2><FONT 
face="Times New Roman">62</FONT><FONT face=黑体>、如何使用一个预定义的</FONT><FONT 
face="Times New Roman">Windows</FONT><FONT face=黑体>光标</FONT></FONT></B> </P>
<P><FONT size=+0>调用<FONT face="Times New Roman">CWinApp:: 
LoadStandardCursor</FONT>并传送光标标识符。</FONT> </P>
<P><FONT face="Times New Roman" size=+0>BOOL CSampleDialog:: OnSetCursor (CWnd* 
pWnd, UINT nHitTest, UINT message)</FONT> </P>
<P><FONT face="Times New Roman" size=+0>{</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//Display wait cursor if busy.</FONT> 
</P>
<P><FONT face="Times New Roman" size=+0>if (m_bBusy)</FONT> </P>
<P><FONT face="Times New Roman" size=+0>{</FONT> </P>
<P><FONT face="Times New Roman" size=+0>SetCursor (AfxGetApp () 
-&gt;LoadStandardCursor (IDC_WAIT));</FONT> </P>
<P><FONT face="Times New Roman" size=+0>return TRUE;</FONT> </P>
<P><FONT face="Times New Roman" size=+0>}</FONT> </P>
<P><FONT face="Times New Roman" size=+0>return CDialog:: OnSetCursor (pWnd. 
nHitTest,message);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>}</FONT> </P>
<P><A name=tip63></A><B><FONT size=+2><FONT 
face="Times New Roman">63</FONT><FONT face=黑体>、如何确定当前屏幕分辨率</FONT></FONT></B> 
</P>
<P><FONT size=+0>调用<FONT face="Times New Roman">SDK</FONT>函数<FONT 
face="Times New Roman">GetSystemMetrics</FONT>,该函数可以检索有关<FONT 
face="Times New Roman">windows</FONT>显示信息,诸如标题大小、边界大小以及滚动条大小等等。</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//Initialize CSize object with screen 
size.</FONT> </P>
<P><FONT face="Times New Roman" size=+0>CSize sizeScreen (GetSystemMetrics 
(SM_CXSCREEN),</FONT> </P>
<P><FONT face="Times New Roman" size=+0>GetSystemMetrics (SM_CYSCREEN));</FONT> 
</P>
<P><A name=tip64></A><B><FONT size=+2><FONT 
face="Times New Roman">64</FONT><FONT face=黑体>、如何检索原先的</FONT><FONT 
face="Times New Roman">Task Manager</FONT><FONT 
face=黑体>应用程序使用的任务列表</FONT></FONT></B> </P>
<P><FONT size=+0>原先的<FONT face="Times New Roman">Task 
Manager</FONT>应用程序显示顶层窗口的列表。为了显示该列表,窗口</FONT> </P>
<P><FONT size=+0>必须可见、包含一个标题以及不能被其他窗口拥有。调用<FONT face="Times New Roman">CWnd:: 
GetWindow</FONT>可以</FONT> </P>
<P><FONT size=+0>检索顶层窗口的列表,调用<FONT 
face="Times New Roman">IsWindowVisible</FONT>、<FONT 
face="Times New Roman">GetWindowTextLength</FONT>以及<FONT 
face="Times New Roman">GetOwner</FONT></FONT> </P>
<P><FONT size=+0>可以确定窗口是否应该在列表中。下例将把<FONT 
face="Times New Roman">TaskManager</FONT>窗口的标题填充到列表中。</FONT> </P>
<P><FONT face="Times New Roman" size=+0>void GetTadkList 
(CListBox&amp;list)</FONT> </P>
<P><FONT face="Times New Roman" size=+0>{</FONT> </P>
<P><FONT face="Times New Roman" size=+0>CString strCaption; //Caption of 
window.</FONT> </P>
<P><FONT face="Times New Roman" size=+0>list.ResetContent (); //Clear list 
box.</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//Get first Window in window 
list.</FONT> </P>
<P><FONT face="Times New Roman" size=+0>ASSERT_VALID (AfxGetMainWnd ());</FONT> 
</P>
<P><FONT face="Times New Roman" size=+0>CWnd* pWnd=AfxGetMainWnd () 
-&gt;GetWindow (GW_HWNDFIRST);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//Walk window list.</FONT> </P>
<P><FONT face="Times New Roman" size=+0>while (pWnd)</FONT> </P>
<P><FONT face="Times New Roman" size=+0>{</FONT> </P>
<P><FONT face="Times New Roman" size=+0>// I window visible, has a caption, and 
does not have an owner?</FONT> </P>
<P><FONT face="Times New Roman" size=+0>if (pWnd -&gt;IsWindowVisible () 
&amp;&amp;</FONT> </P>
<P><FONT face="Times New Roman" size=+0>pWnd -&gt;GetWindowTextLength () 
&amp;&amp;! pWnd -&gt;GetOwner ())</FONT> </P>
<P><FONT face="Times New Roman" size=+0>{</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//Add caption o window to list 
box.</FONT> </P>
<P><FONT face="Times New Roman" size=+0>pWnd -&gt;GetWindowText 
(strCaption);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>list.AddString (strCaption);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>}</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//Get next window in window list.</FONT> 
</P>
<P><FONT face="Times New Roman" size=+0>pWnd=pWnd-&gt;GetWindow 
(GW_HWNDNEXT);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>}</FONT> </P>
<P><FONT face="Times New Roman" size=+0>}</FONT> </P>
<P><A name=tip65></A><B><FONT size=+2><FONT 
face="Times New Roman">65</FONT><FONT face=黑体>、如何确定</FONT><FONT 
face="Times New Roman">Windows</FONT><FONT face=黑体>和</FONT><FONT 
face="Times New Roman">Windows</FONT><FONT face=黑体>系统目录</FONT></FONT></B> </P>
<P><FONT size=+0>有两个<FONT face="Times New Roman">SDK</FONT>函数可以完成该功能。<FONT 
face="Times New Roman">GetWindowsDirectory</FONT>和<FONT 
face="Times New Roman">GetSystemDirectory</FONT>,下例说明了如何使用这两个函数:</FONT> </P>
<P><FONT face="Times New Roman" size=+0>TCHAR szDir [MAX_PATH];</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//Get the full path of the windows 
directory.</FONT> </P>
<P><FONT face="Times New Roman" size=+0>:: GetWindowsDirectory (szDir, 
MAX_PATH);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>TRACE ("Windows directory %s\n", 
szDir);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//Get the full path of the windows 
system directory.</FONT> </P>
<P><FONT face="Times New Roman" size=+0>:: GetSystemDirectory (szDir, 
MAX_PATH);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>TRACE ("Windows system directory %s\n", 
szDir);</FONT> </P>
<P><A name=tip66></A><B><FONT size=+2><FONT 
face="Times New Roman">66</FONT><FONT face=黑体>、在哪儿创建临文件</FONT></FONT></B> </P>
<P><FONT size=+0>调用<FONT face="Times New Roman">SDK</FONT>函数<FONT 
face="Times New Roman">GetTemPath</FONT>可以确定临时文件的目录,该函数首先为临时路径检测<FONT 
face="Times New Roman">TMP</FONT>环境变量:如果没有指定<FONT 
face="Times New Roman">TMP</FONT>,检测<FONT 
face="Times New Roman">TMP</FONT>环境变量,然后返回到当前目录。下例说明了如何创建一个临时文件。</FONT> </P>
<P><FONT size=+0>…</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//get unique temporary file.</FONT> </P>
<P><FONT face="Times New Roman" size=+0>CString strFile;</FONT> </P>
<P><FONT face="Times New Roman" size=+0>GetUniqueTempName (strFile);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>TRY</FONT> </P>
<P><FONT face="Times New Roman" size=+0>{</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//Create file and write data.Note that 
file is closed</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//in the destructor of the CFile 
object.</FONT> </P>
<P><FONT face="Times New Roman" size=+0>CFile file (strFile,CFile:: modeCreate | 
CFile:: modeWrite);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//write data</FONT> </P>
<P><FONT face="Times New Roman" size=+0>}</FONT> </P>
<P><FONT face="Times New Roman" size=+0>CATCH (CFileException, e)</FONT> </P>
<P><FONT face="Times New Roman" size=+0>{</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//error opening file</FONT> </P>
<P><FONT face="Times New Roman" size=+0>}</FONT> </P>
<P><FONT face="Times New Roman" size=+0>END_CATCH</FONT> </P>
<P><FONT size=+0>…</FONT> </P>
<P><FONT face="Times New Roman" size=+0>Void GetuniqueTempName (CString&amp; 
strTempName)</FONT> </P>
<P><FONT face="Times New Roman" size=+0>{</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//Get the temporary files 
directory.</FONT> </P>
<P><FONT face="Times New Roman" size=+0>TCHAR szTempPath [MAX_PATH];</FONT> </P>
<P><FONT face="Times New Roman" size=+0>DWORD dwResult=:: GetTempPath (MAX_PATH, 
szTempPath);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>ASSERT (dwResult);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//Create a unique temporary file.</FONT> 
</P>
<P><FONT face="Times New Roman" size=+0>TCHAR szTempFile [MAX_PATH];</FONT> </P>
<P><FONT face="Times New Roman" size=+0>UINT nResult=GetTempFileName 
(szTempPath, _T ("~ex"),0,szTempfile);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>ASSERT (nResult);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>strTempName=szTempFile;</FONT> </P>
<P><FONT face="Times New Roman" size=+0>}</FONT> </P>
<P><A name=tip67></A><B><FONT size=+2><FONT 
face="Times New Roman">67</FONT><FONT face=黑体>、如何访问桌面窗口</FONT></FONT></B> </P>
<P><FONT size=+0>静态函数<FONT face="Times New Roman">CWnd:: GetDesktopWindow 
</FONT>返回桌面窗口的指针。下例说明了<FONT face="Times New Roman">MFC</FONT>函数<FONT 
face="Times New Roman">CFrameWnd::BeginModalStae</FONT>是如何使用该函数进入内部窗口列表的。</FONT> 
</P>
<P><FONT face="Times New Roman" size=+0>void CFrameWnd::BeginModalState 
()</FONT> </P>
<P><FONT face="Times New Roman" size=+0>{</FONT> </P>
<P><FONT size=+0>…</FONT> </P>
<P><FONT face="Times New Roman" size=+0>//first count all windows that need to 
be disabled</FONT> </P>
<P><FONT face="Times New Roman" size=+0>UINT nCount=0;</FONT> </P>
<P><FONT face="Times New Roman" size=+0>HWND hWnd=:: GetWindow (:: 
GetDesktopWindow (), GW_CHILD);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>while (hWnd!=NULL)</FONT> </P>
<P><FONT face="Times New Roman" size=+0>{</FONT> </P>
<P><FONT face="Times New Roman" size=+0>if (:: IsWindowEnabled (hwnd) 
&amp;&amp;</FONT> </P>
<P><FONT face="Times New Roman" size=+0>CWnd::FromHandlePermanent (hWnd)!=NULL 
&amp;&amp;</FONT> </P>
<P><FONT face="Times New Roman" size=+0>AfxIsDescendant (pParent-&gt;m_hWnd, 
hWnd) &amp;&amp;</FONT> </P>
<P><FONT face="Times New Roman" size=+0>:: SendMessage (hWnd, WM_DISABLEMODAL, 
0, 0)==0)</FONT> </P>
<P><FONT face="Times New Roman" size=+0>{</FONT> </P>
<P><FONT face="Times New Roman" size=+0>++nCount;</FONT> </P>
<P><FONT face="Times New Roman" size=+0>}</FONT> </P>
<P><FONT face="Times New Roman" size=+0>hWnd=:: GetWindow (hWnd, 
GW_HWNDNEXT);</FONT> </P>
<P><FONT face="Times New Roman" size=+0>}</FONT> </P>
<P><FONT size=+0>…</FONT> </P>
<P><FONT face="Times New Roman" size=+0>}</FONT> </P>
<HR>

<P>&nbsp;<A 
href="http://www.vchome.net/tech/skill.htm">返回上页</A>&nbsp;&nbsp;&nbsp;</P></BODY></HTML>

⌨️ 快捷键说明

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