MFC ActiveXコントロールでイメージ表示用のコントロールを作成、
表示中のイメージデータへのポインタを取得するメソッドを追加しようと
思っていたのですが、メソッドの追加ウィザードからうまく追加できず
困っています。
具体的には、メソッドの引数にダブルポインタ(BYTE**)を設定するか、
戻り値にポインタ(BYTE*)を設定するかしたいのですが、
ウィザード上の「戻り値の型」や「パラメータの型」のリストに候補が
ないのです。
方法に問題があるのか、実現不可なのか回答を宜しくお願いします。
直接入力しちゃえばいいんじゃないでしょうか。
aetosさん、返信ありがとうございます。
関数の戻り値を(BYTE*)として直接入力を試みたら
メソッドは追加されたのですが、ビルドすると
「error C2065: 'VT_PUI1' : 定義されていない識別子です。」
というエラーが出力されてしまいます。
パラメータにダブルポインタを指定しようとすると、
「パラメータの型は、一覧からのバリアント互換型でなければなりません。」
となって入力を受け付けてくれないです。
どちらもウィザード上で設定した場合です。
自己解決しました。
目的のアドレスは、戻り値にULONGLONGを指定することで
変数としてですが取得出来ました。
VC++しか知らないためにActiveXのインターフェイスに
ダブルポインタも使えるものと思ってたのが間違いだった
と思います。
そうすると、ActiveXコントロールが保持している変数やメモリ
等のアドレスを得ること自体、考えとして間違っているので
しょうか?
同じメモリ空間にマップされている以上、取得することは問題
ないと思うのですが、、、
とりあえず解決したのでチェックを入れました。
ActiveX(COM)は昔ちょっとやっただけなので忘れたな。
ActiveXはVB,VBScript,JScriptなどでも使うものなので
バリアント型を使うべきだな。
まあ、自分用でどうでもいいっていうなら、
無理やり使っても俺にはどうでもいいことなので
どうぞポインタをULONGLONGで返しちゃいなさい。
C/C++プログラマから見ればポインタじゃないと
* 内部データじゃなくて毎回クローンコピーの受け渡し
* バリアント型はいろいろ面倒でプログラム書くのが苦痛
* 処理が遅い
やってられないよね。