Inside Visual Basic
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG意味不明
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNGVisualBasicは内部では機械語で動いてるらしいです。
ショック!!
0007デフォルトの名無しさん
NGNGウザイ
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGオートメーションコントローラです。
A.C.自作した人ならわかるはず。
0010デフォルトの名無しさん
NGNGアーマークラス?
LOが一番いいの?
0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG?
0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG段場印
>>1
スレタイトルが一瞬、Inprise Visual Basicに見えた。鬱氏。
0022IUnknown
NGNGタ型の概念は他の言語と大きく離れて独自過ぎますね。まずクラスのデフォルトに指定
されているインターフェイスはインターフェイス名ではなくクラス名で扱われること自
体が不満。オブジェクトとインターフェイスを一緒くたにして考えるこの仕様には昔随
分悩まされたものです。「オブジェクトの参照」はオブジェクトへのアクセスポイント
という意味ですからインターフェイスにあたることはわかります。ただ多くの人は「オ
ブジェクトの参照」というよりは「オブジェクトそのもの」として捉えてしまっている
ような気がします。例えば "Set ステートメントでオブジェクトを取得しましょう" と
かね。初心者がVBでCOMインターフェイスプログラミングを行おうとするとこのあたり
の曖昧さがいろいろ影響してくるのではないでしょうかね。
とはいうものの個人的には IUnknown::QueryInterface() メソッドのラッピングに関し
てはなかなか面白い方法だと思います。
Dim xxx As New ITest
Dim yyy As ILesson
Set yyy = xxx
00231
NGNG当方、SDKやMFCはある程度知ってるんだけど、VBはやったこと無いのです。
それで、SDK<->VBでの対応関係が分かれば、片方しか知らない人達にとって
有益な情報になると思ったんだけど駄目かな?
00241
NGNGSDK的で書くとこんな感じになるのでしょうか?
>Dim xxx As New ITest
ITest* xxx = NULL;
CoCreateInstance(CLSID_???, IID_ITest, ?,&xxx);
>Dim yyy As ILesson
ILesson* yyy = NULL;
>Set yyy = xxx
xxx->QueryInterface(IID_ILesson, &yyy);
0025デフォルトの名無しさん
NGNGmain()
氏ねって感じじゃない?
0026デフォルトの名無しさん
NGNG手伝ってもらえませんか?
0027デフォルトの名無しさん
NGNG再帰不能ですね?
0028IUnknown
NGNG文献によっては IUnknown 経由にしているところもあるようです。
>Dim xxx As New ITest
HRESULT hr;
LPUNKNOWN punk = NULL;
ITest* xxx = NULL;
hr = CoCreateInstance(clsid, NULL, CLSCTX_SERVER, IID_IUnknown, (void FAR* FAR*) &punk);
hr = punk->QueryInterface(IID_ITest, (void FAR* FAR*) &xxx);
punk->Release();
ちなみにプログラマティックID でオブジェクトを起動する CreateObject 関数の場合は
hr = CLSIDFromProgID("Test.Application", &clsid);
で CLSID を取得します。あとは New と同じです。
このあたりのことは COM に関する書籍で結構解説されていたりします。
>当方、SDKやMFCはある程度知ってるんだけど、VBはやったこと無いのです。
>それで、SDK<->VBでの対応関係が分かれば、片方しか知らない人達にとって
>有益な情報になると思ったんだけど駄目かな?
独特な言語使用ですが内部で行われている処理を理解すれば一気に視野は
広がると思いますよ。SDK を知っているのでしたらなおさらです。
VB はうわべだけを理解しても面白くない言語ですから。
私なんかは VB でアプリケーションを開発するよりもそのアーキテクチャを知るほうが
面白くてどんどん脱線していきました。かなり昔ですけど、私も 9 さんのようにオート
メーションコントローラを作ったことがありまして、そのときに参考にしたのが VB の
アーキテクチャでした。一部では忌み嫌われている VB でしょうが私はそのつくりに
結構感心したものです(もちろんすべてにおいてではないですよ)。
アーキテクチャを理解することはしっかりとした基礎を築くことに他なりませんから
決して無駄な時間になるとは思いませんし、その基礎があればこそ応用の積み重ねも
スムースに行えるようになると思います。
0029デフォルトの名無しさん
NGNG00301
NGNGこーゆーのって文献あるんですか?
COMについては良く分からないんですが、自分なりにVB内部をイメージすると
VBのEXEはコンパイル時に、WinMainとリンクされて、
VBランタイムDLLと静的リンクする。
実行されると、WinMainからユーザのmainが呼ばれる。
VBランタイムがFORMをCreateWindow()する。WM_CREATEで
ユーザのform_load()が呼ばれる。
WM_CREATEを受け取ってから、form_loadが呼ばれるまでに
なんかOLE的な構造で呼ばれるってことで良いのかなぁ
■ このスレッドは過去ログ倉庫に格納されています