青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

道。道。道

安全特性不等于安全的特性

   :: 首頁 :: 聯系 :: 聚合  :: 管理

常用鏈接

搜索

  •  

最新評論

        在定義函數時,一直以來都是手工加入函數注釋,雖然每個函數的注釋內容并不是太多,但總是會有很多重復性的工作,哎。這兩天有點時間看看有什么方法了,昨天發現原來 Vistual Studio 2005里有個宏IDE工具可以實現我的目的(嘿嘿見笑,怎么早沒發現),研究一下了...,暈死是Basic語言,還好要實現我的功能不需要學習Basic太多的東西,簡單看一下基本的語法,開始動手試試吧。

使用方法:
        在VS2005IDE的宏資源管理器中新建一個宏項目,然后編輯,添加下面的Basic代碼保存,就可以使用了。

        首先將文本光標移到 InitInstance 函數所在的行上,然后雙擊運行宏資源管理器中的MakeFunctionRemark,這時在代碼窗口中就可以自動創建該函數的基本注釋內容(函數名稱和參數等),效果下圖


有個情況是我沒去解決的(解析麻煩點),返回值部分。哪位有興趣自己改吧。我只是在這里將不是返回值說明的(CALLBACK)手工刪除處理。還有就是函數的聲明只能在一行完成,該版本不支持分行聲明。





'
'
 Copyright(C) 2007,松鼠網絡工作室 保留所有權利。( All rights reserved. )
'
 
'
 文件名稱:DescriptionModule
'
 摘    要:
'
       FileDescription     - 生成文件說明注釋
'
       FunctionRemark      - 生成函數說明注釋
'
       MakeFunctionRemark  - 根據函數聲明生成注釋
'
 當前版本:1.0
'
 作    者:松鼠
'
 創建日期:2007年7月15日
'

Option Strict Off
Option Explicit Off
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics

Public Module DescriptionModule
    
' --------------------------------------------------
    ' 生成文件說明注釋
    ' --------------------------------------------------
    Sub FileDescription()
        
Dim gAuthor As String = "松鼠"
        
Dim gCompany As String = "松鼠網絡工作室"

        
Dim outTextDoc As TextDocument
        
Dim outText As EditPoint

        DTE.ActiveDocument.Selection.GotoLine(
1)
        outTextDoc 
= DTE.ActiveDocument.Object("TextDocument")
        outText 
= outTextDoc.StartPoint.CreateEditPoint()
        outText.Insert(
"/*" + vbCrLf)
        outText.Insert(
" * Copyright(C) " + Date.Today.Year.ToString() + "," + gCompany + " 保留所有權利。( All rights reserved. )" + vbCrLf)
        outText.Insert(
" * " + vbCrLf)
        outText.Insert(
" * 文件名稱:" + DTE.ActiveDocument.Name + vbCrLf)
        outText.Insert(
" * 摘    要:" + vbCrLf)
        outText.Insert(
" * 當前版本:1.0" + vbCrLf)
        outText.Insert(
" * 作    者:" + gAuthor + vbCrLf)
        outText.Insert(
" * 創建日期:" + Date.Today.ToLongDateString() + vbCrLf)
        outText.Insert(
" */" + vbCrLf)
        DTE.ActiveDocument.Selection.GotoLine(
10)
    
End Sub
    
' --------------------------------------------------
    ' 生成函數說明注釋
    ' --------------------------------------------------
    Sub FunctionRemark()
        
Dim preSpaceCount As Integer = 0   ' 注釋前面的空格數, 縮進(單位:字符)
        Dim outTextDoc As TextDocument
        
Dim outText As EditPoint
        
Dim iCurrentLineNumber As Integer

        iCurrentLineNumber 
= DTE.ActiveDocument.Selection.CurrentLine '.ToString()
        outTextDoc = DTE.ActiveDocument.Object("TextDocument")
        outText 
= outTextDoc.StartPoint.CreateEditPoint()
        
' 移動文本輸入點到指定行上
        outText.MoveToLineAndOffset(iCurrentLineNumber, 1)
        
Dim strSpace As String = ""
        
Dim iSpaceIndex As Integer
        
For iSpaceIndex = 1 To preSpaceCount
            strSpace 
= strSpace + " "
        
Next
        outText.Insert(strSpace 
+ "//-----------------------------------------------------------" + vbCrLf)
        outText.Insert(strSpace 
+ "// 函數名稱:" + vbCrLf)
        outText.Insert(strSpace 
+ "//     " + vbCrLf)
        outText.Insert(strSpace 
+ "// 參數:" + vbCrLf)
        outText.Insert(strSpace 
+ "//    - " + vbCrLf)
        outText.Insert(strSpace 
+ "// 返回:" + vbCrLf)
        outText.Insert(strSpace 
+ "//     " + vbCrLf)
        outText.Insert(strSpace 
+ "// 說明:" + vbCrLf)
        outText.Insert(strSpace 
+ "//     " + vbCrLf)
        outText.Insert(strSpace 
+ "//-----------------------------------------------------------" + vbCrLf)
    
End Sub
    
' --------------------------------------------------
    '
    ' 函數注釋解析部分
    '
    ' --------------------------------------------------
    Public Structure ITEMDATA
        
Public itemType As Integer
        
Public itemText As String
    
End Structure
    
Public lItemList As New System.Collections.Generic.List(Of ITEMDATA)(4)
    
Private Function ParseFunctionDescription(ByVal funText As StringAs Boolean
        
Dim strItem As String
        
Dim idata As ITEMDATA
        
Dim strSplit As String() = funText.Split("(")

        
If strSplit.Length = 1 Then
            
Return False
        
End If

        
'解析函數名稱部分
        If strSplit.Length > 2 Then
            strItem 
= strSplit(strSplit.Length - 2).Trim()
        
Else
            strItem 
= strSplit(0).Trim()
        
End If
        
Dim strHeadSplit As String() = strItem.Split(" ")
        strItem 
= strHeadSplit(strHeadSplit.Length - 1).Trim()
        idata.itemType 
= 1
        idata.itemText 
= strItem.Trim()
        lItemList.Add(idata)

        
'解析參數部分
        strItem = strSplit(strSplit.Length - 1).Trim()
        
If strItem.Substring(01<> ")" Then
            
Dim iend As Integer = strItem.IndexOf(")"0)
            
Dim strParams As String = strItem.Substring(0, iend).Trim()
            
Dim strParamSplit As String() = strParams.Split(",")
            
For Each strItem In strParamSplit
                idata.itemType 
= 2
                idata.itemText 
= strItem.Trim()
                lItemList.Add(idata)
            
Next strItem
        
Else
            idata.itemType 
= 2
            idata.itemText 
= "無參數"
            lItemList.Add(idata)
        
End If
        
'解析返回值類型
        Dim iIndex As Integer
        
For iIndex = 0 To strHeadSplit.Length - 2
            idata.itemType 
= 3
            idata.itemText 
= strHeadSplit(iIndex).Trim()
            lItemList.Add(idata)
        
Next iIndex
        
Return True
    
End Function
    
' --------------------------------------------------
    '
    ' 根據函數聲明生成注釋
    '
    ' --------------------------------------------------
    Sub MakeFunctionRemark()
        
Dim preSpaceCount As Integer = 0   ' 注釋前面的空格數, 縮進(單位:字符)
        Dim outTextDoc As TextDocument
        
Dim outText As EditPoint
        
Dim iCurrentLineNumber As Integer
        
Dim iLineLength As Integer
        
Dim strFunText As String
        
Dim iItemIndex As Integer
        
Dim idata As ITEMDATA

        lItemList.Clear()

        iCurrentLineNumber 
= DTE.ActiveDocument.Selection.CurrentLine.ToString()
        outTextDoc 
= DTE.ActiveDocument.Object("TextDocument")
        outText 
= outTextDoc.StartPoint.CreateEditPoint()
        
' 移動文本輸入點到指定行上
        outText.MoveToLineAndOffset(iCurrentLineNumber, 1)
        iLineLength 
= outText.LineLength
        strFunText 
= outText.GetText(iLineLength)
        iLineLength 
= strFunText.Trim().Length
        
'但前行沒有內容直接返回
        If iLineLength = 0 Then
            
Return
        
End If

        
' 解析函數名稱
        Dim bResult As Boolean = ParseFunctionDescription(strFunText.Trim())
        
If bResult = False Then
            lItemList.Clear()
            
Return
        
End If

        
Dim pcount As Integer = 0
        
Dim rcount As Integer = 0
        
Dim strSpace As String = ""
        
Dim iSpaceIndex As Integer
        
For iSpaceIndex = 1 To preSpaceCount
            strSpace 
= strSpace + " "
        
Next
        outText.Insert(strSpace 
+ "//-----------------------------------------------------------" + vbCrLf)
        
For iItemIndex = 0 To lItemList.Count - 1
            idata 
= lItemList.Item(iItemIndex)
            
Select Case idata.itemType
                
Case 1
                    outText.Insert(strSpace 
+ "// 函數名稱:" + vbCrLf)
                    outText.Insert(strSpace 
+ "//     " + idata.itemText + vbCrLf)
                
Case 2
                    
If pcount = 0 Then
                        outText.Insert(strSpace 
+ "// 參數:" + vbCrLf)
                    
End If
                    pcount 
= pcount + 1
                    outText.Insert(strSpace 
+ "//    - " + idata.itemText + vbCrLf)
                
Case 3
                    
If rcount = 0 Then
                        outText.Insert(strSpace 
+ "// 返回:" + vbCrLf)
                    
End If
                    rcount 
= rcount + 1
                    outText.Insert(strSpace 
+ "//     " + idata.itemText + vbCrLf)
                
Case 4
                
Case 5
            
End Select
        
Next
        outText.Insert(strSpace 
+ "// 說明:" + vbCrLf)
        outText.Insert(strSpace 
+ "//     " + vbCrLf)
        outText.Insert(strSpace 
+ "//-----------------------------------------------------------" + vbCrLf)
        lItemList.Clear()   
'清楚所有元素
    End Sub
End Module


另外兩個函數使用方法同上
FileDescription     - 生成文件說明注釋


FunctionRemark      - 生成函數說明注釋(空注釋)


如果要修改注釋前面縮進空格,可以修改Basic代碼中的 preSpaceCount  變量值。

在VS2005(VC++)下測試通過, 沒用過其他版本的開發工具(未驗證),初次寫Basic代碼,有不對的地方還請見諒!
看了MSDN中對宏的介紹,功能確實很爽,有時間再研究研究了。。。。


posted on 2007-07-15 22:47 獨孤九劍 閱讀(4337) 評論(0)  編輯 收藏 引用 所屬分類: Visual C++ 8.0
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美aaa级| 日韩亚洲在线| 久久男人av资源网站| 中文日韩电影网站| 亚洲乱码国产乱码精品精天堂| 久久精品国产77777蜜臀| 欧美一二三区在线观看| 久久精品噜噜噜成人av农村| 免费高清在线一区| 亚洲第一区色| 久久九九99| 久久综合九色综合欧美就去吻| 欧美gay视频激情| 亚洲国产日韩欧美在线图片| 亚洲美洲欧洲综合国产一区| 午夜精品免费| 美女露胸一区二区三区| 欧美另类高清视频在线| 国产精品午夜视频| 激情成人av| 国产美女精品免费电影| 国产无一区二区| 亚洲国产你懂的| 亚洲一区二区黄| 快she精品国产999| 亚洲欧洲在线一区| 校园激情久久| 欧美理论电影在线播放| 黑人巨大精品欧美黑白配亚洲| 亚洲激情第一区| 欧美在线亚洲综合一区| 亚洲欧洲日韩在线| 久久综合伊人77777蜜臀| 国产精品久久久久久久久免费| 黄色综合网站| 午夜视频一区在线观看| 欧美激情四色| 久久亚洲欧美| 国内精品免费在线观看| 亚洲一区二区三区在线视频| 欧美韩日高清| 久久久噜噜噜久久人人看| 欧美新色视频| 一区二区三区四区精品| 欧美国产日韩一二三区| 久久精品一区二区三区不卡| 国产精品三级久久久久久电影| 9i看片成人免费高清| 欧美激情第9页| 久久亚洲美女| 亚洲国产裸拍裸体视频在线观看乱了中文 | 模特精品裸拍一区| 亚洲在线观看免费视频| 欧美性猛交xxxx乱大交退制版| 亚洲毛片在线免费观看| 欧美成人免费在线| 久久影视精品| 亚洲第一视频网站| 蜜桃av久久久亚洲精品| 久久久久久久网站| 在线电影院国产精品| 久久久精品国产一区二区三区 | 久久成人一区二区| 亚洲欧美日韩综合aⅴ视频| 国产精品色午夜在线观看| 亚洲欧美激情精品一区二区| 中文一区二区| 国产欧美一区视频| 久久激情综合| 久久久精品性| 91久久线看在观草草青青| 亚洲高清在线播放| 亚洲理论电影网| 欧美精品日韩一本| 亚洲欧洲精品成人久久奇米网| 免费看成人av| 免费亚洲一区| av成人手机在线| 99精品久久| 国产欧美一区二区三区在线看蜜臀| 久久精品一区二区| 久久影视精品| 亚洲主播在线观看| 欧美一区二区三区免费看 | 久久成人资源| 亚洲国产精品久久精品怡红院| 欧美激情第10页| 欧美日韩调教| 久久av一区| 久久中文精品| 亚洲一二三级电影| 久久精品成人欧美大片古装| 亚洲看片网站| 欧美一二三视频| 亚洲理论在线| 欧美一区免费视频| 亚洲美女诱惑| 欧美一区二区在线看| 亚洲美女电影在线| 欧美亚洲视频在线观看| 亚洲美女区一区| 欧美专区福利在线| 一区二区日韩精品| 久久久国产午夜精品| 亚洲图片激情小说| 久久嫩草精品久久久久| 亚洲欧美资源在线| 欧美精品www| 免费国产一区二区| 国产欧美日韩另类一区| 亚洲麻豆视频| 亚洲全部视频| 久久久噜噜噜久噜久久| 久久国产主播精品| 国产精品xnxxcom| 亚洲国产综合在线| 亚洲第一中文字幕| 欧美一级黄色录像| 亚洲综合色婷婷| 欧美极品aⅴ影院| 米奇777超碰欧美日韩亚洲| 国产精品揄拍一区二区| 妖精成人www高清在线观看| 亚洲精品在线免费观看视频| 欧美一级淫片播放口| 午夜一级久久| 国产精品va在线播放| 亚洲精品视频在线看| 亚洲欧洲视频在线| 久久尤物视频| 欧美激情亚洲激情| 亚洲欧洲另类| 欧美电影免费观看网站| 亚洲国产精品视频| 亚洲国产婷婷香蕉久久久久久99| 国产精品一二三视频| 亚洲精品一区二区三区在线观看 | 欧美福利视频在线观看| 欧美成va人片在线观看| 一区二区视频免费完整版观看| 欧美在线啊v| 久久久久五月天| 激情综合亚洲| 麻豆国产精品一区二区三区| 欧美gay视频激情| 亚洲国产精品久久久久| 欧美18av| 日韩视频不卡| 亚洲欧美日韩在线综合| 国产精品丝袜白浆摸在线| 亚洲婷婷综合色高清在线| 亚洲欧美日韩国产成人| 国产精一区二区三区| 久久精品国产亚洲精品| 欧美11—12娇小xxxx| 亚洲精品资源美女情侣酒店| 欧美天天在线| 久久国产精品亚洲77777| 欧美 日韩 国产 一区| 一区二区三区视频观看| 国产日韩亚洲欧美精品| 久久综合免费视频影院| 日韩午夜激情| 久久久久久国产精品一区| 亚洲激情视频| 国产精品久久久久久久久久久久久久 | 免费观看成人www动漫视频| 亚洲最新在线| 国产午夜精品在线| 欧美成人精品1314www| 在线亚洲精品| 免费毛片一区二区三区久久久| 亚洲色无码播放| 激情五月婷婷综合| 欧美日韩一本到| 久久久久久欧美| 宅男噜噜噜66国产日韩在线观看| 久久婷婷av| 亚洲女同同性videoxma| 亚洲电影在线观看| 国产精品区一区二区三区| 美女黄毛**国产精品啪啪| 日韩一级成人av| 欧美国产日韩精品| 久久亚洲欧美| 亚洲欧美春色| 夜夜爽av福利精品导航| 国内精品久久久久久久影视蜜臀 | 欧美 日韩 国产精品免费观看| 亚洲视频免费观看| 欧美激情一区二区| 久久久人人人| 香蕉成人久久| 一本久久综合亚洲鲁鲁| 伊人色综合久久天天| 国产精品夜夜嗨| 欧美午夜精品久久久久久超碰| 欧美成人tv| 久久综合色8888| 久久久久国产精品www|