?? vctip9.html
字號(hào):
<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>中使用文件對(duì)話框會(huì)死機(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>一個(gè)大數(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>中,如何得到子窗口在主窗口中的相對(duì)坐標(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>程序能否實(shí)現(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>類名是動(dòng)態(tài)的,所以應(yīng)該不易得到。(不知是否如此?)</font> </p><p><font SIZE="+0">類名不是動(dòng)態(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>等等才會(huì)用 <font FACE="Times New Roman">AfxFrameOrView,</font></font> </p><p><font SIZE="+0">我剛用 <font FACE="Times New Roman">spy </font>看了我的一個(gè)程序,主窗口的<fontFACE="Times New Roman">Class </font>為 <font FACE="Times New Roman">Afx:b:13ce:6:3be7</font></font> </p><p><font SIZE="+0">至于如何注冊(cè)自己定義的類,我還沒(méi)有學(xué)會(huì),望高手指教。</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>一個(gè)窗口一個(gè)窗口查,不能用 <font FACE="Times New Roman">FindWindow()</font></font> </p><p><font SIZE="+0">這里我有另外一個(gè)問(wèn)題:</font> </p><p><font SIZE="+0">找到第一事例的窗口后,如何激活它,使它成為當(dāng)前窗口?</font> </p><p><font SIZE="+0">極小狀態(tài)時(shí),才能把它激活出來(lái),否則也是沒(méi)有動(dòng)靜,不知何故?</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="黑體">中使用文件對(duì)話框的求助</font></font></b> </p><p><font SIZE="+0">在<font FACE="Times New Roman">VC++2.0</font>中使用了標(biāo)準(zhǔn)文件對(duì)話框以后<fontFACE="Times New Roman">,</font>編譯聯(lián)接都能正常通過(guò),而且使用<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)入, 使用該對(duì)話框的代碼時(shí)<font FACE="Times New Roman">,Win95</font>就會(huì)異常中止<fontFACE="Times New Roman">,</font>請(qǐng)問(wèn)各位高手<font FACE="Times New Roman">,</font>為什么<fontFACE="Times New Roman">?</font></font> </p><p><font SIZE="+0">文件對(duì)話框,改變了執(zhí)行程序的當(dāng)前路徑,從而干擾了調(diào)試系統(tǒng)。如果是為了調(diào)試,可以使文件對(duì)話框定位在當(dāng)前目錄,并且運(yùn)行時(shí)不要在其中改變目錄。</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="黑體">編寫(xiě)能</font><fontFACE="Times New Roman">Edit</font><font FACE="黑體">超過(guò)</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>編寫(xiě)一個(gè) <fontFACE="Times New Roman">Editor, </font>要求能編輯超過(guò) <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>類派生出來(lái) <fontFACE="Times New Roman">, </font>但編輯超過(guò) <font FACE="Times New Roman">64K </font>的文本就顯示不出來(lái)<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)存、輸入、顯示等(其實(shí)不累)。至于從<fontFACE="Times New Roman">CEdit</font>中派生,我也沒(méi)有頭緒。</font> </p><p><font SIZE="+0"><font FACE="Times New Roman">VC2.0</font>會(huì)有這事?我沒(méi)試過(guò),但我不相信。<fontFACE="Times New Roman">VC2.0</font>是運(yùn)行在<font FACE="Times New Roman">Win95</font>或<fontFACE="Times New Roman">WindowsNT </font>上的開(kāi)發(fā)工具,是<fontFACE="Times New Roman">Win32</font>的開(kāi)發(fā)工具。<font FACE="Times New Roman">Windows 95</font>及<font FACE="Times New Roman">NT</font>對(duì)應(yīng)用程序在內(nèi)存上沒(mé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>。你所說(shuō)的限制大概是<font FACE="Times New Roman">VC1.5</font>的限制吧。蓋因<fontFACE="Times New Roman">VC1.5</font>運(yùn)行于<font FACE="Times New Roman">Win16</font>上,每個(gè)段不能超過(guò)<fontFACE="Times New Roman">64K</font>。</font> </p><p><font SIZE="+0">的確如此,<font FACE="Times New Roman">VC2.0 </font>有兩個(gè)例子 <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="黑體">一個(gè)大數(shù)組</font></font></b> </p><p><font SIZE="+0">我想在用<font FACE="Times New Roman">VC++1.5</font>編程時(shí),<fontFACE="Times New Roman">new</font>一個(gè)<font FACE="Times New Roman">[512][512]</font>的大數(shù)組,卻總是不行.</font> </p><p><font SIZE="+0">哪位專家可以指點(diǎn)一下.</font> </p><p><font SIZE="+0">選用<font FACE="Times New Roman">Larger and Huger</font>模式的庫(kù)編譯</font> </p><p><font SIZE="+0">我用過(guò)<font FACE="Times New Roman">Large</font>模式,好象不行呀!我用<fontFACE="Times New Roman">Huge</font>模式,頭文件編譯時(shí)就出錯(cuò)了!</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>位就不該有這問(wèn)題了</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>效率也會(huì)提高<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">請(qǐng)用<font FACE="Times New Roman">GlobalAllocPtr</font>和<fontFACE="Times New Roman">GlobalFreePtr</font>這一對(duì)函數(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ù)組,都保證沒(méi)有問(wèn)題。</font> </p><p><font SIZE="+0">在<font FACE="Times New Roman">VC1.5</font>中,如何得到子窗口在主窗口中的相對(duì)坐標(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>不知有沒(méi)有更方便的方法<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,
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -