(under construction...)
アドレス帳連携用 COM インターフェイス
Mailist からアドレス帳連携するために必要な API は、以下のとおり。
BOOL CPconDoc::AddrConnInit(long lHwnd)
機能: db アクセス用モジュール初期化
引数: lHwnd データ変更通知メッセージを送るウィンドウのハンドル (*1)
返り値: TRUE (成功)
FALSE (失敗)
*1 現在未使用
long CPconDoc::AddrConnOpenDB(long lDbid)
機能: アドレス帳 db をオープン
引数: オープンする db の ID
ただし -1 を指定した場合は起動対象(デフォルト)db
返り値: オープンした db の ID
失敗した場合は -1
BOOL CPconDoc::AddrConnCloseDB(long lDbid)
機能: 指定の db をクローズ
引数: lDbid dbID
返り値: TRUE (成功)
FALSE (失敗)
BOOL CPconDoc::AddrConnEditTip(long lDbid, long lTipid)
機能: 外部アプリで指定データの編集画面を開く
引数: lDbid dbID
lTipid tipID
返り値: TRUE (成功)
FALSE (失敗)
long CPconDoc::AddrConnGetDBType()
機能: この com が扱う db の種類を返す
引数: なし
返り値: db の種類を示す数値。
1 Mailist アドレス db(将来使う?)
2 PowerPIMM
BOOL CPconDoc::AddrConnReadNextTipData(LPCTSTR pszMapName)
機能: オープン中の db からアドレスデータを1件づつ順に読む
引数: pszMapName 1件のアドレスデータを返すためのファイルマッピングの名前
返り値: TRUE (成功)
FALSE (失敗 or 次のデータはなかった(最後まで読んだ))
#include "AdStruct.h"
BOOL CPconDoc::AddrConnReadNextTipData(LPCTSTR pszMapName)
{
BOOL fRet = FALSE;
HANDLE hMapAddr = CreateFileMapping((HANDLE)0xffffffff, NULL, PAGE_READWRITE, 0, sizeof(AddrStruct), pszMapName);
AddrStruct* lpMapAddr = (AddrStruct*)MapViewOfFile(hMapAddr, FILE_MAP_WRITE, 0, 0, sizeof(AddrStruct));
/*
ここで *lpMapAddr にデータをセット
*/
UnmapViewOfFile(hMapAddr);
CloseHandle(hMapAddr);
return fRet;
}
long AddrConnRegister(LPCTSTR pszName, LPCTSTR pszAdrO, LPCTSTR pszTopFolder);
機能: 外部 db に新規データを登録
引数: pszName 名前
pszAdr0 メールアドレス
pszTopFolder 最上位フォルダボックスのパス (*2)
返り値: 新規登録したデータの tipID
失敗した場合は -1
*2 Pcon ではデータベースの整合性を見るためのデータを残すために使用している。
long AddrConnGetDefaultDBid();
機能: 起動対象(デフォルト)db の ID を返す
引数: なし
返り値: 起動対象(デフォルト)db の ID
失敗した場合は -1
BOOL AddrConnFindDBid(LPCTSTR pszMapName, BOOL fFirst);
機能: アドレス帳 db を順にさがす
引数: pszMapName db の名前とパスを返すためのファイルマッピングの名前
fFirst TRUE のときははじめからさがす
返り値: みつかった db の ID
次がみつからない場合は -1
#include "AdStruct.h"
BOOL AddrConn::FindDBid(LPCTSTR pszMapName, BOOL fFirst)
{
long fRet = FALSE;
HANDLE hMapDbLs = CreateFileMapping((HANDLE)0xffffffff, NULL, PAGE_READWRITE, 0, sizeof(DbListStruct), pszMapName);
DbListStruct* lpMapDbLs = (DbListStruct*)MapViewOfFile(hMapDbLs, FILE_MAP_WRITE, 0, 0, sizeof(DbListStruct));
/*
ここで
*/
CloseHandle(hMapDbLs);
return fRet;
}
long AddrConnCreateDB(LPCTSTR pszPath);
機能: アドレス帳 db を新規に作成
引数: 環境設定ファイルが置かれているフォルダのパス (*3)
返り値: 新規作成した db の ID
失敗した場合は -1
*3 Pcon では、新規データベースをこの下に作成している。
long AddrConnCheckDB(LPCTSTR pszDbPath, LPCTSTR pszTopFolderPath, BOOL fMode);
機能: アドレス帳 db の整合性をチェック
引数: pszDbPath, //データベースのパス
pszTopFolderPath, //最上位フォルダのパス
fMode //FALSE: チェックのみ、TRUE: チェック&更新 (*4)
返り値: 異常がみつかった場合は db の ID
みつからない場合は -1
*4 Mailist では、起動時および環境切替え時に、この関数で db の整合性を
チェックしている。チェックのための情報は AddrConnRegister() と
AddrConnCheckDB() をとおるたびに更新されていくが、異常発見時に
Mailist はアドレス情報のクリア処理を先延ばしにできるようにしたため
「異常があった」という情報をそのまま残したいときがあるのでこのフラグが
ある。
BOOL AddrConnPutTip(long lDbid, long lTipid, LPCTSTR pszMapName)
機能: 指定したアドレスデータを書き換え。(lTipid = 0 の時は新規登録)
引数: lDbid dbID
lTipid tipID
pszMapName 1件のアドレスデータを渡す、および、返すためのファイルマッピングの名前
返り値: 成功した場合はTRUE
失敗した場合はFALSE
BOOL AddrConnGetTip(long lDbid, long lTipid, LPCTSTR pszMapName)
機能: 指定したアドレスデータを取得。
引数: lDbid dbID
lTipid tipID
pszMapName 1件のアドレスデータを渡す、および、返すためのファイルマッピングの名前
返り値: 成功した場合はTRUE
失敗した場合はFALSE
BOOL AddrConnDeleteTip(long lDbid, long lTipid, LPCTSTR pszMapName)
機能: 指定したアドレスデータを消去。
引数: lDbid dbID
lTipid tipID
pszMapName 1件のアドレスデータを渡す、および、返すためのファイルマッピングの名前
返り値: 成功した場合はTRUE
失敗した場合はFALSE
BOOL AddrConnEditTipV(long lDbid, LPCTSTR pszMapName)
機能: 外部アプリで指定(可変長TipID指定)したアドレスデータの編集画面を開く
引数: lDbid dbID
pszMapName 1件のアドレスデータを渡す、および、返すためのファイルマッピングの名前
返り値: 成功した場合はTRUE
失敗した場合はFALSE
BOOL AddrConnPutTipV(LPCTSTR pszMapName)
機能: 指定(可変長TipID指定)したアドレスデータを書き換え。(lTipid = 0 の時は新規登録)
引数: 1件のアドレスデータを渡す、および、返すためのファイルマッピングの名前
返り値: 成功した場合はTRUE
失敗した場合はFALSE
BOOL AddrConnGetTipV(LPCTSTR pszMapName)
機能: 指定(可変長TipID指定)したアドレスデータを取得。
引数: pszMapName 1件のアドレスデータを渡す、および、返すためのファイルマッピングの名前
返り値: 成功した場合はTRUE
失敗した場合はFALSE
BOOL AddrConnDeleteTipV(long lDbid, long lTipid, LPCTSTR pszMapName)
機能: 指定(可変長TipID指定)したアドレスデータを消去。
引数: pszMapName 1件のアドレスデータを渡す、および、返すためのファイルマッピングの名前
返り値: 成功した場合はTRUE
失敗した場合はFALSE
BEGIN_DISPATCH_MAP(CPconDoc, CDocument)
//{{AFX_DISPATCH_MAP(CPconDoc)
DISP_FUNCTION(CPconDoc, "AddrConnInit", AddrConnInit, VT_BOOL, VTS_I4)
DISP_FUNCTION(CPconDoc, "AddrConnOpenDB", AddrConnOpenDB, VT_I4, VTS_I4)
DISP_FUNCTION(CPconDoc, "AddrConnCloseDB", AddrConnCloseDB, VT_BOOL, VTS_I4)
DISP_FUNCTION(CPconDoc, "AddrConnEditTip", AddrConnEditTip, VT_BOOL, VTS_I4 VTS_I4)
DISP_FUNCTION(CPconDoc, "AddrConnGetDBType", AddrConnGetDBType, VT_I4, VTS_NONE)
DISP_FUNCTION(CPconDoc, "AddrConnReadNextTipData", AddrConnReadNextTipData, VT_BOOL, VTS_BSTR)
DISP_FUNCTION(CPconDoc, "AddrConnLockOpenDB", AddrConnLockOpenDB, VT_I4, VTS_I4)
DISP_FUNCTION(CPconDoc, "AddrConnLockCloseDB", AddrConnLockCloseDB, VT_BOOL, VTS_I4)
DISP_FUNCTION(CPconDoc, "AddrConnRegister", AddrConnRegister, VT_I4, VTS_BSTR VTS_BSTR VTS_BSTR)
DISP_FUNCTION(CPconDoc, "AddrConnGetDefaultBDid", AddrConnGetDefaultDBid, VT_I4, VTS_NONE)
DISP_FUNCTION(CPconDoc, "AddrConnFindDBid", AddrConnFindDBid, VT_BOOL, VTS_BSTR VTS_BOOL)
DISP_FUNCTION(CPconDoc, "AddrConnCreateDB", AddrConnCreateDB, VT_I4, VTS_BSTR)
DISP_FUNCTION(CPconDoc, "AddrConnCheckDB", AddrConnCheckDB, VT_I4, VTS_BSTR VTS_BSTR VTS_BOOL)
DISP_FUNCTION(CPconDoc, "AddrConnPutTip", AddrConnPutTip, VT_BOOL, VTS_I4 VTS_I4 VTS_BSTR)
DISP_FUNCTION(CPconDoc, "AddrConnGetTip", AddrConnGetTip, VT_BOOL, VTS_I4 VTS_I4 VTS_BSTR)
DISP_FUNCTION(CPconDoc, "AddrConnDeleteTip", AddrConnDeleteTip, VT_BOOL, VTS_I4 VTS_I4)
DISP_FUNCTION(CPconDoc, "AddrConnEditTipV", AddrConnEditTipV, VT_BOOL, VTS_I4 VTS_BSTR)
DISP_FUNCTION(CPconDoc, "AddrConnPutTipV", AddrConnPutTipV, VT_BOOL, VTS_BSTR)
DISP_FUNCTION(CPconDoc, "AddrConnGetTipV", AddrConnGetTipV, VT_BOOL, VTS_BSTR)
DISP_FUNCTION(CPconDoc, "AddrConnDeleteTipV", AddrConnDeleteTipV, VT_BOOL, VTS_BSTR)
//}}AFX_DISPATCH_MAP
END_DISPATCH_MAP()