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

道。道。道

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

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

常用鏈接

搜索

  •  

最新評論

        在定義函數時,一直以來都是手工加入函數注釋,雖然每個函數的注釋內容并不是太多,但總是會有很多重復性的工作,哎。這兩天有點時間看看有什么方法了,昨天發現原來 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 獨孤九劍 閱讀(4340) 評論(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>
            免费成年人欧美视频| 久久美女艺术照精彩视频福利播放| 蜜臀a∨国产成人精品| 欧美在线短视频| 国产一区二三区| 久久这里只有| 你懂的国产精品| 一区二区三区高清| 在线一区免费观看| 国产日韩欧美一区二区三区四区| 久久国产综合精品| 久久久久中文| 99在线|亚洲一区二区| 亚洲欧美韩国| 亚洲第一在线综合网站| 亚洲精品免费在线| 国产精品久久久亚洲一区 | 久久国产精品久久久| 伊人夜夜躁av伊人久久| 亚洲精品少妇30p| 国产一区二区av| 欧美激情一区二区久久久| 欧美日韩国产成人| 久久久国产成人精品| 欧美福利电影网| 久久久999精品视频| 欧美区在线播放| 久久久久久久综合狠狠综合| 欧美第一黄网免费网站| 亚洲免费电影在线| 欧美一区二区免费观在线| 最新精品在线| 久久大香伊蕉在人线观看热2| 夜夜嗨av一区二区三区网站四季av | 久久福利精品| 欧美国产第二页| 久久精品视频va| 欧美日韩少妇| 欧美福利一区二区| 国产精品综合久久久| 亚洲国产精品高清久久久| 国产人妖伪娘一区91| 亚洲精品乱码久久久久久蜜桃麻豆| 国产精品欧美一区二区三区奶水 | 欧美大片一区二区| 国产美女一区二区| 亚洲精品日产精品乱码不卡| 一区二区三区在线免费观看| 亚洲小视频在线观看| 日韩午夜视频在线观看| 久久精品av麻豆的观看方式| 亚洲欧美日韩视频一区| 欧美日韩国产一中文字不卡| 欧美大色视频| 黄色工厂这里只有精品| 午夜精品剧场| 亚洲欧美国产精品专区久久| 欧美福利影院| 欧美成年人网| 亚洲二区在线| 久久久久久久网站| 久久五月激情| 激情成人综合| 欧美制服丝袜第一页| 亚洲欧美激情视频| 国产精品大片免费观看| 亚洲精品乱码久久久久久按摩观 | 国产婷婷精品| 欧美影院午夜播放| 久久久国产午夜精品| 国产一区二区三区四区五区美女| 亚洲一区二区三区视频| 欧美亚洲视频在线看网址| 国产欧美精品| 久久av资源网| 亚洲成色777777女色窝| 欧美成人a∨高清免费观看| 韩国在线一区| 久久偷看各类wc女厕嘘嘘偷窃| 久久久亚洲国产天美传媒修理工 | 国产中文一区二区三区| 欧美在线播放一区| 欧美顶级少妇做爰| 亚洲精品视频免费观看| 欧美日韩三级在线| 亚洲欧美视频一区| 久热精品在线视频| 亚洲国产综合在线| 欧美午夜理伦三级在线观看| 亚洲欧美在线视频观看| 蜜臀av国产精品久久久久| 亚洲精品欧美极品| 欧美四级电影网站| 午夜免费在线观看精品视频| 美女免费视频一区| 亚洲一二三区在线观看| 国产亚洲福利一区| 欧美暴力喷水在线| 亚洲一区二区少妇| 欧美xxx在线观看| 亚洲一区二区在线看| 国内精品久久久久影院 日本资源| 久久婷婷国产综合尤物精品| 99re亚洲国产精品| 玖玖国产精品视频| 一区二区三区欧美成人| 国产一区自拍视频| 欧美日韩免费在线视频| 久久精品国产综合精品| 亚洲人成小说网站色在线| 久久国产乱子精品免费女| 91久久夜色精品国产九色| 国产精品综合久久久| 欧美成人高清| 久久国产黑丝| 一区二区三区成人| 亚洲国产高清视频| 久久午夜视频| 亚欧美中日韩视频| 一区二区三区日韩精品| 在线观看精品视频| 国内一区二区在线视频观看| 欧美午夜电影在线| 欧美区一区二| 久久躁狠狠躁夜夜爽| 先锋影音国产精品| 一本色道久久99精品综合 | 性久久久久久久久| aa亚洲婷婷| 亚洲精选大片| 亚洲国产精品久久久| 一区二区三区中文在线观看| 国产精品视频999| 欧美日韩在线视频观看| 欧美激情精品| 欧美高清视频www夜色资源网| 久久性色av| 久久先锋资源| 美女999久久久精品视频| 久久久激情视频| 久久精品国产成人| 先锋影音网一区二区| 亚洲欧美一区二区三区在线 | 欧美激情四色| 欧美国产免费| 亚洲国产精品黑人久久久| 老司机亚洲精品| 你懂的网址国产 欧美| 欧美成人免费va影院高清| 久久综合伊人77777尤物| 久久亚洲欧洲| 欧美电影免费观看网站| 欧美不卡在线视频| 欧美国产日韩一区二区在线观看| 欧美a一区二区| 91久久久亚洲精品| 99精品福利视频| 亚洲一区视频在线| 久久不见久久见免费视频1| 久久精品理论片| 欧美www在线| 欧美体内she精视频| 国产精品亚洲不卡a| 国产一区二区三区在线观看精品 | 日韩午夜视频在线观看| 亚洲一二三区在线| 久久丁香综合五月国产三级网站| 久久琪琪电影院| 亚洲国产精品t66y| 亚洲性线免费观看视频成熟| 欧美一区二区三区四区视频| 久久久久久久综合狠狠综合| 欧美成年视频| 国产精品久久影院| 伊人狠狠色j香婷婷综合| 亚洲精品一区二区三| 亚洲在线成人| 美女主播视频一区| 99热免费精品在线观看| 欧美在线视频全部完| 欧美大片第1页| 国产欧美精品在线观看| 亚洲人成在线观看网站高清| 亚洲免费在线精品一区| 男女精品视频| 亚洲欧美国产高清| 欧美成人精品在线视频| 国产精品一区二区你懂的| 亚洲国产视频直播| 欧美在线亚洲在线| 91久久精品日日躁夜夜躁欧美| 亚洲一区视频在线| 欧美精品日韩| 在线观看成人小视频| 香蕉免费一区二区三区在线观看| 亚洲高清久久久| 久久精品论坛| 国产色综合久久| 亚洲自拍偷拍视频| 亚洲精品久久久久久久久久久久久|