VC++實現撥號上網程式 (轉)
VC++實現撥號上網
在2000中,就介面豐富程度而論,以56個工具欄(Toolbar)、50個彈出式選單(Popup Menu)雄居首位,但(工具欄40個、彈出式選單51個)和(工具欄43個、彈出式選單25個)也相差不遠。大多數使用者可能從來沒有見過所有這些工具欄,甚至許多使用者不知道Office提供了這麼多命令工具。
雖然我們可以用【檢視/工具欄】選單隱藏或顯示一些工具欄,但這個選單並沒有列出全部的工具欄。對於Word,從【工具/自定義】選單可以看到的工具欄稍微多幾個,但仍遠遠不到56個。在Excel和PowerPoint也類似。那麼,這些丟失的工具欄到哪裡去了呢?如何才能看到這些工具欄?如何將這些工具欄顯示到選單中?
一、工具欄背後的工具欄
Office工具欄上的相當一部分按鈕是所謂的下拉式按鈕。單擊這些下拉按鈕會顯示出子選單。其中一部分子選單比較特殊,上面帶有灰色的橫條(稱之為″移動把手”)。例如Word【格式】工具欄的【字型顏色】按鈕,單擊它的小箭頭並把滑鼠移到移動把手上,灰條顏色變藍並提示″拖動可使此選單浮動”。按住移動把手可把選單從工具欄拖下來,使之浮動,如圖1所示。
一旦選單拖下來成為浮動的工具欄,【檢視/工具欄】選單下會自動列出該工具欄;如果關閉該工具欄,則選單下面的名字也不見了。因此,如果要再次顯示這個工具欄,還是要重複原來的拖動過程。
二、用宏顯示隱藏工具欄
大多數可以拖下來的選單與畫圖或顏色功能相關,而且要從【繪圖】工具欄訪問。下表給出其中一部分工具欄的標題及其名字:
名字
標題
Fill Color
填充顏色
Line Color
線條顏色
Font Color
字型顏色
Shading Color
底紋色
Borders
邊框
在宏中,可以透過名字訪問這些選單,或將這些選單顯示為浮動工具欄。例如,要顯示【字型顏色】工具欄,可以用如下命令:
Commanars(″Font Color″).Visible = True
再舉一個例子。如果經常要為Word文件加上彩色標註,則最好能訪問【字型顏色】、【線條顏色】、【填充顏色】和【標註】四個工具欄。可以寫一個子過程:
Sub ShowCalloutToolbars(OnOrOff As Boolean)
CommandBars(″Callouts″).Visible = OnOrOff
CommandBars(″Font Color″).Visible = OnOrOff
CommandBars(″Line Color″).Visible = OnOrOff
CommandBars(″Fill Color″).Visible = OnOrOff
End Sub
然後用如下兩個命令分別顯示和隱藏上述四個工具欄:
ShowCalloutToolbars True
ShowCalloutToolbars False
當然,用宏來顯示或關閉某些隱藏工具欄,在許多其他情形下也是很有幫助的,這些應用場合就有待讀者自己去發現了。
三、在選單中列出隱藏工具欄
如前所述,【檢視/工具欄】選單是不顯示隱藏工具欄的,也不存在定製該選單加入額外工具欄的方法,但這並不是說我們不能將這些工具欄顯示在自己建立的選單中。接下來介紹的方法可以在【檢視/工具欄】選單下面加上一個【隱藏工具欄】選單。圖2顯示的是Word中的【隱藏工具欄】選單,在其他Office應用中也相似。
首先我們需要一個宏AutoExec,該宏在Word啟動的時候自動執行,AddHiddenToolBarsOption,後者在檢視選單的【工具欄】下面增加 【隱藏工具欄】 選單。AutoExit在Word關閉的時候執行,呼叫RemoveHiddenToolBarsOption,刪除【隱藏工具欄】選單。
Sub AutoExec()
CustomizationContext = NormalTemplate
AddHiddenToolBarsOption
End Sub
Sub AutoExit()
CustomizationContext = NormalTemplate
RemoveHiddenToolBarsOption
End Sub
Sub AddHiddenToolBarsOption()
' 在檢視選單的'工具欄'下面增加'隱藏工具欄'選單項
RemoveHiddenToolBarsOption
With CommandBars(″View″)
With .Controls.Add(Type:=msoControl彈出式, _
Before:=.Controls(″工具欄(&T)″).Index + 1)
.Caption = ″隱藏工具欄(&H)″
.OnAction = ″ListHiddenToolbars″
End With
End With
End Sub
Sub RemoveHiddenToolBarsOption()
On Error Resume Next
CommandBars(″View″).Controls(″隱藏工具欄(&H)″).Delete
End Sub
ListHiddenToolbars在使用者單擊【隱藏工具欄】的時候執行,它的任務是:找出未在【檢視/工具欄】選單列出的工具欄,用這些工具欄的標題構造【隱藏工具欄】的子選單。
Sub ListHiddenToolbars()
Dim ExistingBars As String
Dim TBar As CommandBar
Dim Ctl As CommandBarControl
Dim HiddenBarList As CommandBarControl
Set HiddenBarList = CommandBars.ActionControl
那麼,它是如何得知哪一個工具欄該顯示或隱藏呢?首先,對於已經顯示在【檢視/工具欄】下的工具欄,ListHiddenToolbars用如下程式碼生成一個標題列表:
With CommandBars(″View″).Controls(″工具欄(&T)″)
For i = 1 To .Controls.Count - 1
ExistingBars = ExistingBars & _
.Controls(i).Caption & vbCr
Next
End With
' 清空新建立的子選單
For Each Ctl In HiddenBarList.Controls
Ctl.Delete
Next
在這個For迴圈中,程式遍歷【檢視/工具欄】選單,在ExistingBars變數中儲存所有已顯示工具欄標題,各標題之間以vbCr分隔。(可以用其他字元分隔,但用vbCr有利於。)以後程式就可以利用ExistingBars來避免工具欄重複顯示了。
接下來的是下面這個Fox迴圈:
For Each TBar In CommandBars
If TBar.BuiltIn = True And _
TBar.Type = msoBarTypeNormal And
TBar.Enabled = True And _
TBar.Visible = False And _
InStr(ExistingBars, TBar.NameLocal & vbCr) = 0 Then
With HiddenBarList.Controls.Add
.Caption = Replace(TBar.NameLocal, ″&″, ″&&″)
.Parameter = TBar.Name
.OnAction = ″DisplayToolbar″
End With
End If
Next
' 加入'自定義'命令
With HiddenBarList.Controls.Add(ID:=797)
.BeginGroup = True
End With
End Sub
這個For迴圈的任務是:遍歷整個CommandBars集合,對於每一個CommandBar:
1. 檢查BuiltIn屬性是否為True,以排除所有自定義工具欄。
2. 檢查Type屬性是否為msoBarTypeNormal(即0),以排除選單條(Menu Bar)、彈出式選單,確保只顯示那些″真正的”工具欄。
3. Enabled屬性值也必須為True,以保證只顯示那些可用的選單。例如不在全屏顯示方式下時,【關閉全屏顯示】工具欄是不應該顯示的。
4. 一些工具欄,如【功能鍵展示】,即使它是可見的,其名字也不會顯示在【檢視/工具欄】選單下,因此還必須檢查Visible屬性是否為False。
5. 最後,程式檢查工具欄標題是否出現在ExistingBars中,若出現的話,說明該工具欄標題已經顯示在【檢視/工具欄】選單下面了。
如果所有上述檢查透過,就可以在【檢視/隱藏工具欄】子選單下新增一個工具欄標題。前面程式碼中的最後一個With用於在子選單的底部加上【自定義】命令。
從【隱藏工具欄】子選單選擇一個工具欄名字時觸發DisplayToolbar過程。DisplayToolbar的功能是檢查Parameter值(ListHiddenToolbars將它設定為工具欄名字),顯示對應的工具欄。
Sub DisplayToolbar()
On Error Resume Next
With CommandBars.ActionControl
CommandBars(.Parameter).Visible = True
If Err Then
MsgBox ″不能顯示″ & .Parameter, _
vbExclamation, ″隱藏工具欄″
End If
End With
End Sub
最後,對於Excel和PowerPoint,要在【檢視】選單下顯示類似的【隱藏工具欄】選單,只需將Word中的AutoExec和AutoExit分別用下面的Auto_Open和Auto_Close替換即可:
Sub Auto_Open()
AddHiddenToolBarsOption
End Sub
Sub Auto_Close()
RemoveHiddenToolBarsOption
End Sub(浙江 俞良松)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-989045/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用VC++實現上網撥號功能 (轉)C++
- 撥號上網程式 (轉)
- VC的撥號上網程式 (轉)
- 在DELPHI程式中撥號上網 (轉)
- UNIX 系統上實現撥號(轉)
- 在應用程式中實現RAS撥號 (轉)
- 在Linux下使用ISDN撥號上網 (轉)Linux
- FreeBSD撥號網路(轉)
- VC++中實現程式互斥執行 (轉)C++
- win10撥號上網如何設定_win10設定撥號上網的步驟Win10
- 利用VC++程式設計實現程式自動啟動 (轉)C++程式設計
- J2ME和WAP網頁實現撥號功能網頁
- Linux系統下使用pppd撥號上網Linux
- pix506E撥號上網設定
- 電話撥號上網的基礎知識
- 用VC++6.0編寫撥號程式 (轉)C++
- 安裝,配置rp-pppoe撥號軟體,使adsl成功上網(轉)
- 電腦開機自動撥號上網怎麼設定?電腦自動撥號上網的設定方法步驟
- win10開機怎麼自動撥號_win10怎麼自動撥號上網Win10
- 用 Java 實現回撥例程 (轉)Java
- ADSL撥號中出現的錯誤程式碼
- linux gprs模組 sim800a 晶片 ppp撥號上網Linux晶片
- 路由器怎麼設定自動撥號上網?路由器
- Win11自動撥號的實現(教程)
- slackware-10.1 下 adsl 撥號上網的 iptables 防火牆設定(轉)防火牆
- 用VC++實現自繪按鈕控制 (轉)
- 用VC++實現不規則視窗 (轉)C++
- 在VC++ 6.0下利用訊息實現內部程式通訊 (轉)C++
- SCO Openserver 5.05撥號詳解 (轉)Server
- 在Java中實現回撥過程 (轉)Java
- 用LINUX做在一張軟盤上的撥號閘道器 (轉)Linux
- win10系統下怎麼進行寬頻撥號上網Win10
- 用VC++編寫CGI程式 (轉)C++
- 宣告函式指標並實現回撥 (轉)函式指標
- 用VC++ 6.0製作網路自動測試程式 (轉)C++
- vc++實現檔案關聯C++
- 騰達PR204寬頻連線撥號上網設定教程
- 【路由器】華為AR1220-S 配置PPPOE撥號上網路由器