2010-12-02 35 views
0

LINK:私はTWAINのこのオープンソースの.NET実装のためのラッパークラスを作成しようとしていると私は悩みを抱えている http://www.codeproject.com/KB/dotnet/twaindotnet.aspxこのコードはどのように機能しますか? [HARD]

それは実際に画像を取得する方法を理解しています。

私はソースコードをダウンロードしました。GUIにはAcquireというボタンがあります。

private void menuItemScan_Click(object sender, System.EventArgs e) 
{ 
    if (!msgfilter) 
    { 
     this.Enabled = false; 
     msgfilter = true; 
     Application.AddMessageFilter(this); 
    } 
    tw.Acquire(); 
} 

私はそれは中身だ参照してください()メソッドの獲得に従っている場合、私はこれを参照してください:

public void Acquire() 
{ 
    TwRC rc; 
    CloseSrc(); 
    if (appid.Id == IntPtr.Zero) 
    { 
     Init(hwnd); 
     if (appid.Id == IntPtr.Zero) 
      return; 
    } 
    rc = DSMident(appid, IntPtr.Zero, TwDG.Control, TwDAT.Identity, TwMSG.OpenDS, srcds); 
    if (rc != TwRC.Success) 
     return; 

    TwCapability cap = new TwCapability(TwCap.XferCount, 1); 
    rc = DScap(appid, srcds, TwDG.Control, TwDAT.Capability, TwMSG.Set, cap); 
    if (rc != TwRC.Success) 
    { 
     CloseSrc(); 
     return; 
    } 

    TwUserInterface guif = new TwUserInterface(); 
    guif.ShowUI = 1; 
    guif.ModalUI = 1; 
    guif.ParentHand = hwnd; 
    rc = DSuserif(appid, srcds, TwDG.Control, TwDAT.UserInterface, TwMSG.EnableDS, guif); 
    if (rc != TwRC.Success) 
    { 
     CloseSrc(); 
     return; 
    } 
} 
を、私はそれのイベントハンドラに移動するには、このボタンをクリックすると、私は、画像を取得すると仮定し、このコードを見つけます

私が理解していないのは、 'void'戻り値の型を持つメソッドが実際にreturn文を持つ方法です。また、画像を取得して返すのはどこですか?

誰でも手助けできますか?

C#で画像をスキャンするための簡単なドラッグ&ドロップソリューションがないので、便利なラッパーとオープンソースを作成しようとしています。

ありがとうございました!

編集:早期返品のお手伝いをありがとうございます。 TIL!今、私はアプリケーションがフォームに表示するイメージを取得する方法について興味があります。

ガイダンスはありますか?

+2

@Serg - メソッドを終了するためにreturnを呼び出すことができます。とにかくif文の後でメソッドが終了するので、最後の戻り値は無関係です。 – tpow

答えて

3

"無効"は何も返しません。返さないことを意味します。だから、return文は、ちょうどあなたの他の質問のために、発信者

に機能してリターンを終了し、いくつかの他の関連するスタックオーバーフローに関する質問

DSCap複数の画像がある場合はラインが見えています。キャプチャはDSuserifの呼び出しの一部として行われます

+0

ああありがとう!そして、画像の取得はどうですか?彼が実際にイメージアイテムをどこに持っているのか分かりますか? –

0

このメソッドは、他のコードセグメントが実行されないように単にvoidを返します。それは完全に合法です。この方法では画像を取得していないため、画像を取得しているハードウェアとUIのみを準備しています。

0

return;は、機能を終了させます。

ライブラリを見たことがあります。 Acquire()は、ドライバが取得を実行するだけで、TransferPictures()が呼び出されてピクチャを取得するように見えます(その結果、ArrayListが返されるので、何かが返されます)。

1

Infactでは、Application.AddMessageFilter(this)メソッドを呼び出すことによってフォームにメッセージフィルタを設定しました。したがって、スキャナのイベントを聴く必要があり、TwainCommand.TransferReadyイベントが発生した場合は、TransferPictures()に電話して画像コレクションを取得します。

関連する問題