一括表示

WM_COPYDATA 投稿者:JA3CLM 

浜田さん、森さん。関ハムフェスタではご教授有難う御座いました。
何とか私のDigitalSoundCWからTurbo HamLogへリンクが出来ました。Visual Studio 2005のC++で書いたのを一部書き写します。
まず、文字変換のテーブル[94]の英語(大・小文字)、数字、記号を作りました。
BC[0] = 0x30; BF[0] = _T("0");

BC[1] = 0x31; BF[1] = _T("1");

BC[2] = 0x32; BF[2] = _T("2");

BC[3] = 0x33; BF[3] = _T("3");


BC[4] = 0x34; BF[4] = _T("4");

BC[5] = 0x35; BF[5] = _T("5");

BC[6] = 0x36; BF[6] = _T("6");

BC[7] = 0x37; BF[7] = _T("7");


BC[8] = 0x38; BF[8] = _T("8");

BC[9] = 0x39; BF[9] = _T("9");

BC[10] = 0x3a; BF[10] = _T(":");

BC[11] = 0x3b; BF[11] = _T(";");


BC[12] = 0x3c; BF[12] = _T("<");

BC[13] = 0x3d; BF[13] = _T("=");

BC[14] = 0x3e; BF[14] = _T(">");

BC[15] = 0x3f; BF[15] = _T("?");



BC[16] = 0x40; BF[16] = _T("@");

BC[17] = 0x41; BF[17] = _T("A");

BC[18] = 0x42; BF[18] = _T("B");

BC[19] = 0x43; BF[19] = _T("C");


コールを指定する時
CString Cbuff; // ユニコードの文字変数
char buffs[256];// ASCII用のバッファー
int i, j, len, ok;
int cmmd;
HWND hWnd1;
LRESULT hWnd2; ⇔ ここが違います
COPYDATASTRUCT cds;
CComBSTR
bstrTemp;

hWnd1 = ::FindWindowW(_T("TThwin"), NULL);
if (hWnd1 == 0)
{  AfxMessageBox(_T("HamLogを起動して下さい。"), MB_OK , NULL);
return;}

m_editHisCall.GetWindowTextW(Cbuff);
bstrTemp = Cbuff;
len = bstrTemp.Length();
if (len > 0)
{  for (j = 0; j < len; j++)
{
ok = 0;

for (i = 0; i <= 94; i++)
{
  if (BF[i] == Cbuff.Mid(j,1))
{

buffs[j] = BC[i];


ok++;

  }
}


if (ok == 0) return;
  }
  cmmd = 1;
  cmmd |= 0x10000;
  cmmd |= 0x20000;
  cds.dwData = cmmd;
  cds.cbData = len;
  cds.lpData = &buffs;
  hWnd2 = ::SendMessageW(hWnd1, WM_COPYDATA, (WPARAM)this->m_hWnd, (LPARAM)&cds);}

と書きました。RST CODEなど他の枠への転送も同様に旨く行きましたのでご報告いたします。無論、漢字には対応できていませんが必要ならハムログの入力画面に直接書き込めます。
なお、何処かに記載されているのかわかりませんが、推察でcmmd = 25を試したところ、DXのチェックボックスがONとなり、時間表示もUTCに変える事が出来ました。 Cmmd = 26にすると国内JST対応でした。
これで、重複チェックもバッチリです。 有難う御座いました。

2008/07/23(Wed) 21:53:09  [No.67]


Re: WM_COPYDATA 投稿者:JG1MOU浜田 

高木さん、関ハムでは私のとんだ勘違い(落語ミュージアムへの道です)
へのご指摘、有難うございました。
無駄な汗をかかずにすみました。
土地勘が無いというものは恐ろしいものです。hi

> hWnd1 = ::FindWindowW(_T("TThwin"), NULL);

これなんですが、タイマーイベントでこのルーチンを呼び出したらいかがでしょうか。
例えば、3秒に1回とか。
そうすれば、後からハムログを起動しても、リンクできます。

2008/07/27(Sun) 22:02:40  [No.68]


Re: WM_COPYDATA 投稿者:JA3CLM 

> タイマーイベントでこのルーチンを呼び出したらいかがでしょうか。
> 例えば、3秒に1回とか。
> そうすれば、後からハムログを起動しても、リンクできます。
浜田様
ご提案有難う御座います。 DSCWからリンク出来ていないのに呼ぼうとすると、Turbo HamLogを立ち上げを促すメッセージが出るようにしています。また、タイマールーチンを使っていますので、後からでもTurbo HamLogが立ち上がればリンクします。 DSCWユーザーの皆さんからも、便利になりましたとのメールが多く寄せられました。私も使っていますが、バツグンに使いやすくなりました。 MNY Tks!

2008/07/28(Mon) 10:57:45  [No.69]