• 締切済み

VB2.0からVB6.0へのアップグレードについて

VB2.0で作成したアプリをWindowsXP上で動作するようVB6.0にアップグレードすることになりました。 VBXからOCXへの置き換え、文字列処理のUnicode対応、DLL呼出しの修正など問題点は多いようです。 そこで、これまでにこのような作業をした方がいらしたら手順や注意点などを教えてください。 また、これに関して書かれているHPなどあれば教えてください。

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>VBXからOCXへの置き換え、文字列処理のUnicode対応、 >DLL呼出しの修正など問題点は多いようです。 基本的にはこんなところですね。 あと、VB2.0のバイナリ形式のファイルはVB6.0では読めないので、VB2.0であらかじめテキスト形式で保存しておく必要があります。 >VBXからOCXへの置き換え、 置き換えただけではまず動かないので、結構大変です。 >文字列処理のUnicode対応、 文字列長をLenBで取得している個所はすべて修正する必要があります。 >DLL呼出しの修正など問題点は多いようです。 これに関しては、WindowsAPIを使っているのでしたら引数の変更ももちろんのこと、動作の変更についても調査、確認およびテストを行う必要があります。 引数の変更に関しては、C言語のintが32bitになったため、 VBではLongになる点に注意が必要です。 これらのことは、あくまでも移行に関して一般的なところなので、移行されるアプリ特有な問題がまだあるかもしれません。

関連するQ&A

  • VB6から.NETへアップグレード時について

    VB6+WindowsNT4.0からVB.NET(2005)+WindowsXPにアップグレードをしようとしていますが、 アップグレード中に以下のようなエラーが発生し中断されます。 アップグレードに失敗しました。 例外が発生しました。参照されたコンポーネントを読み込みませんでした。 プロジェクトをアップグレードする前に、このコンポーネントをインストールする必要があります。 COMCT232.ocx(1.1.0) COMCT232.ocxがインストールされているかどうしたら調べることができますか? PCに全く詳しくないのでご教授お願いします。

  • VB6のランタイム

    いろんなHPで、VB6のランタイムをダウンロードして、 セットアップしたのですが、正しく動作しないのですが 全ての機能(DLL・OCX等)があるHPはないのですか? もしなけらば作成方法を教えてください。 VB6のCDにありますか?

  • VB2005でOCXを動的に呼び出すには?

    お世話になります。 当方の環境はWinXP SP2,VB2005Proです。 現在作成中のアプリで、とあるCOMコンポーネントを使っているのですが、 どうやら そのOCXが自由配布は出来ないようで、依頼元から 「OCXがインストールされている場合のみ、それを使用する機能を  生かしてほしい」 と言われました。 依頼元曰く「たぶんコンポーネントを参照設定せずにコーディング しないといけないと思う」との事なのですが、それは可能なのでしょうか? また、可能であれば、方法(または方針)を教えていただけると有難いです。 (もしかしてOCXと処理を完全に分離してDLL化しないとダメ?)

  • VB6の開発環境の設定の仕方がわかりません

    過去に誰かが作ったVBのシステムを修正しようと思っております。 修正の為にまず開発環境を整えなければならないのですが、前製作者が書き残したメモの内容が理解できません。 どなたか教えていただけませんでしょうか? メモの内容は以下のとおりです。 --------------------------------------------- 1) mpscmp.dll、phrcmp.dllは ActiveX DLL 開発環境にインストールすること 2) Fsrtmov.ocxは ActiveXコントロール 開発環境にインストールすること 3) PhTrans.dllはWin32DLL 開発環境のカレントや環境変数のパスの通っているとこに置くこと 4)開発環境 Win2000Pro+SP1 IE5+SP1 VB6+SP3 PowerTools ActiveReport ver1.5J + 最終パッチ PowerTools DBGrid Pro ver6.0J + 最終パッチ (現GrapeCity社) --------------------------------------------- mpscmp.dll、phrcmp.dll、Fsrtmov.ocx、PhTrans.dllといったファイルは手元にあるのですが、具体的にどこに設置すればいいのかというのがわかりません。 VBが置いてある場所に設置するということでしょうか? VBについて詳しく無いため質問の内容がわかりずらいと思いますが、どうぞよろしくお願いします。

  • VB6からVB2010への変換について

    今、WindowsXP上のVB6プログラムを、Windows7上のVB2010プログラムへ変換作業をしています 手順は 1.VB2008Expressのアップグレードウィザードを使って、一度VB2008版を造りました   その時に、フォームサイズを変えるステートメントが次のように変わりました Imports VB = Microsoft.VisualBasic ・ Me.Width = 16000 → VB6.TwipsToPixelsX(16000) Me.Height = 12250 → VB6.TwipsToPixelsY(12250) 2.次にWindows7上のVB2010で上記プログラムを読み込むと.       VB6.TwipsToPixelsX(16000) のところに波型のアンダーラインが引かれ     これは「旧形式です」のメッセージが出ました  そこで、Microsoftのフォームページ(http://go.microsoft.com/fwlin/?linkid=160862')を参考に 下記のように修正しました Imports Microsoft.VisualBasic.Compatibility.VB6 ・ Me.Width = Support.TwipsToPixelsX(16000) Me.Height = Support.TwipsToPixelsY(12250)       と修正しましたが波型アンダーラインは消えませんでした そこで質問ですが  この波型アンダーラインは無視して良いのか、  それともまだ使い方が間違っているのか分かりません  そこのところご教授願えれば幸いです   

  • VB6のアプリケーションの配布

    VB6でアプリケーションを作成したのですが、他のマシンに配布する場合に実行形式(EXE)だけだと、DLLやOCXなどの有無やバージョンの違いで動作しないのですが、Setup.exeなどダブルクリックするだけで、インストールできるようにしたいですが、方法がわかりません。 VBのランタイムは、このSetup.exeより先にインストールしないと、Setup.exe自体でインストールが中断されるのでしょうか? あと、.NETですがVB6のようにDLLやOCXの有無・バージョン違いなど気にせず簡単に配布できるのがメリットの一つと解釈しても良いのでしょうか? このように配布・インストール関連で詳しい書籍などご存知でしたら教えてください。 インストーラソフトというものは言葉聞いたことがあるのですが、 .NET使うならば、あまり必要ないのでしょうか?これもお勧めのインストーラソフトがあるのでしたらご教授下さい。

  • VB5が使える OS

    VB4→VB5に移行し、配布したアプリの関係でVB6に移行できず、いまだにVB5 SP2を使っています。 当時MicrosoftのHPで VB5の対応OSで 2000 XP には[X] が ついていたように思い、98 で 我慢して使っていました。MS社HPで 最近VB5の項目が無くなっているようです。 最近 2000Professionalに強引にVB5 SP2をインストールしたところ、正常に稼働しているようです。さらに 98では VB5インストール後、ライセンス情報が書き込まれていないとの表示が出(Comctl32.ocx msflxgrd.ocxなど)、RegSvr32.exe での対処が必要でした(文書番号J040961)。 ところが、2000では その必要がありませんでした。では XPでは VB5 は 使えるのでしょうか?できれば XP で使いたいと思っています。 以上の点、よろしくご教授お願いいたします。

  • VBで作成したEXEが使用しているOCX,DLLを見る方法

    VBで作成したEXEがあります。 ただ残念な事に、タイで作成したこともあり、ソースがありません。 それ故に、あるPCでは動作し、あるPCでは動作しないといった不具合の原因が調査できずに困っています。 エラーの内容としては「ActiveXコンポーネントが作成できない」旨のエラーですので、何かのDLLもしくはOCXの登録が抜けていると思うのですが、どのファイルかが分からず困っています。 現行動作するマシンがありますので、タスクマネージャの様な感じでEXEが使用しているOCX,DLLを見る方法があれば助かるな~。と思い質問させていただきました。 ご存知の方、どうぞご教授頂けますと大変ありがたいです。 どうぞよろしくお願い致します。

  • VC++6.0からVBで作成したActiveX.DLL内の関数が呼出しできない

    VB6.0で作成したActiveX.DLLをVC++6.0(Win32SDK)側で 呼び出すプログラムを作成中です。 VB側(DLL)では問題なく作成できています。 Classに1つPublic関数を作成しただけです。 (Instancingは5MultiUseにしてあります) しかし、VC++側の呼出しでDLL内の関数が 呼び出せないのです。 LoadLibraryExでDLL自体のハンドルは取得できるのですが GetProcAddressで関数の取得時にNULLが返ってきてしまいます。 今まで試したことは ・VBからの呼出しはOK ・MFCだとOK ・SDKでもuser32.dll呼出しのサンプルは関数も実行できる です。 今からMFCへ以降するのは厳しいのでSDkでの方法を 知りたいです。 VB側が悪いのかもしれませんが、関数1つですし、 いじるところもほとんどないので多分VC++側だと 思っています。 なにか注意点とか確認するところをおしえていただければ 幸いです。 環境 Windows2000 SP3 VB6.0 SP5 VC++6.0 SP5 Win32SDK

  • エディットコントロールへのUnicodeの入力

    VisualStudio2005 C++、マルチバイト文字セットでWindowsアプリ ケーションを作っています。動作環境は、WindowsXP SP3 (x86)。 モーダルダイアログに貼り付けたエディットコントロールでは、 MicrosoftIMEStandard2002で変換確定した文字(例えばハート (U+2665))が表示されるので、GetWindowTextW()でそのユニコード 文字列を取得できるのですが、 モードレスダイアログに貼り付けたエディットコントロールでは、 変換文字列が'?'にコンバートされて表示されてしまいます。 コピー&ペーストでは、Unicode文字も表示できるので、 IMEの変換後の処理がうまくいっていないと思うのですが、 どのようにすれば、変換確定しても'?'にコンバートされずに 文字列が表示できますでしょうか? お教えください。よろしくお願いします。 (むかしつくったアプリのため、Unicodeでビルドするには 修正が多いので、マルチバイトのビルドでやりくりしたいのです。)

専門家に質問してみよう