個人的にサポート状況を知りたかったのもあり、流行りにも乗りかかり、記事にしてみました。
ちなみに、大本は@NemesisさんのJavaで湯婆婆を実装してみるです。参考にさせて頂きました。ありがとうございます。
できたのは、とりあえず、こんな感じです。
##開発環境
確かVB6.0のIDEがXPまでしか対応していなかったはずです(Vista対応していたか?)。
##コード
Option Explicit
Const popupTitle = "湯婆婆 for VB6.0"
'契約ボタン
Private Sub btnContract_Click()
'名前の長さを取得
Dim length As Integer
length = Len(Me.txtName.Text)
If (length = 0) Then Exit Sub
MsgBox "フン。" & Me.txtName.Text & "というのかい。贅沢な名だねぇ。", vbOKOnly, popupTitle
'ランダムな位置を取得
Randomize
Dim newNameIndex As Integer
newNameIndex = Int((length * Rnd) + 1)
Dim newName As String
newName = Mid(Me.txtName.Text, newNameIndex, 1)
MsgBox "今からお前の名前は" & newName & "だ。いいかい、" & newName & "だよ。分かったら返事をするんだ、" & newName & "!!", vbOKOnly, popupTitle
End Sub
##.NETと比べて困るところ
.NETだとPictureBoxのDockプロパティで、親要素全体に張り付けることが可能ですが、VBにはありません。なので、ウインドウサイズが変わると子要素も連動するようにコーディングしてやる必要があります。
あと、UTF-8にも対応していません。
「𠮷田」さんには対応できません…。
コントロールの種類も少ないし、メソッド・プロパティも少ないし、色々と不自由が多いですね。
##まだまだ使われているVB6.0アプリ
不自由が多いですが、それでも、現役で動くVB6.0で作られたアプリは今でもあるようです。某大手の電子カルテパッケージでも部分的には.NET化されていますが、VB6.0の部分もまだ残っていたり…と(あと、Officeで作られた資産が多いのかも)。
そういう状況だからか、Windows 10になってもVB6.0で作られたアプリについては現在でも動作が保証されています(IDEはとっくの昔にサポート切れてますが)。
##MicrosoftのVB6.0対応状況
Microsoft公式サイトの情報源としては、以下の2点が見つかります。
- Visual Basic 6.0 には、どのようなライフサイクル ポリシーが適用されますか?(ライフサイクルに関する FAQ - 開発者ツール)
- Support Statement for Visual Basic 6.0 on Windows (英語)
2番目の英語のサイトの冒頭(下の引用)に「It Just Works」とありますが、VB6アプリケーションが動作することのみに限定して対応しているような印象です。
The Visual Basic team is committed to "It Just Works" compatibility for Visual Basic 6.0 applications on the following supported Windows operating systems:
- Windows 10
- Windows 8.1
(以下略)
IDEは、2008/4/8でサポート打ち切りがされています。なので、新規に作るのは難しい状態。ただ、昔、VB6.0アプリの改修をしていた時にWindows7に入れて作っていましたが、7では一応使えていました(但し、Officeを入れた後にVBをインストールすると、デバッグ実行がおかしくなる)。
VB6.0の実行にはランタイムが必要で、まだMSサイトでも配布されています。ランタイム自体は、同梱しているOSのサポートのライフサイクルに合わせるみたいです。
なので、まだまだVBもVBAも現役であり続けるのでしょうかね…?
例外処理・イベント処理だけでなく、今となっては色んな面で作りにくい言語ですが、当面、消えることはなさそうです。