0

TAPI 2.0 を使用する Windows Mobile 6 アプリケーションがあります。lineGetAddressID()電話APIの複数の呼び出しで使用されるアドレス識別子を取得するために必要ですが、機能させることができません.

私は無駄に次のことを試しました:

HLINE line; // valid handle from lineOpen();
DWORD addr_id = 0;
result = ::lineGetAddressID( line, &addr_id, LINEADDRESSMODE_DIALABLEADDR, L"1234", 5 );
result = ::lineGetAddressID( line, &addr_id, LINEADDRESSMODE_DIALABLEADDR, L"5551234", 8 );
result = ::lineGetAddressID( line, &addr_id, LINEADDRESSMODE_DIALABLEADDR, L"1115551234", 11 );
result = ::lineGetAddressID( line, &addr_id, LINEADDRESSMODE_DIALABLEADDR, L"11115551234", 12 );

それらはすべて LINEERR_INVALADDRESS を返します。誰かが私が間違っているかもしれないことを指摘できますか?

副次的な質問として、プログラムでアドレスを取得するにはどうすればよいですか? によって返される LINEADDRESSCAPS 構造体に表示されますが、これにlineGetAddressCaps()はアドレス識別子が必要です (これは から取得する必要があり、アドレスlineGetAddressID()が必要です...)。

注: アドレス ID として 0 を使用でき、おそらく機能することはわかっていますが、すべてのプラットフォームで機能するという保証はありません。これを「正しく」解決したいと思います。

ありがとう、ポールH

4

1 に答える 1

0

lineGetDevCapsLINEDEVCAPS 構造体のメンバーの 1 つを呼び出すdwNumAddressesと、 は回線デバイスに関連付けられたアドレス数のカウントになります。

TAPIは、アドレス識別子の値が次のように定義されていると述べています。

アドレス識別子の範囲は、0 から dwNumAddresses で示される値より 1 小さい値までです。

したがって、[0 .. (dwNumAddresses - 1)] の範囲内の各アドレス識別子の値を繰り返し処理しlineGetAddressCaps、有効なアドレス識別子を指定したときに呼び出すことができます。lineGetAddressIDこの場合、アドレス識別子は既知で有効であるため、使用する必要はありません。

これを行う場合、LINEADDRESSCAPS 構造体で指定されたアドレスのいずれかが、への呼び出しで使用されている文字列と一致しますlineGetAddressIDか? アプリケーションが ANSI ではなく Unicode を使用するように構成されていることに注意してください。

于 2010-04-18T07:28:31.750 に答える