VC6 Tips / VC++用のHファイルとCPPファイルを切り替えるMacro part3
VC++用のマクロ集ってどこかにないかナァ〜
それはともかく 今の所、見つからないから自作に頼るとして・・・、
昔、作ったCPP HPP C H Changer*1がcppファイルの時 hを表示したり hppファイルの時、 cファイルを表示したりと、ちょっと不具合が見つかったので只今修正中。
確か・・・、C言語でいうreturn は。。。 あれ?
Function定義して・・・、RETURN??あれ?
あーなーる。
多分これでOKかなぁ〜・・・
多分・・・
あれ?明示的に値を返すときってどうするんだ?
多分・・・、最後に計算した値が返るから、とりあえず変数宣言して値を代入でOKかな〜?
'-------------------------------------------------------------
'FILE DESCRIPTION:
'VBSなるものは良くわからないのでこんな冗長なスクリプトになって
'しまいましたq(T▽Tq)(pT▽T)p
'だれか良い解説、リファレンスサイトを教えてください
' o_ _)o))懇願
'------------------------------------------------------------
Function GenericOpenPrio2(fs,s1,s2)
if fs.FileExists(s2) then
Documents.Open s2, "Text" '開く
elseif fs.FileExists(s1) then
Documents.Open s1, "Text"
else
c = FALSE
Exit Function
end if
c = TRUE
Exit Function
End Function
Function GenericOpenPrio1(fs,s1,s2)
if fs.FileExists(s1) then
Documents.Open s1, "Text" '開く
elseif fs.FileExists(s2) then
Documents.Open s2, "Text"
else
c = FALSE
Exit Function
end if
c = TRUE
Exit Function
End Function
Sub COpen2(sn,fs,cppll)
cl = len(sn)
s1 = left(sn,cl - cppll) + ".cpp"
s2 = left(sn,cl - cppll) + ".c"if fs.FileExists(s2) then
Documents.Open s2, "Text" '開く
elseif fs.FileExists(s1) then
Documents.Open s1, "Text"
end if
'msgbox "cpp2" + sn + " "+ s1 + " " + s2
End SubSub CppOpen2(sn,fs,cppll)
cl = len(sn)
s1 = left(sn,cl - cppll) + ".cpp"
s2 = left(sn,cl - cppll) + ".c"if fs.FileExists(s1) then
Documents.Open s1, "Text" '開く
elseif fs.FileExists(s2) then
Documents.Open s2, "Text"
end if
'msgbox "cpp2" + sn + " "+ s1 + " " + s2
End SubSub HOpen2(sn,fs,cppll)
cl = len(sn)
s1 = left(sn,cl - cppll) + ".hpp"
s2 = left(sn,cl - cppll) + ".h"
if fs.FileExists(s2) then
Documents.Open s2, "Text" '開く
elseif fs.FileExists(s1) then
Documents.Open s1, "Text"
end if
'msgbox "hpp2" + sn + " " + s1 + " " + s2
End SubSub HppOpen2(sn,fs,cppll)
cl = len(sn)
s1 = left(sn,cl - cppll) + ".hpp"
s2 = left(sn,cl - cppll) + ".h"
if fs.FileExists(s1) then
Documents.Open s1, "Text" '開く
elseif fs.FileExists(s2) then
Documents.Open s2, "Text"
end if
'msgbox "hpp2" + sn + " " + s1 + " " + s2
End SubSub FOX_OPEN(sn,s1,s2,fs,ic,icpp,ih,ihpp)
sn = ActiveDocument.Path + "\" + "..\"
If ih=".h" then
sn = sn + "src\" + ActiveDocument.Name
Call COpen2(sn,fs,len(ih))
ElseIf ihpp=".hpp" then '現在がHPPなら
sn = sn + "src\" + ActiveDocument.Name
Call CppOpen2(sn,fs,len(ihpp))
ElseIf icpp=".cpp" then '現在が Cpp なら
sn = sn + "include\" + ActiveDocument.Name
Call HppOpen2(sn,fs,len(icpp))
ElseIf ic=".c" then '現在が C なら
sn = sn + "include\" + ActiveDocument.Name
Call HOpen2(sn,fs,len(ic))
End ifEnd Sub
Sub OpenOpen(sn,s1,s2,fs,ic,icpp,ih,ihpp)
Dim res
If ih=".h" then
res = GenericOpenPrio2(fs,s1,s2)
ElseIf ihpp=".hpp" then '現在がHPPなら
res = GenericOpenPrio1(fs,s1,s2)
ElseIf icpp=".cpp" then '現在が Cpp なら
res = GenericOpenPrio1(fs,s1,s2)
ElseIf ic=".c" then '現在が C なら
res = GenericOpenPrio2(fs,s1,s2)End If
if res then
call FOX_OPEN(sn,s1,s2,fs,ic,icpp,ih,ihpp)
end if
'MsgBox s1+" "+s2
End SubSub CppOpen(sn,fs,cl,cppll,ic,icpp,ih,ihpp)
s1 = left(sn,cl - cppll) + ".cpp"
s2 = left(sn,cl - cppll) + ".c"
Call OpenOpen(sn,s1,s2,fs,ic,icpp,ih,ihpp)
End Sub
Sub HppOpen(sn,fs,cl,cppll,ic,icpp,ih,ihpp)
s1 = left(sn,cl - cppll) + ".hpp"
s2 = left(sn,cl - cppll) + ".h"
Call OpenOpen(sn,s1,s2,fs,ic,icpp,ih,ihpp)
End Sub
Sub CppHChanger2()
'DESCRIPTION: cpp と h を ボタンひとつで切り替えるやつです
sn = ActiveDocument.FullName
'現在編集中のファイル名
cl = len(sn) '現在のファイル名の文字数icpp = right(sn , 4)
ihpp = right(sn , 4)
ic = right(sn , 2)
ih = right(sn , 2)Dim fs
Set fs =CreateObject("Scripting.FileSystemObject")
'ChangeSub(ih,ihpp,icpp,ic,fs,cl,sn)
'現在が H なら
If ih=".h" then
Call CppOpen(sn,fs,cl,len(ih),ic,icpp,ih,ihpp)
ElseIf ihpp=".hpp" then '現在がHPPなら
Call CppOpen(sn,fs,cl,len(ihpp),ic,icpp,ih,ihpp)
ElseIf icpp=".cpp" then '現在が Cpp なら
Call HppOpen(sn,fs,cl,len(icpp),ic,icpp,ih,ihpp)
ElseIf ic=".c" then '現在が C なら
Call HppOpen(sn,fs,cl,len(ic),ic,icpp,ih,ihpp)
end if
'TODO: Put macro code here
End Sub