?? chap09.htm
字號:
<P> m_bDraw = FALSE;</P><P> m_pObj->OnMouseUp(X,Y);</P><P>}</P><P> </P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>瞧!這就是更改後的程式,是不是變得格外簡潔呢?除此之外,它最大的優點在於,無論我們日後加入了多少繪圖物件,你都不需再修改以上程式中關於繪圖物件的處理部份,只要再自行增加一個物件宣告即可。和原先</FONT><FONT SIZE=2>Borland</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>公司產品內附由</FONT><FONT SIZE=2>Object Pascal</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>修改而來的范例,它的</FONT><FONT SIZE=2>C++ </FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>血統純正多了。而且若是日後你想要將其修改成為一個物件式的繪圖系統,也只需要很簡單的修改而已。</P><P> </P><P>好吧!讓我們先檢閱現在的成果。</P><P> </P><P><IMG SRC="Image11.gif" WIDTH=459 HEIGHT=348></P><P>圖</FONT><FONT SIZE=2>XX-04 CLine</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>繪圖物件范例。</P><P><IMG SRC="Image12.gif" WIDTH=459 HEIGHT=348></P><P>圖</FONT><FONT SIZE=2>XX-05 CPolyline</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>繪圖物件范例(將程式改成</FONT><FONT SIZE=2>new CPolyline</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>)</P><P> </P></FONT><FONT SIZE=2><P>XX-04	</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>工具列(</FONT><FONT SIZE=2>ToolBar</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>)的使用</P><P> </P><P>到目前為止我們已經將所有繪圖物件定義完成,因此理論上你的程式應該可以畫出各種不同的繪圖物件了。但是前面我提到,目前我們尚未將繪圖物件的選擇功能實作出來,因此我們是以直接修改程式的方式來繪制不同的圖形。這是為了說明方便的權宜之計。</P><P> </P><P>在一般的繪圖程式中都是以工具列的方式來實作出繪圖功能的切換功能,如</FONT><FONT SIZE=2>Windows 95</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>內的小畫家即是一典型例子。因此接下來我就為你說明在</FONT><FONT SIZE=2>C++ Builder</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>中實作出工具列的方法。</P><P> </P><P><IMG SRC="Image13.gif" WIDTH=461 HEIGHT=352></P><P>圖</FONT><FONT SIZE=2>XX-06</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>小畫家使用的工具列</P><P> </P><P>在</FONT><FONT SIZE=2>C++ Builder</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>中實作工具列的方式和其他的程式如</FONT><FONT SIZE=2>Visual C++</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>,</FONT><FONT SIZE=2>Borland C++ </FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>不同。後兩者都是直接使用</FONT><FONT SIZE=2>Windows 95</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>內建的工具列型別來達到此功能。然而在</FONT><FONT SIZE=2>C++ Builder</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>中因為有一種更為簡單且直接的方式來做到,因此就不采用上述作法</FONT><FONT SIZE=2> (</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>當然</FONT><FONT SIZE=2>C++ Builder</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>也可以用</FONT><FONT SIZE=2>Windows 95</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>內建的</FONT><FONT SIZE=2>ToolBar</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>型別,只是用法較為復雜。)。</P><P> </P><P>那麼在</FONT><FONT SIZE=2>C++ Builder</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>中是如何來實作出工具列呢?說穿了其實很簡單:那就是利用</FONT><FONT SIZE=2>TPanel</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>和</FONT><FONT SIZE=2>TSpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>。</P><P> </P></FONT><FONT SIZE=2><P>CPanel</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>是一個多功能的容器元件,因此我們可以用它來做為工具列的平臺,使用</FONT><FONT SIZE=2>CPanel</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>是因為它是少數幾個可做為容器元件的元件,所以它會自動調整置於其上的軟體元件的位置,因此很適合做為放置工具列的平臺。</P><P> </P><P>注:在</FONT><FONT SIZE=2>C++ Builder</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的程式模式中大量使用</FONT><FONT SIZE=2>TPanel</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>來做為容器元件。它除了可以做為</FONT><FONT SIZE=2>ToolBar</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的平臺外,另外如狀態列</FONT><FONT SIZE=2> (StatusBar)</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>也可以用它來完成,而且它也可以用來做為畫面分割的工具,來達成在</FONT><FONT SIZE=2>MFC</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>中類似分割視窗(</FONT><FONT SIZE=2>Splitter Window</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>)效果。</P><P> </P></FONT><FONT SIZE=2><P>TSpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>快速按鈕元件在功能上本來就和工具列有幾分類似,現在我們可以將相同屬性的快速按鈕元件整合在一個</FONT><FONT SIZE=2>TPanel</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>中即可完成我們所要的工具列了。</P><P> </P><P>最後我再將工具列的作法按部就班詳述之:</P><P> </P></FONT><FONT SIZE=2><P>(1) </FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>在表格上加入</FONT><FONT SIZE=2>TPanel</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>元件。</P><OL START=2><LI>設定</FONT><FONT SIZE=2>TPanel</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的</FONT><FONT SIZE=2>Align</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>性質為</FONT><FONT SIZE=2> alTop</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>。因為我們希望工具列置於表格上方,所以將它設定為浮貼於表格的上方。如此一來當表格大小改變時,工具列的寬度為跟著改變,而高度則維持原先的高度。</LI><LI VALUE=3>將</FONT><FONT SIZE=2>TSpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>加入</FONT><FONT SIZE=2>TPanel</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>原件上。</LI></OL><P> </P><P>你可以在表格中加入多個上述的工具列,它們會依序自動排列於表格的上方,因此你不需費心去處理這些額外的動作。</P><P> </P></FONT><FONT SIZE=2><P>XX-04-01 TSpeedButton </FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>元件解析及設定</P><P> </P></FONT><FONT SIZE=2><P>ToolBar</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的幾個基本要素是:</P></FONT><FONT SIZE=2><P>(1) </FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>代表該功能的圖形。</P></FONT><FONT SIZE=2><P>(2) </FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>可依狀況切換其狀態。</P><OL START=3><LI>當使用者點取該功能時,必須執行該功能。</LI></OL><P> </P><P>我們來看看</FONT><FONT SIZE=2>TSpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>如何達到以上的要求。</P><P> </P><P>首先,</FONT><FONT SIZE=2>TSpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>具備</FONT><FONT SIZE=2>Glyph</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>性質,可以指定其圖形,所以第一個要求不成問題,再來</FONT><FONT SIZE=2>TSpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>具備以下叁種狀態:</P><P> </P><UL><LI>一般按鈕的功能。</LI><LI>可以除能</FONT><FONT SIZE=2>/</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>致能。</LI><LI>具備群組特性。(也就是說同一群組的</FONT><FONT SIZE=2>TSpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>會互相影響,因此可輕易做出互斥的功能,以繪圖程式為例,一次只能使用一種工具,因此當使用者選取工具時,除了被選取的工具之外,其他的工具應該都呈浮起狀態)</LI></UL><P> </P><P>由上可知,</FONT><FONT SIZE=2>TSpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>確實是實作</FONT><FONT SIZE=2>ToolBar</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的適當人選。</P><P> </P></FONT><FONT SIZE=2><P>XX-04-02</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>將</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>加入</FONT><FONT SIZE=2>ToolBar</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P> </P><P>依照我們先前的需求,我們需要一個可以切換繪圖工具的工具列,因此我們就照前面所說的方式來完成它。</P><P> </P><P><IMG SRC="Image14.gif" WIDTH=464 HEIGHT=35></P><P>圖</FONT><FONT SIZE=2>XX-07</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>工具列</P><P> </P><P>圖</FONT><FONT SIZE=2>XX-07</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>就是我所加入的</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>,除此之外還有幾個程序必須完成</P><UL><LI>為</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>命名。取一個有意義的名字。</LI><LI>依需要設定其高度及位置。</LI><LI>設定圖形。</LI><LI>設定</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>狀態初值。</LI><LI>設定群組特性。</LI></UL><P>◎	設定事件處理函式。</P><P> </P></FONT><FONT SIZE=2><P>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的命名原則和一般變數的命名原則相同,簡單明了就好。以本程式為例,我們就可以</FONT><FONT SIZE=2>LineButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>、</FONT><FONT SIZE=2>RectangleButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>等名字命名之。命名時只要改變</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的</FONT><FONT SIZE=2>Name</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>性質即可。</P><P> </P><P>至於設定圖形,只要先選取該</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>,然後至物件檢視器點取</FONT><FONT SIZE=2>Glyph</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>性質,然後將欲選取的點陣圖</FONT><FONT SIZE=2>Load</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>進來,即可完成設定圖形的程序了。</P><P> </P><P><IMG SRC="Image15.gif" WIDTH=294 HEIGHT=254></P><P>圖</FONT><FONT SIZE=2>XX-08 Glyph</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>圖形之選取。</P><P> </P><P>設定狀態初值:由於我們希望本程式執行的初始值是使用</FONT><FONT SIZE=2>CLine</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>元件,因此我將</FONT><FONT SIZE=2>LineButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的</FONT><FONT SIZE=2>Down</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>屬性為</FONT><FONT SIZE=2>True</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>,其馀則為</FONT><FONT SIZE=2> False</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>。</P><P><IMG SRC="Image16.gif" WIDTH=464 HEIGHT=35></P><P>圖</FONT><FONT SIZE=2>XX-09</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>選取後的狀態</P><P> </P><P>設定群組特性:群組特性是</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>用以實作出</FONT><FONT SIZE=2>ToolBar</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的重要功能之一。我們可以將一群</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>設為同一群組,如此一來在此一群組的</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>就具備了互斥特性,也就是說在任何一個</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>按下時,會導致其他的</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>浮起。此為實作</FONT><FONT SIZE=2>ToolBar</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的必備條件,而利用</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>可以輕易達成此目的。</P><P> </P><P>設定群組特性其實很簡單,只要把該群組的</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的</FONT><FONT SIZE=2>GroupIndex</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>性質設為相同數字即可,在此例中我們希望將所有繪圖工具列按鈕設為同一群組,因此我把該相關工具的</FONT><FONT SIZE=2>GroupIndex</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>性質都設為</FONT><FONT SIZE=2>1</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>。</P><P> </P><P>另外,相信你已經發現在上面的工具列中,除了前面所談到的繪圖工具之外,我還多加了兩個額外的</FONT><FONT SIZE=2>SpeedButton </FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>,它們是用來設定筆及筆刷的工具。在此例中,我們是以它來叫出另外兩個設定筆及筆刷的工具列,因此它必須具備所謂</FONT><FONT SIZE=2>Toggle On/Off</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的開關功能。也就是類似</FONT><FONT SIZE=2>CheckBox</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的功能。</P><P> </P></FONT><FONT SIZE=2><P>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>也可輕易達到以上的要求,只要設定該</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的</FONT><FONT SIZE=2>AllowAllUp</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>屬性為</FONT><FONT SIZE=2>True</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>即可以做到此功能。</P><P> </P><P>最後我們必須將設定筆及筆刷的兩個</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>,</FONT><FONT SIZE=2>PenButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>及</FONT><FONT SIZE=2>BrushButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的</FONT><FONT SIZE=2>GroupIndex</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>分別設為</FONT><FONT SIZE=2> 2</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>、</FONT><FONT SIZE=2>3</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>,如此才不會和繪圖工具的</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的群組特性相干擾。</P><P> </P></FONT><FONT SIZE=2><P>XX-05</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>工具列的事件處理函式</P><P> </P><P>完成的工具列的設定之後,接著我們要設定工具列的處理函式,由於此工具列是用來切換繪圖工具的,因此我們只要處理</FONT><FONT SIZE=2>SpeedButton</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的</FONT><FONT SIZE=2>OnClick</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>事件,再分別根據不同的事件做處理即可。</P><P> </P><P>在此例中,</FONT><FONT SIZE=2>OnClick</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>的事件處理函式其很簡單,只要刪除原來使用的繪圖工具物件,再重新啟始一個新的繪圖工具即可。</P><P> </P></FONT><FONT SIZE=2><P>//---------------------------------------------------------------------</P><P>void __fastcall TGraphEx::LineButtonClick(TObject *Sender)</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>{</P></FONT><FONT SIZE=2><P> delete m_pObj;</P><P> m_pObj = new CLine(Canvas);</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>}</P></FONT><FONT SIZE=2><P>//---------------------------------------------------------------------</P><P>void __fastcall TGraphEx::PolylineButtonClick(TObject *Sender)</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>{</P></FONT><FONT SIZE=2><P> delete m_pObj;</P><P> m_pObj = new CPolyline(Canvas);</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>}</P></FONT><FONT SIZE=2><P>//---------------------------------------------------------------------</P><P>void __fastcall TGraphEx::PolygonButtonClick(TObject *Sender)</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>{</P></FONT><FONT SIZE=2><P> delete m_pObj;</P><P> m_pObj = new CPolygon(Canvas);</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>}</P></FONT><FONT SIZE=2><P>//---------------------------------------------------------------------</P><P>void __fastcall TGraphEx::RectangleButtonClick(TObject *Sender)</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>{</P></FONT><FONT SIZE=2><P> delete m_pObj;</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>	</FONT><FONT SIZE=2> m_pObj = new CRectangle(Canvas);</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>}</P></FONT><FONT SIZE=2><P>//---------------------------------------------------------------------</P><P>void __fastcall TGraphEx::EllipseButtonClick(TObject *Sender)</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>{</P></FONT><FONT SIZE=2><P> delete m_pObj;</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>	</FONT><FONT SIZE=2> m_pObj = new CEllipse(Canvas);</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>}</P></FONT><FONT SIZE=2><P>//---------------------------------------------------------------------</P><P>void __fastcall TGraphEx::RoundRectButtonClick(TObject *Sender)</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>{</P></FONT><FONT SIZE=2><P> 	 delete m_pObj;</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>	</FONT><FONT SIZE=2> m_pObj = new CRoundRect(Canvas);</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P>}</P></FONT><FONT SIZE=2><P>//---------------------------------------------------------------------</P></FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2><P> </P><P>在完成了以上的設定之後,此程式就具備了利用繪圖工具列來切換繪圖工具的功能。</P><P><IMG SRC="Image17.gif" WIDTH=460 HEIGHT=382></P><P>圖</FONT><FONT SIZE=2>XX-10</FONT><FONT FACE="新細明體" LANG="ZH-TW" SIZE=2>具備繪圖工具列的繪圖程式范例。</P></FONT></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -