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

📄 vctip8.html

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

⌨️ 快捷键说明

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