Posted on 2009-12-21 21:13
lymons 閱讀(2295)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
C++ 、
工程管理 、
開(kāi)發(fā)環(huán)境
在Visual Studio定制新的注釋格式
在本文中,使用Visual Studio2003作為例子來(lái)描述宏的做成步驟。(我想在Visual Studio2005、2008中也應(yīng)該是一樣的) |
|
|
|
|
在編寫ASP代碼時(shí),可以使用單引號(hào)來(lái)注釋掉不要的代碼。在Visual Studio的IDE環(huán)境中也支持使用塊注釋的方式把一整段的代碼注釋掉。 |
|
不過(guò)有的時(shí)候,也有要求用<%' ~ %>這種注釋格式來(lái)注釋掉HTML中的代碼,但是包括Visual Studio在內(nèi)的一些流行的編輯器都不支持這種格式的注釋方式。不過(guò)還好,Visual Studio的IDE支持宏的功能,因此我們可以使用VBScript宏來(lái)定制任意格式的代碼注釋。 |
例如: |
<%' if(LengthB(frmMe.txtUserCd.value) > <%= LENGTH_USR_CD %><%'){ %>
<%' alert("使用者的ID長(zhǎng)度有誤"); %>
<%' frmMe.txtUserCd.focus(); %>
<%' return false; %>
<%' } %>
if(LengthB(frmMe.txtUserCd.value) > <%= LENMAX_USR_CD %>){
alert("使用者的ID長(zhǎng)度有誤");
frmMe.txtUserCd.focus();
return false;
}
|
在JavaScript代碼中使用<% ~ %>可以隱藏其間的代碼。因此,在網(wǎng)頁(yè)代碼中有很多的地方就存在<% ~ %>的符號(hào), |
|
|
也就是說(shuō)<% ~ %>和我們要添加的注釋<%' ~ %>格式有沖突。 |
|
|
|
其中,值得注意的地方是,這種注釋格式在每遇到一個(gè)%>符號(hào)時(shí)要新添加一個(gè)<%',而不是簡(jiǎn)單的在一行的首尾添加<%' ~ %> |
1. 打開(kāi)宏編輯器(Macros IDE) |
|
|
1.1 啟動(dòng)Visual Studio 2005之后,從主菜單中選擇: |
|
|
Tools → Macros → Macros |
|
1.2 點(diǎn)擊菜單選項(xiàng)“Macros IDE“后,Microsoft Visual Studio Marcos這個(gè)編輯器就會(huì)啟動(dòng)。 |
|
|
|
1.3 如果這是第一次編輯宏的話,此時(shí)隨著編輯器的啟動(dòng),一個(gè)叫做“My Macros“的工程自動(dòng)會(huì)被打開(kāi) |
|
|
在工程"My Macros"中應(yīng)該有兩個(gè)模塊,一個(gè)是EnvironmentEvent ,另一個(gè)是 Module1 |
|
|
|
1.4 咱們可以選擇任何一個(gè)模塊來(lái)添加宏代碼。這里我們選擇 Module1,雙擊模塊名字則進(jìn)入到編輯模式。 |
|
該模塊中只有4行代碼.每行代碼都有用,請(qǐng)不要?jiǎng)h除. |
其中,Imports EnvDTE 這句非常有用,后面用到的幾乎所有的對(duì)象都出自EnvDTE這個(gè)命名空間。 |
|
|
DTE 是Development Tools Enviroment的縮寫。 |
|
2. 在宏編輯器中寫入創(chuàng)建注釋的VBScript代碼 |
|
|
2.1 在“Public Module Module1“和“End Module“之間,寫入以下的代碼
|
|
|
首先,為了能給一段代碼添加注釋,我們要做成AddHTMLcomment()函數(shù) |

圖片中的代碼如下所示,請(qǐng)?jiān)瓨涌截惖組odule1中
Sub AddHTMLcomment()
'得到當(dāng)前文檔中被用戶選擇的代碼片斷
Dim selection As TextSelection = DTE.ActiveDocument.Selection()
'創(chuàng)建一個(gè)編輯點(diǎn),用于指示在被選擇的代碼片斷中的修改位置。類似于C語(yǔ)言中的指針
Dim start As EditPoint = selection.TopPoint.CreateEditPoint()
'得到已選擇的代碼片斷的終點(diǎn)
Dim endpt As TextPoint = selection.BottomPoint
'在當(dāng)前文檔中打開(kāi)Undo功能
DTE.UndoContext.Open("Comment Region")
Try
'在一行代碼中如果出現(xiàn)一個(gè)注釋尾"%>",則在它后面插入一個(gè)注釋頭"<%'"
Dim objMovePt As EditPoint
Do While start.FindPattern("%>", , objMovePt)
If objMovePt.GreaterThan(endpt) Then
Exit Do
End If
start.MoveToPoint(objMovePt)
start.Insert("<%'")
Loop
'在一行的行首和行尾分別插入注釋頭和注釋尾
start = selection.TopPoint.CreateEditPoint()
Do While (start.LessThan(endpt))
'在這里插入注釋頭
start.Insert("<%' ")
'在行尾插入注釋尾
start.EndOfLine()
start.Insert(" %>")
start.LineDown()
start.StartOfLine()
Loop
Finally
'If an error occured, then need to make sure that the undo context is cleaned up.
'Otherwise, the editor can be left in a perpetual undo context
DTE.UndoContext.Close()
End Try
End Sub
其中,該函數(shù)分兩個(gè)部分,第一個(gè)部分是先查找選擇的代碼片斷中是否存在注釋尾,如果 |
|
|
|
存在的話,則在它后面插入一個(gè)注釋頭。函數(shù)FindPattern是編輯點(diǎn)對(duì)象中的一個(gè)查找函數(shù)。 |
|
|
該函數(shù)有三個(gè)參數(shù):第一個(gè)是要查找的對(duì)象(一般是字符串),第三個(gè)則是如果找到該字符串, |
|
|
則指示該字符串后面的第一個(gè)字符在代碼片斷中的位置,也是一個(gè)編輯點(diǎn)對(duì)象。第二個(gè)參數(shù)我們不用關(guān)心, |
|
|
調(diào)用時(shí)什么也不寫即可。第二個(gè)部分則是遍歷每一個(gè)行,在行首和行尾插入注釋頭和注釋尾 |
|
|
|
|
|
|
|
此后,為了可以刪除代碼中的注釋, 我們要增加DelHTMLcomment()函數(shù) |
|
|
|
把下面的代碼原樣的拷貝到Module1中 |
Sub DelHTMLcomment()
Dim selection As TextSelection = DTE.ActiveDocument.Selection()
Dim start As EditPoint = selection.TopPoint.CreateEditPoint()
Dim endpt As TextPoint = selection.BottomPoint
DTE.UndoContext.Open("Comment Region")
Try
'刪除代碼中的所有注釋頭
Dim objMovePt As EditPoint
Do While start.FindPattern("<%'", , objMovePt)
If objMovePt.GreaterThan(endpt) Then
Exit Do
End If
start.Delete(3)
Loop
'只刪除行尾的注釋尾
start = selection.TopPoint.CreateEditPoint()
Do While (start.LessThan(endpt))
Dim len As Long = start.LineLength()
Dim num As Long = start.Line()
start.MoveToLineAndOffset(num, len - 2)
If start.GetText(3) <> " %>" Then
MsgBox("L" & num & "行的最后幾個(gè)字符不是 %> ,請(qǐng)按CTRL+Z恢復(fù)原來(lái)的代碼!")
Exit Do
End If
start.Delete(3)
start.LineDown()
start.StartOfLine()
Loop
Finally
'If an error occured, then need to make sure that the undo context is cleaned up.
'Otherwise, the editor can be left in a perpetual undo context
DTE.UndoContext.Close()
End Try
End Sub
|
|
該函數(shù)分兩個(gè)部分,第一個(gè)部分把代碼中的所有注釋頭全部刪掉,第二部分則是刪除注釋尾。 |
|
|
與AddHTMLcomment()相比,邏輯稍微簡(jiǎn)單一些。其中稍微值得注意的地方是,該函數(shù)對(duì)行尾有 |
|
|
特殊要求,即在行尾的最后三個(gè)字符必須是注釋尾 |
|
|
|
|
|
|
|
3. 請(qǐng)存盤后關(guān)閉宏編輯器 |
|
|
3.1 請(qǐng)按「Ctrl+S」鍵,然后從主菜單"File"中選擇"Close And Return"關(guān)閉編輯器 |

4. 打開(kāi)Visual Studio的“Macro Explorer“
4.1 在主菜單中作以下的選擇
View → Other Windows → Macros Explorer

4.2 此時(shí)、在Visual Studio IDE的右側(cè)則會(huì)出現(xiàn)Marcos Explorer樹(shù)狀列表

5. 選擇完整的一段代碼給它添加注釋以及取消注釋 |
|
|
5.1 用鼠標(biāo)選擇要添加注釋的代碼 |

5.2 雙擊Macros Explorer樹(shù)中的AddHTMLcomment項(xiàng)目即可給這段代碼添加注釋

5.3 如果想取消注釋,則雙擊Macros Explorer樹(shù)中的DelHTMLcomment項(xiàng)目即可為選擇的代碼取消所加的注釋