?? vctip9.html
字號:
<html><head><meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312"><meta NAME="GENERATOR" CONTENT="Microsoft FrontPage 3.0"><meta NAME="doccomm" CONTENT="sss"><meta NAME="Template" CONTENT="C:\MSOffice\Template\Sl_BOOK.dot"><meta NAME="Author" CONTENT="Cheng Jinxing"><title>Visual C++編程小技巧之九</title></head><body TEXT="#000000" BGCOLOR="#CCFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000"><p align="center"><br><font SIZE="+3"><font FACE="Times New Roman">Visual C++</font><font FACE="楷體_GB2312">編程小技巧之九</font></font> </p><p><font SIZE="+0"><a HREF="#tip68"><font FACE="Times New Roman">68. VC1.5</font>下如何跳到第一事例<fontFACE="Times New Roman">?</font></a></font> </p><p><font SIZE="+0"><a HREF="#tip69"><font FACE="Times New Roman">69. </font>為什么<fontFACE="Times New Roman">VC++2.0</font>中使用文件對話框會死機(jī)<fontFACE="Times New Roman">?</font></a></font> </p><p><font SIZE="+0"><a HREF="#tip70"><font FACE="Times New Roman">70. </font>在<fontFACE="Times New Roman">VC++1.5</font>中如何<font FACE="Times New Roman">new</font>一個大數(shù)組<fontFACE="Times New Roman">?</font></a></font> </p><p><font SIZE="+0"><a HREF="#tip71"><font FACE="Times New Roman">71. </font>在<fontFACE="Times New Roman">VC1.5</font>中,如何得到子窗口在主窗口中的相對坐標(biāo)?</a></font> </p><p><font SIZE="+0"><a HREF="#tip72"><font FACE="Times New Roman">72. VC1.5 </font>如何調(diào)用進(jìn)程<fontFACE="Times New Roman">?</font></a></font> </p><p><font SIZE="+0"><a HREF="#tip73"><font FACE="Times New Roman">73. VC++1.5</font>編<fontFACE="Times New Roman">Win3.1</font>程序能否實現(xiàn)全局跳轉(zhuǎn)<fontFACE="Times New Roman">?</font></a></font> </p><p><font SIZE="+0"><a HREF="#tip74"><font FACE="Times New Roman">74. </font>如何在<fontFACE="Times New Roman">DLL</font>用自定義窗口<font FACE="Times New Roman">?</font></a></font> </p><p><font SIZE="+0"><a HREF="#tip75"><font FACE="Times New Roman">75. </font>如何讓<fontFACE="Times New Roman">TOOLTIP</font>的字體變大<font FACE="Times New Roman">?</font></a></font> </p><p><font SIZE="+0"> </font> </p><p><a NAME="tip68"></a><b><font SIZE="+2"><font FACE="Times New Roman">68.VC1.5</font><fontFACE="黑體">下如何跳到第一事例</font><font FACE="Times New Roman">?</font></font></b> </p><p><font SIZE="+0">各位大蝦<font FACE="Times New Roman">: CWinApp::InitInstance()</font>中可知是第二事例<fontFACE="Times New Roman">,</font>但如何在<font FACE="Times New Roman">return FALSE;</font></font> </p><p><font SIZE="+0">之前<font FACE="Times New Roman">FindWindow()</font>到第一事例呢<fontFACE="Times New Roman">? </font>主要困難是<font FACE="Times New Roman">:</font></font> </p><p><font SIZE="+0"><font FACE="Times New Roman">1).</font>主窗口類名可否得到 <fontFACE="Times New Roman">( </font>主窗口<font FACE="Times New Roman">==MainFrame ? </font>若是<fontFACE="Times New Roman">,</font>怎知<font FACE="Times New Roman">MainFrame</font>類名<fontFACE="Times New Roman">?</font></font> </p><p><font SIZE="+0"><font FACE="Times New Roman">2).Title</font>因含有文檔名<fontFACE="Times New Roman">, </font>是一不確定串<font FACE="Times New Roman">.</font></font> </p><p><font SIZE="+0"><font FACE="Times New Roman">1. </font>類名是動態(tài)的,所以應(yīng)該不易得到。(不知是否如此?)</font> </p><p><font SIZE="+0">類名不是動態(tài)的,如果不作處理, <fontFACE="Times New Roman">MFC </font>總是使用 <font FACE="Times New Roman">AfxFrameOrView </font>為類名,</font> </p><p><font SIZE="+0">只有 <font FACE="Times New Roman">MainFrame, </font>和 <fontFACE="Times New Roman">View </font>等等才會用 <font FACE="Times New Roman">AfxFrameOrView,</font></font> </p><p><font SIZE="+0">我剛用 <font FACE="Times New Roman">spy </font>看了我的一個程序,主窗口的<fontFACE="Times New Roman">Class </font>為 <font FACE="Times New Roman">Afx:b:13ce:6:3be7</font></font> </p><p><font SIZE="+0">至于如何注冊自己定義的類,我還沒有學(xué)會,望高手指教。</font> </p><p><font SIZE="+0" FACE="Times New Roman">AfxRegisterWndClass()</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">2. </font>我用的方法是只查<fontFACE="Times New Roman">Title</font>中前半部分和你的要求串一致即可,忽略后面的文檔<fontFACE="Times New Roman">?</font></font> </p><p><font SIZE="+0"><font FACE="Times New Roman">FindWindow() </font>函數(shù)需要給定窗口類名和窗口標(biāo)題(<fontFACE="Times New Roman">Title</font>),不知你是怎樣做到只查前半部分的?</font> </p><p><font SIZE="+0">用<font FACE="Times New Roman">EnumWindows()</font>一個窗口一個窗口查,不能用 <font FACE="Times New Roman">FindWindow()</font></font> </p><p><font SIZE="+0">這里我有另外一個問題:</font> </p><p><font SIZE="+0">找到第一事例的窗口后,如何激活它,使它成為當(dāng)前窗口?</font> </p><p><font SIZE="+0">極小狀態(tài)時,才能把它激活出來,否則也是沒有動靜,不知何故?</font> </p><p><font SIZE="+0" FACE="Times New Roman">if (IsIconic(hwndMain))</font> </p><p><font SIZE="+0" FACE="Times New Roman">ShowWindow(hwndMain, SW_RESTORE);</font> </p><p><font SIZE="+0" FACE="Times New Roman">else</font> </p><p><font SIZE="+0" FACE="Times New Roman">SetActiveWindow(hwndMain);</font> </p><p><font SIZE="+0"> </font> </p><p><a NAME="tip69"></a><b><font SIZE="+2"><font FACE="黑體">69.關(guān)于</font><fontFACE="Times New Roman">VC++2.0</font><font FACE="黑體">中使用文件對話框的求助</font></font></b> </p><p><font SIZE="+0">在<font FACE="Times New Roman">VC++2.0</font>中使用了標(biāo)準(zhǔn)文件對話框以后<fontFACE="Times New Roman">,</font>編譯聯(lián)接都能正常通過,而且使用<fontFACE="Times New Roman">Ctrl+F5</font>執(zhí)行<font FACE="Times New Roman">EXE</font>文件也完全正常<fontFACE="Times New Roman">,</font>但是一旦用<font FACE="Times New Roman">F5</font>調(diào)試進(jìn)入, 使用該對話框的代碼時<font FACE="Times New Roman">,Win95</font>就會異常中止<fontFACE="Times New Roman">,</font>請問各位高手<font FACE="Times New Roman">,</font>為什么<fontFACE="Times New Roman">?</font></font> </p><p><font SIZE="+0">文件對話框,改變了執(zhí)行程序的當(dāng)前路徑,從而干擾了調(diào)試系統(tǒng)。如果是為了調(diào)試,可以使文件對話框定位在當(dāng)前目錄,并且運(yùn)行時不要在其中改變目錄。</font> </p><p><font SIZE="+0"> </font> </p><p><a NAME="tip70"></a><b><font SIZE="+2"><font FACE="黑體">70.如何用</font><fontFACE="Times New Roman">VC2.0</font><font FACE="黑體">編寫能</font><fontFACE="Times New Roman">Edit</font><font FACE="黑體">超過</font><fontFACE="Times New Roman">64K</font><font FACE="黑體">的類</font></font></b> </p><p><font SIZE="+0">我要用 <font FACE="Times New Roman">VC2.0 </font>編寫一個 <fontFACE="Times New Roman">Editor, </font>要求能編輯超過 <font FACE="Times New Roman">64K </font>的文本<font FACE="Times New Roman">.</font>我的 <font FACE="Times New Roman">Edit </font>類從 <font FACE="Times New Roman">CEdit </font>類派生出來 <fontFACE="Times New Roman">, </font>但編輯超過 <font FACE="Times New Roman">64K </font>的文本就顯示不出來<fontFACE="Times New Roman">. </font>原知道在 <font FACE="Times New Roman">VC1.5 </font>中 <font FACE="Times New Roman">CEdit </font>類只能編輯小于 <fontFACE="Times New Roman">64K </font>的文本<font FACE="Times New Roman">,</font>不知 <fontFACE="Times New Roman">VC2.0 </font>是否也一樣<font FACE="Times New Roman">?</font></font> </p><p><font SIZE="+0" FACE="Times New Roman">.</font> </p><p><font SIZE="+0">自己從<font FACE="Times New Roman">CWnd</font>類派生,管理內(nèi)存、輸入、顯示等(其實不累)。至于從<fontFACE="Times New Roman">CEdit</font>中派生,我也沒有頭緒。</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">VC2.0</font>會有這事?我沒試過,但我不相信。<fontFACE="Times New Roman">VC2.0</font>是運(yùn)行在<font FACE="Times New Roman">Win95</font>或<fontFACE="Times New Roman">WindowsNT </font>上的開發(fā)工具,是<fontFACE="Times New Roman">Win32</font>的開發(fā)工具。<font FACE="Times New Roman">Windows 95</font>及<font FACE="Times New Roman">NT</font>對應(yīng)用程序在內(nèi)存上沒有段的限制,應(yīng)用程序最多可利用高達(dá)<fontFACE="Times New Roman">4G</font>的內(nèi)存<font FACE="Times New Roman">(</font>包括系統(tǒng)占用<fontFACE="Times New Roman">)</font>。你所說的限制大概是<font FACE="Times New Roman">VC1.5</font>的限制吧。蓋因<fontFACE="Times New Roman">VC1.5</font>運(yùn)行于<font FACE="Times New Roman">Win16</font>上,每個段不能超過<fontFACE="Times New Roman">64K</font>。</font> </p><p><font SIZE="+0">的確如此,<font FACE="Times New Roman">VC2.0 </font>有兩個例子 <font FACE="Times New Roman">samples\mfc\multipad </font>和 <font FACE="Times New Roman">samples\mfc\superpad </font>也是如此。不信你看看。</font> </p><p><font SIZE="+0"> </font> </p><p><a NAME="tip71"></a><b><font SIZE="+2"><font FACE="黑體">71.在</font><fontFACE="Times New Roman">VC++1.5</font><font FACE="黑體">中如何</font><fontFACE="Times New Roman">new</font><font FACE="黑體">一個大數(shù)組</font></font></b> </p><p><font SIZE="+0">我想在用<font FACE="Times New Roman">VC++1.5</font>編程時,<fontFACE="Times New Roman">new</font>一個<font FACE="Times New Roman">[512][512]</font>的大數(shù)組,卻總是不行.</font> </p><p><font SIZE="+0">哪位專家可以指點一下.</font> </p><p><font SIZE="+0">選用<font FACE="Times New Roman">Larger and Huger</font>模式的庫編譯</font> </p><p><font SIZE="+0">我用過<font FACE="Times New Roman">Large</font>模式,好象不行呀!我用<fontFACE="Times New Roman">Huge</font>模式,頭文件編譯時就出錯了!</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">VC++ 1.5 </font>畢竟是<fontFACE="Times New Roman">16</font>的<font FACE="Times New Roman">, 512*512 </font>是多少?做鏈表好了否則就用<fontFACE="Times New Roman">VC++2.0, </font>全<font FACE="Times New Roman">32</font>位就不該有這問題了</font> </p><p><font SIZE="+0">這樣的做法并不十分好<font FACE="Times New Roman">,</font>要分配如此大的內(nèi)存最好用全局的內(nèi)存分配函數(shù)<fontFACE="Times New Roman">.</font>直接用指針操作<font FACE="Times New Roman">,</font>效率也會提高<fontFACE="Times New Roman">.</font></font> </p><p><font SIZE="+0">用<font FACE="Times New Roman">MFC</font>類不行嗎<fontFACE="Times New Roman">?</font>如<font FACE="Times New Roman">CObArray</font></font> </p><p><font SIZE="+0">請用<font FACE="Times New Roman">GlobalAllocPtr</font>和<fontFACE="Times New Roman">GlobalFreePtr</font>這一對函數(shù),如下:</font> </p><p><font SIZE="+0" FACE="Times New Roman">DWORD dwSize ;;</font> </p><p><font SIZE="+0" FACE="Times New Roman">hpsStr =(char huge *)GlobalAllocPtr( GMEM_MOVEABLE , dwSize ) ;</font> </p><p><font SIZE="+0" FACE="Times New Roman">...</font> </p><p><font SIZE="+0" FACE="Times New Roman">GlobalFreePtr( hpsStr ) ;</font> </p><p><font SIZE="+0">不管多大數(shù)組,都保證沒有問題。</font> </p><p><font SIZE="+0">在<font FACE="Times New Roman">VC1.5</font>中,如何得到子窗口在主窗口中的相對坐標(biāo)?</font> </p><p><font SIZE="+0">比較笨的方法是先<font FACE="Times New Roman">ClientToScreen</font>轉(zhuǎn)成屏幕坐標(biāo)<fontFACE="Times New Roman">,</font>然后<font FACE="Times New Roman">ScreenToClient</font>轉(zhuǎn)成主窗口坐標(biāo)<fontFACE="Times New Roman">,</font>不知有沒有更方便的方法<fontFACE="Times New Roman">.</font></font> </p><p><font SIZE="+0"><font FACE="Times New Roman">MapWindowPoints(hwndChild, hwndParent, (POINT FAR *)lprc, 2)lprc </font>設(shè)成子窗口內(nèi)的坐標(biāo)<font FACE="Times New Roman">(0,0,
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -