###前提・実現したいこと
初心者です。C++で富士ゼロックスのドキュワークスでDocuWorks APIを
つかって直線アノテーションを張り付ける関数について
下記の関数の引数pInitialDataへの構造体のポンンタの渡し方を
教えていただけますか。
###発生している問題・エラーメッセージ
DocuWorks API(XDWAPI)仕様書に下記のように定義されています。
↓
2.1 XDW_AddAnnotation
機能
アノテーションを貼り付ける
形式
int XDW_AddAnnotation ( XDW_DOCUMENT_HANDLE handle, int nAnnotationType, int nPage, int nHorPos, int nVerPos, XDW_AA_INITIAL_DATA* pInitialData, XDW_ANNOTATION_HANDLE* phNewAnnotation, void* reserved);
パラメータ
・handle DocuWorksファイルのハンドル。
・nAnnotationType アノテーションの種類。次の値のいずれかが有効。
XDW_AID_STRAIGHTLINE 直線
・nPage アノテーションを貼るページを指定する。1から始まる。
・nHorPos アノテーションのx座標。単位は1/100mm。
・nVerPos アノテーションのy座標。単位は1/100mm。
・pInitialData 初期値情報。説明参照。
・phNewAnnotation 貼り付けられたアノテーションへのハンドルが返される。
・reserved 予約引数。NULLでなければならない。
これによるとpInitialDataは構造体XDW_AA_INITIAL_DATAへのポインタを渡す
仕様になっているようです。ところが説明には下記のようにあります。
pInitialDataの説明。
次のアノテーションを作成するときは、pInitialDataにその構造体へのポインタを渡さなければならない。
直線アノテーション XDW_AA_STRAIGHTLINE_INITIAL_DATA
構造体の定義は、次の通り。
struct XDW_AA_INITIAL_DATA {
・int nSize; 構造体のバイト数。
アノテーションの種類に応じて、次の値を設定しなければならな
い。
直線: sizeof(XDW_AA_STRAIGHTLINE_INITIAL_DATA)
・int nAnnotationType; アノテーションの種類。
直線: XDW_AID_STRAIGHTLINE
・int nReserved1; 予約メンバ。0でなければならない。
・int nReserved2; 予約メンバ。0でなければならない。
};
struct XDW_AA_STRAIGHTLINE_INITIAL_DATA {
XDW_AA_INITIAL_DATA common; 共通情報。
構造体のバイト数とアノテーションの種類を指定する。
int nHorVec; 直線アノテーションの始点から終点までのx座標上の移動量。
単位は1/100mm。
最小値: -240000(=-240cm)、最大値: 240000(=240cm)
int nVerVec; 直線アノテーションの始点から終点までのy座標上の移動量。
単位は1/100mm。
最小値: -240000(=-240cm)、最大値: 240000(=240cm)
};
これで説明の通りにpInitialDataに構造体XDW_AA_INITIAL_DATA でなく
構造体XDW_AA_STRAIGHTLINE_INITIAL_DATA のポインタを引数に
入力するとエラーとなってしまいます。
C++
1型"XDW_AA_STRAIGHTLINE_INITIAL_DATA *"の引数は型"XDW_AA_INITIAL_DATA*"のパラメータと互換性がありません。
###該当のソースコード
C++
1XDW_AA_INITIAL_DATA a; 2 a.nSize = sizeof(XDW_AA_STRAIGHTLINE_INITIAL_DATA); 3 a.nAnnotationType = XDW_AID_STRAIGHTLINE; 4 a.nReserved1 = 0; 5 a.nReserved2 = 0; 6 7 XDW_AA_STRAIGHTLINE_INITIAL_DATA b; 8 b.common = a; 9 b.nHorVec = 50000; 10 b.nVerVec = 50000; 11 XDW_ANNOTATION_HANDLE annoation; 12 13 api_result = XDW_AddAnnotation( 14 h, XDW_AID_STRAIGHTLINE, 1, 500, 500, &b, &annoation, NULL);; 15 if (api_result < 0) { 16 print_error(api_result); 17 18 }
###試したこと
仕様書通りに上記コードの構造体XDW_AA_INITIAL_DATA aのポインタを引数とすると
ビルドはできるのですが、関数が異常終了したときのエラーコードを返してきます。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/19 11:13