概要
サンプルソースはCPXテスト用掲示板 (Sun Board)を巡回するCPXのソースです。
受信だけでなく投稿することも可能です。※現在投稿はできません。
※CPXテスト用掲示板 (Sun Board)はKENT-WEBのSunBoardをベースに、 CPXを作成しやすいようにカスタマイズしたもので、このCPXで他のSunBoardを巡回することはできません。
サンプルソースは処理の流れや各メソッドの使い方の概略を示す為のものであり、 バッファサイズのチェックやエラーチェック等が簡略化または省略されている部分もあります。 実際のコーディングではそれらは厳密にチェックしていただきますようお願いします。
C++用サンプルソースはC言語プログラマーにも理解しやすいよう、C言語ライクなものとなっています。
Delphi用サンプルソースもC言語ライクなソースとなっていますが、 CMNとCPXの間のやりとりがバッファのポインタ(アドレス)を使用する構造の為、 必要に応じてDelphiライクなメソッドやパラメータを使用できるラッピングメソッドを作成すると コーディングしやすいかと思います。
フォルダプロパティ[フォルダ属性]
ここでは「巡回対象」の入力枠、その右横の[選択...]ボタン、下にある「エクステンション情報」が表示されます。
これらはICpx::cpxGetExtInfoPropの設定に従って表示されます。
[選択...]ボタンを押すとダイアログボックスが表示され、[はい]を選択すると cpxGetTarget という文字列が設定されるサンプルです。
このダイアログボックスの処理はICpx::cpxGetTargetで実装されています。
「巡回対象」に入力された文字列は当サンプルでは巡回時に使用されません。
フォルダプロパティ[掲示板]
[編集...]ボタンを押すと「掲示板情報」のダイアログボックスが表示され、「掲示板ID」が自動設定されます。
この部分はICpx::cpxGetExtInfoPropの設定に従って表示されます。
その下に、巡回する掲示板に関する情報を設定する各種項目が表示されます。
ここではCPXが実装できる全てのタイプの項目が表示されます。
この部分はICpx::cpxGetBBSDetailItemの設定に従って表示されます。
黄色の右向き三角は値を入力できる項目です。
緑色の右向き三角は直接値を入力することができない項目です。
灰色の[...]ボタンはクリックするとダイアログボックスが表示され、[はい]を選択すると cpxGetBBSDetailText という文字列が設定されるサンプルです。
このダイアログボックスの処理はICpx::cpxGetBBSDetailTextで実装されています。
当サンプルでは「掲示板URL」以外の項目は巡回時には使用されません。
フォルダプロパティ[詳細]
ここではCPXが実装できる全てのタイプの項目が表示されます。
これはICpx::cpxGetFolderDetailItemにより設定されています。
各項目を自由にインデント表示させることができます。
当サンプルではここで入力した値は巡回時には使用されません。
発言のコンテキストメニュー
タイトルビュー上の発言で右クリックすると、「発言操作」の中に「機能1」と「機能2」の2つのメニューが追加されます。
これはICpx::cpxGetFuncMenuで実装されています。
ここで「機能1」や「機能2」を選択すると発言に機能マークが付き、巡回時にICpx::cpxExecFuncがコールされます。
当サンプルでは機能マークを付けて巡回しても何もしません。
巡回開始時の処理
ICpx::cpxPilotStartでは、正規表現ルーチンが使用可能かどうかをチェックしています。
ICpx::cpxBBSPilotStartでは、ICmnPilotのポインタと掲示板インデックスをクラスのメンバ変数に保存しています。
この2つの変数は巡回時に必要となる変数で、他のメソッドはこの変数を参照します。
またここではフォルダプロパティで設定されたURLや投稿文字コードなどの情報を取得しています。
受信処理
ICpx::cpxReceiveMesは主にページの受信のみ行なっています。
privateメソッドのMyCpx::_WriteBBSHeadで掲示板ヘッダの出力、MyCpx::_SplitMesで1ページ分の発言の解析とログファイルへの追加、 MyCpx::_SplitItemで各発言内の項目切り出しを行なっています。
投稿処理
ICpx::cpxSendMesで投稿処理を実装しています。
簡単なエラー処理も実装されています。