VB と VC++の違いを教えてください。7月から大学で、MS VB6.0 を学ぶ予定なのですが、プログラミングは、ずぶの初心者なので、とりあえず概要から学ぼうと思っています。どうかわかりやすく教えてください。お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

VBの説明をしますと、ウィンドウズで開くフォーム(窓)にコントロール(テキストボックス、コマンドボタン、コンボボックスなど)を貼り付けて、その動作などに対してプログラムを書いていきます。

たとえば、コマンドボタンを好きなところに貼り付けて、そのボタンがクリックされたらメッセージボックスを出すなどです。

例)
Private Sub Command1_Click()

MsgBox "あなたはクリックしました。"

End Sub

フォームがなくてもプログラムは作れますけどね。

VCよりもVBのほうがすごくわかりやすいのでVBから学ぶほうがプログラムを好きになれると思います。

がんばってください。
    • good
    • 0
この回答へのお礼

ほんとにありがとうございます。実は、VBとVCのどっちをとるか迷っていたため、これで踏ん切りがつきました。頑張って、少しでも皆さんと話ができるように勉強します。ありがとうございました。

お礼日時:2001/06/28 18:29

 ぜんぜん違います。

と言ってもいいのかな?
VBはVisual Basicの略で、VC++はVisual C++の略。VBはBASICを基礎とする言語で、VC++はC言語を基礎とします。それを視覚的にプログラムしやすいと言う意味合いでVisualの文字が頭に付いているんだったと思いますが?
    • good
    • 0
この回答へのお礼

いや、やはりそうでしたか。ありがとうございます。というのも、ホームページで、いろいろ探してみると、どうしても、一緒には、書いてなくて、ただ単に説明しか載っていないので、もっと基本的な同じなのか違うのかといところがはっきりしなかったので、なんとなく違うんだろうなとしかわからなかっため、やはり聞いてよかったです。ありがとうございました。

お礼日時:2001/06/28 18:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QVC++6.0からVC++.NETへの変遷について

VC++がようやく分かり出したこの頃ですが、今日本屋に立ち寄ったら、なっ なんとVC++の本がほとんど無くなり、代わりにVC++.NETとVC#ばかりになっていました。

C#はVC++とは違うと聞いていたのですが、読んでみるとVC++.NETもかなり違ってました。
(かなり違うという表現は、各人の状況により意見が異なると思いますが)

私のような本を見ながらコードを打って勉強している初心者にとって、VC++.NETの本ではVC++6.0を動かすことができません。

今から勉強する人や本を買って勉強しようとしている人あるいは、コンパイラを手に入れようとしている人はVC++.NETに移行してしまわざるを得ないのでしょうか?

すでにVC++6.0を十分活用出来ている人も、時代の流れでNETやC#を勉強していかなければならないのでしょうか?

つまり、単なるバージョンアップとは一線をなす変更がなされたということなのでしょうか?

良くご存知の方見解をお願いします。

Aベストアンサー

すぐにではありませんが、.NETに移行せざるを得なくなるでしょうね。
ただ、開発環境という面では、VS.NETにはC++が含まれており、C++の部分は
従来のC++も利用できるようになっていて、これはアンマネージC++と呼ばれています。
C++で.NETのコードを作成する時は、マネージC++という拡張仕様で記述します。
また、従来のコードと.NETフレームワーク用コードを混在させてアプリケーションを
開発することもできます。これは、相互運用という形で説明されています。

ということですので、C++で習得したものが無駄になることはありません。
たぶん、.NET環境の開発には、C++よりもC#やVB.NETを利用することが
多くなると思いますが、C++を理解していることはプラスにはなってもマイナスには
なりませんので、頑張って下さい。

.NET関連のサイトを2つご紹介しておきます。ご参考に。
http://www.microsoft.com/japan/msdn/library/default.asp
http://www.atmarkit.co.jp/fdotnet/index.html

すぐにではありませんが、.NETに移行せざるを得なくなるでしょうね。
ただ、開発環境という面では、VS.NETにはC++が含まれており、C++の部分は
従来のC++も利用できるようになっていて、これはアンマネージC++と呼ばれています。
C++で.NETのコードを作成する時は、マネージC++という拡張仕様で記述します。
また、従来のコードと.NETフレームワーク用コードを混在させてアプリケーションを
開発することもできます。これは、相互運用という形で説明されています。

ということですので、C++で習得したもの...続きを読む

QVB6.0で作成したデータ(配列に入った数値)をVC++に渡したい

掲題の件ですが、
VB6.0ではアドレスを指定して、
メモリを書いたり読んだりすることが困難ということが分かり、
VBで計算した結果をVC++に渡して、VC++でアドレスを指定してメモリに書き込んだり、
読み込んだりするようにしようと考えています。

プログラミングは初心者なので、これが実現可能かどうかが分からないのですが、
調べると、VC++でDLLファイルを作ってVBで参照するという方法はあったのですが。

・これは実現できるのか。
・どこにどのようなコードを書けば良いか(同プロジェクト内に違う言語を存在させることは可能か。)
・受け手側はどのように記述すれば値を受けれるか

以上よろしくお願いします。

http://forums.belution.com/ja/vb/000/007/59.shtml
このような問題がありました。

Aベストアンサー

>C言語でDLLを作成し、VBで呼び出すのでよろしいでしょうか?

yoshi004さんの立場だとそういうことになります。

>なにか環境に関する読みやすい本はご存知でしょうか?

さすがに私がDLL開発したのは10年くらい昔の話ですから
最近の本は分かりませんねえ。

ただ、昔と比べて書籍は不自由しないようになりましたから、
1フロアに専門書が置いてあるような大きな書店なら
目的の本はたいてい見つかると思います。

そういう場所で1~2時間くらいかけて目的の本を探すことも
これまた必要な経験です。

QVC++とVC#の違いを教えて下さい

VC++とVC#どちらを勉強したほうが就職に有利でしょうか
VC++とVC#何がちがうのでしょうか。
VC++は主に業務系アプリを作成するときに使う言語で
VC#は主に制御系アプリを作るときに作成する見たいな
違いも教えて下さい。

Aベストアンサー

> VC++とVC#どちらを勉強したほうが就職に有利でしょうか

どちらでも大した差はないと思いますが、VC++の方が応用範囲は広くなると思います。VC++をVC#をという視点ではなく、プログラミング言語としてC/C++, C#を、プラットフォームとしてWindowsのプログラミングを、.NETフレームワークを、という視点で勉強することをお勧めします。

> VC++とVC#何がちがうのでしょうか。

VC++はC++をベースにしていますが、マイクロソフト社の独自仕様がかなり入っています。.NET Frameworkなしでも動くプログラムをかけます。一方、C#は比較的新しい言語で文法的にはJavaに似ており、.NET Frameworkを前提に作られています。

.NET Frameworkを使うのであれば、VC++, VB, C#のどれを使っても出来ることは一緒です。

私は、自分で使うちょっとしたツールを作る時は C#を使い、使用環境の制約上 .NET Frameworkが使えないものや、ドライバを開発する場合、サンプルプログラムとしてソースコードを開示する場合にはVC++を使っています。

ちなみに、マイコン上で動作する制御用プログラムを開発する場合はどちらも使えず、H8マイコンやSHマイコンではHEW(ルネサスの統合開発環境)にGCCやルネサスのC/C++コンパイラを使って、C言語でプログラムを開発しています。

> VC++とVC#どちらを勉強したほうが就職に有利でしょうか

どちらでも大した差はないと思いますが、VC++の方が応用範囲は広くなると思います。VC++をVC#をという視点ではなく、プログラミング言語としてC/C++, C#を、プラットフォームとしてWindowsのプログラミングを、.NETフレームワークを、という視点で勉強することをお勧めします。

> VC++とVC#何がちがうのでしょうか。

VC++はC++をベースにしていますが、マイクロソフト社の独自仕様がかなり入っています。.NET Frameworkなしでも動くプログラムを...続きを読む

QVBでVC++の処理速さを実現する

ふと疑問に思ったので質問します。

あくまでも一般論ですが、VBはVC+より簡単だけどデメリットは処理速度が遅いことだそうです。

でもどちらも最終的には機械語?に訳されるんでしょ?

じゃあ人間にとって作りやすいVBで作っても、最終的にはコンパイラがVC++と同じ機械語にしてくれたら良いと思うのですが。

どうしてそういう都合の良いことは出来ないのですか?

Aベストアンサー

なんかいろいろと話が出てますが。

本質的にVBとVC++の違いは

>あくまでも一般論ですが、VBはVC+より簡単だけどデメリットは処理速度が遅いことだそうです。

ですよね。

で、”簡単”というところでVBがどうして簡単なのかを考えていけばわかると思います。

簡単な理由:
1.データ型を意識しなくても自動的に変換してくれる
・・・VBが内部的にがんばって変換する処理を行っている

2.文字列が簡単に扱える。
・・・VBが内部的に、領域確保やメモリ内のデータのコピーなどの処理をがんばってる。

3.画面にコントロールを貼り付けるだけで、簡単にGUIが完成する。
・・・VBがフォームの表示等の一般的な必要となる処理、コントロールとのやり取りの処理等をすべて内部的に行っている。

4.ActiveXコンポーネントやCOMオブジェクトが簡単に使える。
・・・VBが内部的なコンポーネントとのインターフェイス間のやり取りをすべて行っている。

みたいな感じですかね?

ランタイムが必要とか、コンパイルが必要とかということとは別問題です。

ランタイムは、あくまでもVBのプログラムで内部的に共通で
行われる処理をまとめてDLL等にしたり、
VBで直接使用しづらい処理をActiveXコンポーネントにすとといったために使用します。

コンパイルも、ちゃんとネイティブコンパイルできますし。

で、このVBの簡単な点が全て実行速度というところに跳ね返ってきます。


2.やランタイムについては、VitaminBBさんはMFCをよく使われているのであれ?と思ったかもしれません。

MFCはCStringで簡単に文字列を扱えますし、MFCにはランタイムDLLも存在します。

実は、MFCもVBほどではないですが、”遅い”です。
フレームワークがC++で書かれているから速いとか言う問題ではなく、単純に、ある程度何でもできるフレームワークだから内部的な処理が多すぎるという点でMFCは遅いのです。

つまり、便利→内部的な処理が多い→遅いということになります。

#ただ、MFCの場合は、画面まわり、すなわちユーザーインターフェイスをMFCに任せ、演算などの高速処理を必要とするビジネスロジックはMFCを使わないということもできるので、このあたりがVBと違うところです。
VBで速くしようとすると、画面はVB、ビジネスロジックはCのDLLなんてことになります(よくありますが)。

なんかいろいろと話が出てますが。

本質的にVBとVC++の違いは

>あくまでも一般論ですが、VBはVC+より簡単だけどデメリットは処理速度が遅いことだそうです。

ですよね。

で、”簡単”というところでVBがどうして簡単なのかを考えていけばわかると思います。

簡単な理由:
1.データ型を意識しなくても自動的に変換してくれる
・・・VBが内部的にがんばって変換する処理を行っている

2.文字列が簡単に扱える。
・・・VBが内部的に、領域確保やメモリ内のデータのコピーなどの処理をがんば...続きを読む

QVC++6で作成したDLLをVC++.NET2003から呼び出せますか

現在、VC++.NET2003で作成しています。あるメーカから提供されているDLLがあるのですが、そのDLLとのリンクまではできたのですが、実行するとエラーになってしまいます。
(プログラムが異常終了するのではないのですが、そのDLLからの戻り値がエラーになり、期待した結果が得られません。)
そのDLLはVC++6で作成したものらしく、マニュアルには、VC++6で作成したアプリケーションからの呼び出し方法が、記述されていました。
VC++6でアプリを作成すれば、正常に呼び出せることは明白なのですが、いかんせん、VC++.NET2003での開発が、ある程度進んでしまっていますので、いまからVC++6に切り替えるわけにもいきません。
それで、一般論として、確認したいのですが、VC++6で作成したDLLをVC++.NET2003で使用することは、出来ないのでしょうか。(これから、メーカにも確認する予定ですが、まずは、こちらで確認したく、投稿した次第です)

Aベストアンサー

> もし、原理的にVC++6のDLLをVC++.NETでも呼び出し可能なら、

呼び出すだけなら原理的には可能ですが、作り方次第では正しく動作しないと思います。
典型的なまずい例は、DLL側でmallocやnewなどで割付けたオブジェクトを呼び出し側で解放させる、またはその逆です。

結局のところ、DLLの作り方に強く依存しますので、想像だけではこれ以上分かりません。

QVB.netでのVC++呼び出し引数の順番

VC++で作成されたDLLをVB.NetにてそのDLLを呼び出すアプリを作成して
います。以下のパターン2では問題なく動作しますが、パターン1では
DLL側で見たときにchar変数に正しく値が入りません(NULL)になる。
パターン1とパターン2の違いは引数の順番です。
開発環境:VisualStudio2008
OS:WindowsXP SP2

パターン1(この場合はNG)
 VC++側の宣言
  extern "C" __declspec(dllexport) void func1(int i,char*s)
 VB.Net側の宣言
  <System.Runtime.InteropServices.DllImport("func.dll")> _
  Public Sub func1(ByVal i As Long, ByVal s As String)
  End Sub

パターン2(この場合はOK)
 VC++側の宣言
  extern "C" __declspec(dllexport) void func1(char*s,int i)
 VB.Net側の宣言
  <System.Runtime.InteropServices.DllImport("func.dll")> _
  Public Sub func1(ByVal s As String ,ByVal i As Long)
  End Sub

VC++側がパターン1で作成さているため、VC++側を修正をしないで
正常に動かすことは可能でしょうか?

よろしくお願いします。

VC++で作成されたDLLをVB.NetにてそのDLLを呼び出すアプリを作成して
います。以下のパターン2では問題なく動作しますが、パターン1では
DLL側で見たときにchar変数に正しく値が入りません(NULL)になる。
パターン1とパターン2の違いは引数の順番です。
開発環境:VisualStudio2008
OS:WindowsXP SP2

パターン1(この場合はNG)
 VC++側の宣言
  extern "C" __declspec(dllexport) void func1(int i,char*s)
 VB.Net側の宣言
  <System.Runtime.InteropServices.DllImport("func.dll")> _...続きを読む

Aベストアンサー

> Public Sub func1(ByVal i As Long, ByVal s As String)
Longではないのでは?

intは32ビットの数値型ですので Integer か Int32 でどうでしょうか?


パターン2の場合は引数が逆なのでたまたまうまくいくだけで、もしかしたら
別のところで弊害がでるかも。
(戻り値があったりするとうまくいかないかな)

QC#とVC++.NETについて教えて下さい。

質問タイトルが漠然としててごめんなさい。
特別なソフトを作る訳ではないのですが、暇プロレベルで最近やっと
苦労の末、.NET以前のVC++を理解できて、VC++ってMFC
を使う為の言語のだなーと思っている感じです。
C#は購入済みですが、まだ触ってません。VC++.NETは未購入
の状態です。

そこで質問なのですが、
 (1)WIN32アプリにはC#とVC++.NETどちらが適していますか?
 (2)VC++.NETはやはりMFC寄りの言語なのでしょうか?

インラインアセンブルとかもやりたいのですが、
 (3)VC++.NETではできますか?C#では?

C#は見た目がC言語でクラスも使えるのでVC++.NETとどう違う
のか良くわかりません。自分的にはC言語でなんでもやって行って、
C++はクラスが分かる程度で良しとしようと思っています。
詳しい方、漠然とした質問で申し訳ございませんが、ご教授お願いします。

Aベストアンサー

「VC++.NET」と書かれていますが
「Visual C++.NET 2003」及び「Visual C++.NET 2002」の事でしょうか?
2005からは「Visual C++ 2005」という表記になり表記から「.NET」ははずれました。
それと.NET Frameworkという言葉をご存知でしょうか?
C#は.NET Frameworkを使ったアプリケーションを作る為の言語です。

(1)
Win32APIを使ってプログラムをするなら普通VC++を使います。
C#はWin32APIの代わりに.NET Frameworkを使います。

(2)
従来通りMFCが使えます。(MFCのバージョンも上がっています。)
それとは別にC++から.NET Frameworkを使える
C++/CLIといものも選択できます。(2003ではマネージドC++と呼ばれていました)
(.NET Frameworkを使ったソフトを動かすには.NET Frameworkのランタイムが必要になります。)

(3)
VC++はインラインアセンブラを使うことが可能です。
C#はそんなに詳しくないですが多分無理です。
その代わりunsafeコード(インラインCみたいなもの)が使えます。

>C#は見た目がC言語でクラスも使えるのでVC++.NETとどう違う
>のか良くわかりません。
C#とC/C++はまったく違う言語です。例えばC#は基本的にポインタはありません。クラスの多重継承もできません。
単純なステートメント(文構造)が同じなだけです。
それならC++とJavaもステートメントは似ているといえます。

「VC++.NET」と書かれていますが
「Visual C++.NET 2003」及び「Visual C++.NET 2002」の事でしょうか?
2005からは「Visual C++ 2005」という表記になり表記から「.NET」ははずれました。
それと.NET Frameworkという言葉をご存知でしょうか?
C#は.NET Frameworkを使ったアプリケーションを作る為の言語です。

(1)
Win32APIを使ってプログラムをするなら普通VC++を使います。
C#はWin32APIの代わりに.NET Frameworkを使います。

(2)
従来通りMFCが使えます。(MFCのバージョンも上がっていま...続きを読む

Q現在VC++2008にて開発を行っております、C++初心者の者です。

現在VC++2008にて開発を行っております、C++初心者の者です。

VC++にて一番最初に使用する(通過する)メソッドは
何という名前のメソッドなんでしょうか?

宜しくお願いします。

Aベストアンサー

 一口にVC++と言っても、様々な開発スタイル(プラットホーム)があり、それによってプログラム構造が異なってきます。

(1)標準的なC/C++
 この場合は教科書通りの「main」関数が呼ばれます。

(2)Platform SDK
 Win32APIを用いてC/C++によって開発する場合は「WinMain」関数が呼ばれます。

(3)MFC
 プログラム的にはアプリケーションクラス(CWinAppの派生クラス)のコンストラクタじゃないかという気がしますが、本格的な処理という面では「InitInstance」でしょうか。
(実際には「WinMain」からアプリケーションクラスが呼び出されているはずですが、その部分は隠されています)

(4).NET(Windowsフォームアプリケーション)
 最初に「main」関数が呼ばれますが、これはメインのFormクラスを起動しているだけです。
 Formクラスのコンストラクタでは「InitializeComponent」というのが呼ばれていますが、これはデザイナ画面で設定したコンポーネントの初期化を行っています。
 実質的に処理として最初に動くのはというと、これは作成者がイベントハンドラとして何をどう作るかにもよるのですが、一般的にはFormが起動したときに呼び出される「Formの名称_Load」あたりじゃないかと……

(5).NET(CLRコンソールアプリケーション)
 これは普通に「main」関数から始まります。



 

 一口にVC++と言っても、様々な開発スタイル(プラットホーム)があり、それによってプログラム構造が異なってきます。

(1)標準的なC/C++
 この場合は教科書通りの「main」関数が呼ばれます。

(2)Platform SDK
 Win32APIを用いてC/C++によって開発する場合は「WinMain」関数が呼ばれます。

(3)MFC
 プログラム的にはアプリケーションクラス(CWinAppの派生クラス)のコンストラクタじゃないかという気がしますが、本格的な処理という面では「InitInstance」でしょうか。
(実際には「WinMain」からアプリケ...続きを読む

QVC++プログラマーのアルバイトを未経験可、年齢不問で探しているのです

VC++プログラマーのアルバイトを未経験可、年齢不問で探しているのですが…
現在年齢は42歳です。
5~6年前からC言語を勉強し始め、現在はC++やVC++(MFC)を勉強するまでになったのですが、VC++プログラマーのアルバイトで雇ってくれる会社はありますか?
同じ未経験で入社するには若い人に比べて年齢でハンデがある分をスタートラインで差を付けようと思い、今でもVC++(MFC)の勉強を続けているのですがこれはあまり意味のないことですか?

Aベストアンサー

アルバイトということですが、どのような仕事をしたいのでしょうか?
単なるコーディングのみをやりたいのか、上流工程も含めた開発全体を経験したいのか質問内容からは読み取れません。
40代ということであれば、企業が求めるのは即戦力になる人ではないでしょうか?
プログラマーというよりは、システムエンジニアとして設計業務やマネジメントができる人が求められると思います。
仕事については、VC++(MFC)の開発業務の需要がどれだけあるかによると思います。
VC++にこだわるのであれば、VC++.netも挑戦したほうがアドバンテージがあると思います。
勉強しているから採用されると思っているなら、考えは甘いと思います。
企業は、どれだけVC++を使ってソフト開発を行ってきたかを見ると思います。
ここで質問するよりは、ハローワークや転職者向けの会社説明会などで質問したほうが良いと思います。

QVB6.0でVB上にExcel

VB上にExcelオブジェクトを貼り付け、特定の条件に当てはまったとき既存のExcelファイルのSheet1を乗せたいという場合は、どうすればいいのでしょうか?

Aベストアンサー

条件に該当する場合に
オブジェクトではなくピクチャーコントロールとしてクリップボードにSheet1をコピーしてピクチャーコントロールにClipboard.GetData()で貼り付ける。
または
Sheet1を1行づつ読み込みテキストに書き出す。


人気Q&Aランキング

おすすめ情報