一括表示

こんにちは。
Win7 64bit + Visual Studio 2019 環境で C++ Windows デスクトップ アプリを作成中です。
HAMLOG が起動している状態で自作アプリから HAMLOG.hdb を読込もうとしています。
[設定2]-[QSOデータの共有オープン]のチェックはオフ、
HAMLOGW.EXE 5.35 (2021/12/26)、HAMLOG50.DLL (Dec 26 2021)です。

0. HAMLOG のメイン窓のみ表示した状態。データ件数は 2 件。
1. Hamlog50.dll を LoadLibrary して、GetProcAddress で利用する関数を準備。
 →GetThdllVersion() で DLL が読みこめていることを確認済み。
2. FindWindow で HAMLOG 本体の HWND を取得。
 →SetWindowText() でウィンドゥ タイトルの書き換えを確認済み。
3. WM_COPYDATA で dwData=27、cbData=0、lpData=0 を送信。
4. DLL 関数の dbf_open で HAMLOG.hdb を指定。
 →戻り値は SUCCESS、TDBFh.rcount は 2 である。
 →試しに手順 3. を省くとエラーになるので、手順 3. は動作しているっぽい
5. (ここで色々処理予定だが今は何もしていない)
6. DLL 関数の dbf_close を実行。
7. WM_COPYDATA で dwData=28、cbData=0、lpData=0 を送信。
 →データの表示修正ウィンドゥを表示しているとそのHWNDを返してくる

上のような処理順で試していますが、手順 7. の後で HAMLOG の動作がよくわらない状態になります。
a. HAMLOG は変化がないように見えますが、各レコードの各カラムをクリックすると空欄になる
b. レコードをダブルクリックすると「No.21 データ読み込みエラー (〜〜\HAMLOG.hdb)」

WM_WM_COPYDATA や各種関数の呼び出し前に何か必要な手順が抜けていたりするのでしょうか?
どうぞよろしくお願いいたします。

2021/12/31(Fri) 23:29:48  [No.979]


> 7. WM_COPYDATA で dwData=28、cbData=0、lpData=0 を送信。

dwData = 28 | 0x400000;
これで試してみてください。

自分でもよくわからなくなってきてますが、hQSLアプリではこのように
して、HAMLOGの共有機能を使わずにQSOデータを使用しています。

2022/01/01(Sat) 21:24:00  [No.980]


>> 7. WM_COPYDATA で dwData=28、cbData=0、lpData=0 を送信。
> dwData = 28 | 0x400000; これで試してみてください。

ご教授頂いた方法で期待通りの動作になりました。お忙しいところありがとうございました。
# 本年もよろしくお願いいたします

2022/01/02(Sun) 20:12:14  [No.981]


> >> 7. WM_COPYDATA で dwData=28、cbData=0、lpData=0 を送信。
> > dwData = 28 | 0x400000; これで試してみてください。
>
> ご教授頂いた方法で期待通りの動作になりました。お忙しいところありがとうございました。
> # 本年もよろしくお願いいたします

これでHAMLOGを終了させることなく、QSOデータの読み書きができます。
なお、キーとなるコールサインとコードだけは書き換えない方が無難です。
お楽しみください。

2022/01/03(Mon) 21:17:39  [No.982]