[C++]Trucs et astuces pour Visual C++ 6

Trucs et astuces pour Visual C++ 6 [C++] - C++ - Programmation

Marsh Posté le 04-06-2002 à 11:38:35    

J'ai regroupé ici toutes ces petites choses si pratiques à savoir, mais pas forcément évidentes à trouver.
Excusez l'écriture parfois simpliste, j'ai essayé d'être concis pour garder le document court.
Contactez-moi pour toute erreur, remarque ou ajout.
Téléchargeable au format rtf zippé: http://musaran.free.fr/cpp/Trucs_VC6.zip
 
Quelques raccourcis:
souris
On peut glisser/déposer le texte sélectionné.
-Ctrl (maintenu)   =copier au lieu de déplacer.
-Alt (maintenu)    =sélection d'un rectangle de texte (reste un rectangle quand collé).
-Clic dans la marge=sélection de lignes.
-Double-clic       =sélection de mot.
 
déplacement
-Home/End          =aller en début/fin de texte de ligne (répéter Home pour aller en début de ligne, +Ctrl=début/fin de fichier).
-Ctrl+Gauche/Droite=aller de mot en mot.
-Ctrl+E            =aller à l'accolade/parenthèse/crochet apparié.
-Ctrl+J/K          =aller au #if #ifdef #ifndef #else #endif précédent/suivant.
-Ctrl+Shift+F8     =sélection d'un rectangle de texte au curseur.
+Shift             =sélectionner en déplaçant le curseur avec n?importe laquelle des commandes précédentes.
 
navigation
-Ctrl+F3           =occurrence suivante du mot courant (+Shift=précédent).
-Ctrl+F2           =mettre/enlever un marque-page (+Shift=tout enlever).
-F2                =aller au marque-page suivant (+Shift=précédent).
-F4 ou double-clic =lignes mentionnées dans la fenêtre output (erreurs ou "Find in Files" ) (+Shift=précédent).
 
édition
-Ctrl+L            =couper ligne(s).
-Ctrl+Shift+T      =permute deux mots.
-Alt+Shift+T       =permute deux lignes.
-Ins               =permute les mode insertion/refrappe de texte.
-Alt+F8            =indente correctement la sélection.
-Tab               =augmente l'indentation des lignes sélectionnées (+Shift=diminue).
-Ctrl+U            =mettre en minuscules (+Shift=majuscules).
-Ctrl+Backspace    =effacer le mot devant.
-Ctrl+Del          =effacer le mot derrière.
 
renseignements
-F1                =aide sur le mot ou le n° d'erreur de compilation sous le curseur.
-F12               =trouver la définition du nom.
-Ctrl+* (pavé num) =revenir à la position d'origine.
-Alt+F12           =renseignements généraux sur le mot.
-Ctrl+Shift+Espace =affiche le prototype de la fonction (définie) en cours (Ctrl+PgUp/PgDown si plusieurs).
-Ctrl+T            =information sur le type (normalement automatique).
-Ctrl+Espace       =complétion automatique.
-Alt+Ctrl+T        =lister membres (normalement automatique), ou tout si au niveau global.
 
compilation
-Alt+F10           =appliquer changement de code sans sortir du débogueur.
-Ctrl+F7           =compiler le source actuel seulement (fichier *.OBJ). C?est plus rapide.
 
autres
-Esc               =masquer la fenêtre output (elle revient toute seule si elle change).
-Ctrl+I            =commencer une recherche incrémentielle (taper les premières lettres).
 
 
Complétion automatique:
C'est la liste qui surgit quand on tape . , :: , -> ou Ctrl+Espace.
Elle complète ce que l'on a commencé à taper, ou propose la liste des éléments pouvant correspondre.
Taper la suite, ou sélectionner un élément avec haut/bas, puis taper un séparateur quelconque (espace, parenthèse ...) ou tabulation, et le nom est retapé en entier (avec correction majuscule/minuscule).
Pour en bénéficier avec les constructeurs, utiliser la syntaxe Classe::Classe( .
 
Le message d'aide visible dans cette liste, c'est les lignes de commentaires placées immédiatement à coté (//) ou au-dessus (plusieurs lignes, // ou /*...*/) de la déclaration ou de la définition.
Cela ne marche qu'avec les éléments globaux (variables, structures/classes, patrons, fonctions).
Exemple:

Code :
  1. /*Contient les coordonnées d'un point
  2. Les mesures sont des entiers*/
  3. struct Point
  4. { int x ;//abscisse
  5. int y ;//ordonnée
  6. };


Divers
Si vous avez appelé l'aide par F1, cliquez sur le bouton sommaire (ou localiser) de la barre d'outils (pas l'onglet) pour voir dans quelle rubrique vous êtes.
 
La coloration syntaxique de base peut être enrichie : Menu "Tool/Option", onglet "Format", cadre "Colors", sélectionner "Number", "String" puis "Operator" et leur choisir une couleur "Foreground". Je propose respectivement bordeaux, gris foncé et rouge vif.
"Category: Source Windows" permet de choisir la police du code. Celles en gras sont recommandées (espacement fixe). "Lucida Console" dispose de petites tailles.
 
Les menus contextuels sont présents un peu partout, même dans le code. Ils s?appellent avec le clic doit.
-Sur une directive #include, propose d?ouvrir le fichier.
-Sur un nom, propose d?aller à sa déclaration/définition.
 
 
Quelques macros bien pratiques:
Menu "Tools/Macro", choisir "Macro File: SAMPLE".
-"ToggleCommentStyle" change une suite de commentaires // en /*...*/ et inversement.
-"AutoCompleteFromFile" complète un nom s'il se trouve déjà dans le fichier édité.
-Pour créer votre macro, taper un nom, choisir "Edit" et insérer des commandes texte
Exemple:

'DESCRIPTION: Écrit un en-tête pour les sources sous Visual C++.
 ActiveDocument.Selection.StartOfDocument
 ActiveDocument.Selection = "//Fait par: Votre nom"
 ActiveDocument.Selection.NewLine
 ActiveDocument.Selection = "//le      :"
 ActiveDocument.Selection =Date
 ActiveDocument.Selection = ", "
 ActiveDocument.Selection =Time
 ActiveDocument.Selection.NewLine
 ActiveDocument.Selection = "//à       : Votre lieu de travail"
 ActiveDocument.Selection.NewLine


 
Pour composer sa barre d'outils:
On peut déplacer un outil en maintenant Alt enfoncé (Ctrl pour copier).
Déplacer hors de toute barre pour supprimer.
La barre de menu est une barre d'outils, on peut l'éditer.
Ouvrir menu "Tools/Customize" ou menu contextuel sur une barre puis "Customize" permet :
-De déplacer un outil ou article de menu existant directement (Ctrl pour copier).
-D?utiliser une macro en bouton/menu:
-activer le fichier macro dans l'onglet "Add-ins and Macro Files"
-dans l'onglet "Commands" choisir "Category: Macro", faire glisser une commande dans la barre d'outils.
 
 
Pré processeur
Pour pré compiler seulement, aller dans le menu "Project/Settings" puis onglet "C/C++", zone "Project Options" et rajouter au texte "/P" ou "/E" ou "/PE". Cela permet de vérifier si l'expansion des macros est correcte.
P: génère un fichier *.i dans le répertoire du projet (c'est du texte).
E: affiche dans la fenêtre output (attention au gros includes, genre windows.h).
 
 
Compilateur
Dans les options menu "Project/Settings", onglet "C/C++", catégorie "Customize", les cases à cocher :
-"Disable language extensions" permet de désactiver les spécificités Microsoft pour être sûr de faire du code conforme au standard ANSI.
-"Enable incremental compilation" permet de recompiler plus vite, mais génère de plus gros fichiers.
Le menu "Build/Rebuild All" permet de reconstruire tous les fichiers temporaires. Indispensable en cas de problèmes de temps système, de date de modification de fichiers, ou d?incohérence de compilation.
Ne pas oublier pas que les modes "Debug" et "Release" ont des options indépendantes.
 
 
Éditeur de liens
Pour changer le type d'un projet, aller dans le menu "Project/Settings", onglet "Link", zone "Project Options" et changer "/subsytem:" entre "console" et "windows".
 
 
Déboguage
Les options menu "Project/Settings", onglet "Debug", zones "Program arguments:" et "Working Directory:" permettent de spécifier le répertoire de travail et les arguments de l?exécutable.
 
Instructions de déboguage (ces instructions ne font rien en mode Release)
avec MFC (#include <afxwin.h> ):
TRACE(); //comme printf, mais s'affiche dans la fenêtre output en debug (go, F5)
ASSERT(); //suspend l'exécution si l'expression est fausse (0)
VERIFY(); //comme ASSERT, mais l'expression sera calculée en mode release également.
DEBUG_ONLY(); //auto informant, non ?
 
autres:
assert (); //ANSI (#include <assert.h> )
_ASSERT(); //#include <crtdbg.h>
 
Points d'arrêt
F9 pose/enlève un point d'arrêt. Lancée avec "Go", l'exécution s'y arrêtera. Ils peuvent être placés dans le code source, le code assembleur et la pile d?appel.
Le menu "Edit/Breakpoints" permet de:
-créer/éditer/déplacer/modifier les points d'arrêts.
-poser une condition à un arrêt existant.
-poser un arrêt conditionnel sur tout le source (pour une variable locale, préciser la fonction).
-poser un arrêt sur un message Windows.
 
Mode déboguage
On peut avancer jusqu'à n'importe quel point en y plaçant le curseur et en choisissant menu "Debug/Run to Cursor" (Ctrl+F10).
Placer le pointeur de souris sur une variable indique immédiatement sa valeur.
La fenêtre "Variables" (menu "View/Debug Windows" ) permet de voir et changer les valeurs des variables en cours.
La fenêtre "Call Stack" (menu "View/Debug Windows" ) permet, après un échec d'assertion, de remonter à la fonction appelante.
La fenêtre "Watch" (menu "View/Debug Windows" ) permet :
-D?y glisser une expression depuis le code.
-De connaître le type d?une variable. L?y sélectionner et appeler le menu contextuel et "Properties" (Alt+Entrée).
-De changer la valeur d?une variable facilement. Mettre comme nom var=valeur. La valeur sera affectée à var à chaque activation de l?onglet.
-De choisir le format d'affichage des valeurs. Il faut ajouter au nom "," et :

f   float
 c   caractère
 s   chaîne
 us  chaîne unicode
 wm  message windows
 l,h préfixe long/short pour les suivants :
 d,i décimal signé
 u   décimal non signé
 o   octal non signé
 x,X hexa
 Il y en a d'autres à la rubrique "Symbols for Watch Variables" dans la MSDN.


Quelques includes pratiques
#include <limits.h> //valeurs min/max des types de base. Ex: INT_MAX est le maximum d?un int.
#include <limits> //idem en C++. Ex: numeric_limits<int>::max est le maximum d?un int.
 
 
Quelques constantes symboliques prédéfinies
ANSI
__STDC__      C standard
NDEBUG        Not Debug
 
ANSI (chaînes entre "" )
__FILE__      Nom du fichier compilé
__TIMESTAMP__ Moment de la dernière modification du fichier
__LINE__      N° de ligne courante du fichier
__DATE__      Date courante
__TIME__      Heure courante
 
spécifique Microsoft
_MSC_VER      Version du compilateur Microsoft
__cplusplus   Source C++
_DLL          Contexte Mutithread (avec DLL)
_MT           Contexte Mutithread
_WIN32        Contexte Windows 32 bits
_CPPRTTI      Informations de type à l?exécution activées
_CPPUNWIND    Gestion des exceptions activé
_UNICODE      Définir pour unicode (wide-character)
_MBCS         Définir pour multibyte-character
_DEBUG        Mode debug


Message édité par Musaran le 03-07-2002 à 04:27:02

---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 04-06-2002 à 11:38:35   

Reply

Marsh Posté le 03-07-2002 à 04:29:42    

-Nouvelle version.
-Fichier téléchargeable.
 
Ça ne déchaîne pas les passions... peut-être que peu d'entre-vous utlisent VC++ 6 ?
Pour ma part, je commence à comprendre les problèmes qu'ils pose.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 03-07-2002 à 08:57:05    

tu devrais poster l'adresse de ton topic dans le bibliolink c++, histoire que tout le monde puisse le retrouver facilement, si besoin.

Reply

Marsh Posté le 03-07-2002 à 13:46:36    

si quelqu'un connait autant de trucs et astuces pour delphi ça m'intéresse!!  :D  

Reply

Marsh Posté le 03-07-2002 à 23:50:05    

prettysmile: Je conaissait pas, merci.
 
L'éternelle quête de la bonne info parmi le brouaha généralisé continue!


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 04-07-2002 à 00:51:26    

musaran  tres bonne initiativ mais bon l'environnement VC++ ne fait pas le poid face a un emacs  :(  
(surtout le mien avec la puissance jacky inside :lol: :lol:)  
 
que je le regrete celui la quand je suis sous visual  :sweat:  
mais bon tes petit astuce me font retrouver 2/3 bonne choses de emacs et me serront bien utiles  :hello:


Message édité par koulip31 le 04-07-2002 à 00:51:54

---------------
télétunestel ouimélétuness sitélétunes mélétunetron [:koulip31] [:suri]
Reply

Marsh Posté le 04-07-2002 à 10:38:21    

bheu des mac ca fait de frissons dans le dos  ;)

Reply

Marsh Posté le 04-07-2002 à 12:22:04    

Je ne sais pas si tu la mis, mais la combinaison ctrl+shift+F9 permet d'enlever tous les breakpoints en un coup, assez pratique.

Reply

Marsh Posté le 04-07-2002 à 23:03:59    

Voila mon fichier de macros VC. Mais bientot je pourrais le mettre a la poubelle car je suis en train d'ecrire un systeme d'extension en python a VC :-)
 
 
 
Sub SomeLineUp()
'DESCRIPTION: Move some lines up
 on error resume next
 ActiveDocument.Selection.LineUp dsMove,5
End Sub
 
Sub SomeLineDown()
'DESCRIPTION: Move some lines down
 on error resume next
 ActiveDocument.Selection.LineDown dsMove, 5
End Sub
 
Sub CleanBuild()
'DESCRIPTION: Enleve tous les fichiers intermediaires puis build le projet
 
Clean ActiveConfiguration
Build
 
End Sub
 
Sub VireInutile()
'DESCRIPTION: Enleve les espaces en fin de ligne
 
'Par le pouvoir de la Reg-Exp !!! Je reclame le Replace tout puissant !!!
curr_ligne = ActiveDocument.Selection.CurrentLine
curr_col = ActiveDocument.Selection.CurrentColumn
ActiveDocument.Selection.SelectAll
ActiveDocument.Selection.ReplaceText "\:b*$", "", dsMatchRegExp
ActiveDocument.Selection.MoveTo curr_ligne, curr_col
End Sub
 
Sub OemToANSI()
'DESCRIPTION: Convertit un texte OEM en ANSI
 
curr_ligne = ActiveDocument.Selection.CurrentLine
curr_col = ActiveDocument.Selection.CurrentColumn
ActiveDocument.Selection.SelectAll
ActiveDocument.Selection.ReplaceText chr(130), "é"
ActiveDocument.Selection.ReplaceText chr(138), "è"
ActiveDocument.Selection.ReplaceText chr(147), "ô"
ActiveDocument.Selection.ReplaceText chr(136), "ê"
ActiveDocument.Selection.ReplaceText chr(133), "à"
ActiveDocument.Selection.ReplaceText chr(131), "â"
ActiveDocument.Selection.ReplaceText chr(248), "°"
ActiveDocument.Selection.ReplaceText chr(196), "-"
ActiveDocument.Selection.MoveTo curr_ligne, curr_col
End Sub
 
 
Dim clipboard(64)
Dim cliplines
cliplines=-1
clipboard(0) = ""
 
Sub StackClipboardCut()
'DESCRIPTION: Performs a cut of current selection into LIFO stack
     if(cliplines<63) then
      cliplines=cliplines+1
      clipboard(cliplines)=ActiveDocument.Selection.Text
      ActiveDocument.Selection.Text=""
     end if
End Sub
 
Sub StackClipboardCopy()
'DESCRIPTION: Performs a copy of current selection into LIFO stack
     if(cliplines<63) then
      cliplines=cliplines+1
      clipboard(cliplines)=ActiveDocument.Selection.Text
     end if
End Sub
 
Sub StackClipboardPaste()
'DESCRIPTION: Performs a paste of top LIFO stack entry into current selection
     if(cliplines>-1) then
      ActiveDocument.Selection=clipboard(cliplines)
   cliplines=cliplines-1
  else
   ActiveDocument.Selection=clipboard(0)
     end if
End Sub
 
Sub InverseAffect()
'DESCRIPTION: Inverse les membres gauche et droite d'affectation ( selectionner les affectations )
 
 ActiveDocument.Selection.ReplaceText _
 "\([^  ]*\)\:b*=\:b*\([^  ;]*\)", "\2 = \1", dsMatchRegExp
 '"\(\:i\)\:b*=\:b*\(\:i\)", "\2 = \1", dsMatchRegExp _
 
End Sub
 
Sub InsereLigne()
'DESCRIPTION: Insere au debut de chaque ligne de la selection un texte
if ActiveDocument.Selection.TopLine = ActiveDocument.Selection.BottomLine then
 exit sub
end if
 
curr_ligne = ActiveDocument.Selection.CurrentLine
curr_col = ActiveDocument.Selection.CurrentColumn
 
texte = inputbox("Quel texte voulez vous ajoutez au debut de chaque ligne de la selection ?", "Ajout d'un texte en debut de lignes" )
if Len(texte)=0 then
 exit sub
end if
ActiveDocument.Selection.ReplaceText "^",texte, dsMatchRegExp
 
ActiveDocument.Selection.MoveTo curr_ligne, curr_col
End Sub
 
Sub CommenteBloc()
'DESCRIPTION: Commente une selection
curr_ligne = ActiveDocument.Selection.CurrentLine
curr_col = ActiveDocument.Selection.CurrentColumn
 
ActiveDocument.Selection.ReplaceText "^\:b*//\:b*","", dsMatchRegExp
ActiveDocument.Selection.ReplaceText "^","//", dsMatchRegExp
 
ActiveDocument.Selection.MoveTo curr_ligne, curr_col
End Sub
 
Sub LignesNumerotees()
'DESCRIPTION: Ecris une suite de lignes numerotees
curr_ligne = ActiveDocument.Selection.CurrentLine
curr_col = ActiveDocument.Selection.CurrentColumn
 
tmp = InputBox("Combien de lignes voulez-vous creer ?", "Entree de lignes" )
if Len(tmp)=0 then
 exit sub
end if
 
cnt = InputBox("Combien de textes par ligne ? (au moins 1)", "Entree de lignes" )
if (cnt<1) then
 Msgbox cnt + " n'est pas une valeur valide ! Reessayez !"
 exit sub
end if
 
NbLignes = CInt(tmp)
texte = InputBox("Quel texte voulez-vous entrer ?", "Entree de lignes" )
 
ActiveDocument.Selection.MoveTo curr_ligne, curr_col
Ajout = ""
for Cpt1 = 0 to NbLignes
' ActiveDocument.Selection.Text = texte + CStr(Cpt1) + "," + chr(13)
 if (Cpt1<10) then
  autre = " "
 else
  autre = ""
 end if
 if ((Cpt1+1) mod Cnt) <> 0 then
  Ajout = Ajout + texte + CStr(Cpt1) + ", " + autre
 else
  Ajout = Ajout + texte + CStr(Cpt1) + "," + autre + chr(13)
 end if
next
 
ActiveDocument.Selection.Text = Ajout
ActiveDocument.Selection.MoveTo curr_ligne, curr_col
 
End Sub
 
 
 
 
Sub Indentator()
'DESCRIPTION: Indentator, il va tout vous indenter !!!
 
curr_ligne = ActiveDocument.Selection.CurrentLine
curr_col = ActiveDocument.Selection.CurrentColumn
if (ActiveDocument.Selection.BottomLine=ActiveDocument.Selection.TopLine) then
 ActiveDocument.Selection.SelectAll
end if
premier = ActiveDocument.Selection.TopLine
max_ligne = ActiveDocument.Selection.BottomLine
 
Application.visible = false
ActiveDocument.Selection.MoveTo 0,0
for Cpt1=premier to max_ligne
 ActiveDocument.Selection.MoveTo Cpt1, 1
 ActiveDocument.Selection.SmartFormat
 ActiveDocument.Selection.LineDown
next
Application.visible = true
 
ActiveDocument.Selection.MoveTo curr_ligne, curr_col
End Sub
 
 
 
' This will assisgn resource ID's to the selected block by starting  
' with the resource ID given and then incrementing until the end of  
' the selection is reaced.
' (Uncomment the commented lines to process only sourcecode files)
 
Sub AssignResourceIDToSelection()
 
     msg = InputBox ("Enter The resource ID to start From:" )
 
'    TypeOfFile = FileType(ActiveDocument)
 
'    if TypeOfFile <> dsCPP   Then
'         MsgBox "File Must be of type .c, .cpp, .cxx, .h, .hpp, .hxx"
'    Else
          If msg <> "" Then
               If IsNumeric(msg) Then
                    nCurResourceID = Int(msg)
                    AssignGivenResourceIDToSelection(nCurResourceID)
               End If
          Else
               MsgBox "You MUST enter a resource ID, Aborting"
          End If
'    End if
End Sub
 
 
'This function can be integrated with other macros to
'automate the renumbering of resource ID's
 
Function AssignGivenResourceIDToSelection (ByVal nCurResourceID)
 
     nStartLine = ActiveDocument.Selection.TopLine
     nEndLine = ActiveDocument.Selection.BottomLine
 
     ' Debugging messageBox
     ' MsgBox "Start:" + CStr(nStartLine) + " End:" + + CStr(nEndLine)
     For i = nStartLine To nEndLine
          ActiveDocument.Selection.GoToLine i
          ActiveDocument.Selection.FindText "#define", dsMatchForward
          If ActiveDocument.Selection.CurrentLine = i Then
               ' Debugging messageBox
               ' MsgBox "Ext:" + CStr(ActiveDocument.Selection.CurrentLine)
               ActiveDocument.Selection.EndOfLine
               ActiveDocument.Selection.WordLeft dsExtend
               ActiveDocument.Selection = nCurResourceID
               nCurResourceID = nCurResourceID + 1
          End if
     Next
 
End Function
 
Sub DocumentName()
'DESCRIPTION: Affiche le nom d'un document
 
 msgbox Application.ActiveDocument.FullName
End Sub
 
Sub TrueFalse()
'DESCRIPTION: A description was not provided.
 Application.visible = false
 windows.CloseAll
 
 Documents.Open ActiveProject.FullName, "Text"
 ActiveDocument.Selection.MoveTo 1,1
 line = 0
 do while(ActiveDocument.Selection.FindText("SOURCE=.*\{\.h\!\.c\!\.cpp\}$", dsMatchRegExp)=true)
  if (line>=ActiveDocument.Selection.CurrentLine) then
   exit do
  end if
  TrueFalseFile(ActiveDocument.Selection.Text)
  line = ActiveDocument.Selection.CurrentLine
 Loop
 ActiveDocument.Close
 Application.visible = true
 MsgBox "BOOL, TRUE et FALSE, mis a jour !"
End Sub
 
sub TrueFalseFile(filename)
 filename = mid(filename, 8) ' vire SOURCE=
 Documents.Open filename
 ActiveDocument.Selection.SelectAll
 ActiveDocument.Selection.ReplaceText "true", "TRUE", dsMatchWord
 ActiveDocument.Selection.SelectAll
 ActiveDocument.Selection.ReplaceText "false", "FALSE", dsMatchWord
 ActiveDocument.Selection.SelectAll
 ActiveDocument.Selection.ReplaceText "bool", "BOOL", dsMatchWord
 ActiveDocument.Close
 
end sub
 
Sub MyNextLine()
'DESCRIPTION: A description was not provided.
 ActiveDocument.Selection.SmartFormat
 ActiveDocument.Selection.LineDown
End Sub
 
Sub MyPreviousLine()
'DESCRIPTION: A description was not provided.
 ActiveDocument.Selection.SmartFormat
 ActiveDocument.Selection.LineUp
End Sub
 
Sub OuvreSourcesDuProjet()
'DESCRIPTION: Ouvre tous les fichiers sources d'un projet
 windows.CloseAll
 
 Documents.Open ActiveProject.FullName, "Text"
 set dsp = ActiveDocument
 dsp.Selection.MoveTo 1,1
 line = 0
 do while(dsp.Selection.FindText("SOURCE=.*\{\.h\!\.c\!\.cpp\}$", dsMatchRegExp)=true)
  if (line>=dsp.Selection.CurrentLine) then
   exit do
  end if
  Documents.Open mid(dsp.Selection.Text, 8)
  line = dsp.Selection.CurrentLine
 Loop
 dsp.close
End Sub
 
Sub superif()
'DESCRIPTION: Insere un "if"
 ActiveDocument.Selection.Text = "if (){" + chr(13) + "}"
 ActiveDocument.Selection.MoveTo ActiveDocument.Selection.CurrentLine-1, 1, dsExtend
 ActiveDocument.Selection.SmartFormat
 ActiveDocument.Selection.FindText "("
 ActiveDocument.Selection.MoveTo ActiveDocument.Selection.CurrentLine, ActiveDocument.Selection.CurrentColumn
 ActiveDocument.Selection.SmartFormat
End Sub  
 
private function CompteLignesDeCodeInFile(filename)
 length = 0
 Documents.Open filename
 ActiveDocument.Selection.SelectAll
 length = ActiveDocument.Selection.BottomLine
 ActiveDocument.Close
 CompteLignesDeCodeInFile = length
end function
 
Sub EnterBug()
'DESCRIPTION: "Solve" the ENTER-bug !
 
 ActiveDocument.Selection.Text = chr(13)
End Sub
 
Sub FabOneTimeInclude()
'DESCRIPTION: Include a header ONE time
 On Error Resume Next
 
 dim name
 name = ActiveDocument.Name
 if Right(name, 2) <> ".h" then
  exit sub
 end if
 
 curr_ligne = ActiveDocument.Selection.CurrentLine
 curr_col = ActiveDocument.Selection.CurrentColumn
 
 ActiveDocument.Selection.StartOfDocument
 dim Id
 Id = "__" + UCase(Left(name, Len(name)-2)) + "_H__"
 ActiveDocument.Selection.Text = "#ifndef " + Id + chr(13) _
  + "#define " + Id + chr(13) + chr(13)
 
 ActiveDocument.Selection.EndOfDocument
 ActiveDocument.Selection.Text = chr(13) + chr(13) + "#endif // " + Id
 
 ActiveDocument.Selection.MoveTo curr_ligne + 3, curr_col  
End Sub
 
Sub RemoveFalseTab()
'DESCRIPTION: A description was not provided.
 
 curr_ligne = ActiveDocument.Selection.CurrentLine
 curr_col = ActiveDocument.Selection.CurrentColumn-1
 
    if curr_col=0 then exit sub
 
    char_left = curr_col mod 4
    if char_left=0 then char_left=4
    PrintToOutputWindow char_left
 
 ActiveDocument.Selection.MoveTo curr_ligne, curr_col-char_left+1, dsExtend
 
 ActiveDocument.Selection.Text = RTrim(ActiveDocument.Selection.Text)
 
End Sub
 
Private sub DoMakeBuildDate()
 ActiveProject.AddFile "buildate.h"
 DoBeforeBuildStart()
end sub
 
sub MakeBuildDate()
 On Error Resume Next
 DoMakeBuildDate()
end sub
 
 
 
Private sub DoBeforeBuildStart()
 Documents.Open "buildate.h"
 ActiveDocument.Selection = "#define BUILD_DATE "
 ActiveDocument.Save()
 FabOneTimeInclude()
end sub
 
sub dummyApplication_BeforeBuildStart()
 On Error Resume Next
 DoBeforeBuildStart()
end sub
 
 
private Sub DoSelLen()
 msgbox len(ActiveDocument.Selection), vbOKOnly+vbInformation, "Selection len"
end sub
 
Sub SelLen()
 'DESCRIPTION: A description was not provided.
 on error resume next
 DoSelLen()  
End Sub
 
start = 0
 
sub Application_BeforeBuildStart()
 start = Now
end sub
 
sub Application_BuildFinish(nNumErrors, nNumWarnings)
 t = DateDiff("s", start, Now)
 sss = int(t mod 60)
 mmm = int((t/60) mod 60)
 hhh = int(t/3600)
 res = "Build done in "  
 if hhh>0 then
  res = res & cstr(hhh) & "h " & cstr(mmm) & "mn " & cstr(sss) & "s"
 else
  if mmm>0 then
   res = res & cstr(mmm) & "mn " & cstr(sss) & "s"
  else
   res = res & cstr(sss) & "s"
  end if
 end if
 PrintToOutputWindow res
end sub
 
Sub ToggleSource()
'DESCRIPTION: toggle between .h and .cpp
 
 filename = None
 
 if lcase(right(ActiveDocument.Name, 2))=".h" then
  'on error resume next
  filename = left(ActiveDocument.FullName, len(ActiveDocument.FullName)-2)+".cpp"
  Documents.Open(filename)
 elseif lcase(right(ActiveDocument.Name, 4))=".cpp" then
  'on error resume next
  filename = left(ActiveDocument.FullName, len(ActiveDocument.FullName)-4)+".h"
  Documents.Open(filename)
 end if
 
 if filename<>None then
  for each cpt in documents
   if cpt.FullName=filename then
    cpt.active = 1
    exit for
   end if
  next
 end if
 
End Sub
 

Reply

Marsh Posté le 05-07-2002 à 01:58:44    

DJ_ThOnY: Je le rajouterai peut-être.
Pour connaître tous les autres raccourçis clavier, faire menu  "Help/Keyboard Map".
Cliquez sur les titre pour trier.
 
fabsk:
On sent qu'il y a du travail derrière !
Encadre ton code avec la balise [fixed], ce sera plus lisible.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed